Meu entendimento do t-SNE e da aproximação de Barnes-Hut é que todos os pontos de dados são necessários para que todas as interações de força possam ser calculadas ao mesmo tempo e que cada ponto possa ser ajustado no mapa 2d (ou menor dimensão).
Existem versões do t-sne que podem lidar eficientemente com dados de streaming? Portanto, se minhas observações chegarem uma de cada vez, ela encontrará a melhor localização no mapa 2D para colocar a nova observação ou atualizará continuamente todos os pontos no mapa 2D para dar conta da nova observação.
Isso faria sentido ou vai contra a configuração do t-sne.
Respostas:
Eu tinha exatamente a mesma pergunta e a publiquei em um vídeo do YouTube de uma palestra sobre CS231n proferida por Andrej Karpathy há algumas semanas. Aqui está a pergunta que eu postei, seguida pela resposta de Andrej:
https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx
Q:
UMA:
fonte
Ao lidar com dados de streaming, talvez você não queira / precise incorporar todos os pontos do histórico em um único mapa t-SNE. Como alternativa, você pode executar uma incorporação online seguindo estas etapas simples:
escolha uma janela de tempo com duração T, tempo suficiente para que cada padrão de interesse apareça pelo menos duas vezes na duração da janela.
role a janela enquanto os dados entram, com um intervalo de tempo dt muito menor que T. Para cada posição da janela, calcule uma incorporação t-SNE dos pontos de dados na janela de tempo.
semeie cada incorporação com o resultado da anterior. No t-SNE, é necessário escolher as coordenadas iniciais dos pontos de dados no espaço de baixa dimensão. No nosso caso, como escolhemos dt muito menor que T, duas incorporações sucessivas compartilham a maioria de seus pontos de dados. Para todos os pontos de dados compartilhados, combine suas coordenadas iniciais na incorporação atual com as coordenadas finais na incorporação anterior . Esta etapa garantirá que padrões semelhantes tenham uma representação consistente em sucessivas incorporações. (na implementação do sklearn em python, o parâmetro seed é "init". Por padrão, a implementação do sklearn define a posição inicial dos pontos aleatoriamente)
Nota 1: É importante que os padrões de interesse apareçam pelo menos uma vez em uma determinada janela de tempo, para que a memória da representação não se perca à medida que a janela desliza pelo conjunto de dados. De fato, o t-SNE normalmente não converge para uma solução única, mas apenas para um mínimo local; portanto, se a memória for perdida, um padrão semelhante poderá ser representado de maneiras muito diferentes em duas instâncias de uma incorporação.
Nota 2: Esse método é particularmente relevante ao lidar com séries temporais não estacionárias, nas quais se deseja rastrear padrões que evoluem lentamente ao longo do tempo. De fato, cada incorporação é aqui especificamente ajustada à pequena janela de tempo em que é calculada, garantindo que captura a estrutura local local da melhor maneira possível (ao contrário de uma incorporação completa de todo o conjunto de dados não estacionário).
Nota 3: Nesse método, as incorporações sucessivas não podem ser paralelizadas, porque é necessário o resultado da incorporação anterior para propagar a próxima. No entanto, como a semente (ou seja, as coordenadas iniciais dos pontos) é bem escolhida para a maioria dos pontos (todos os pontos compartilhados entre incorporações sucessivas), uma incorporação normalmente converge muito rapidamente, em apenas algumas iterações.
Para um exemplo de aplicação deste método a séries temporais não estacionárias, consulte este artigo ( ICLR 2016, Aprendendo representações estáveis em um mundo em mudança com o t-SNE on-line: prova de conceito no pássaro canoro ), onde foi aplicado com sucesso rastrear o surgimento de sílabas no desenvolvimento do pássaro canoro.
fonte
Existe uma variante publicada recentemente, chamada A-tSNE, que suporta adicionar dinamicamente novos dados e refinar clusters com base em áreas de interesse ou por entrada do usuário. O artigo abaixo apresenta alguns bons exemplos disso:
Citação: arXiv: 1512.01655
fonte
A aproximação de Barnes-Hut torna o t-SNE altamente escalável (pelo menos, você pode usá-lo com 100.000 linhas, tentei). Você pode chamá-lo de R: Rtsne
fonte
A aproximação de Barnes-Hut agora é o método padrão no scikit-learn a partir da versão 0.17.0:
fonte