Existem versões do t-SNE para streaming de dados?

19

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.

Ger
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 em R: cran.r-project.org/web/packages/Rtsne/index.html
RUser4512 25/11/2015
Ei, obrigado! Fico feliz em votar em sua resposta se você a colocar na seção de respostas.
Tom
3
Veja aqui uma versão paramétrica implementada com um trabalho neural. lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf
eyaler

Respostas:

15

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:

O t-SNE precisa de um lote inteiro de imagens (ou de maneira geral, dados) para criar o espaço de recurso de baixa dimensão? Com o PCA, você pode criar um espaço de recurso de baixa dimensão em um lote de dados e, em seguida, projetar novos pontos de dados no mesmo espaço sem ter que "treinar novamente". Isso é verdade para o t-SNE?

Eu pergunto porque notei que o scikit-learn possui t-SNE como parte de sua classe múltipla, mas esse módulo não possui um método transform () como o PCA. Então, pelo menos no sklearn, parece que isso não é possível.

Minha pergunta se resume a isso. Como você aplicaria o t-SNE em uma situação de streaming ou online, na qual deseja atualizar continuamente a visualização com novas imagens? Presumivelmente, não se deseja aplicar o algoritmo em todo o lote para cada nova imagem.

UMA:

+ Evan Zamir Sim, isso é possível com o t-SNE, mas talvez não seja suportado imediatamente com implementações regulares do t-SNE. Normalmente, a localização de cada ponto é um parâmetro na otimização, mas você também pode criar um mapeamento de D alto> D baixo (por exemplo, rede neural) e backprop através dos locais. Então você acaba com a função de incorporação e pode projetar novos pontos. Portanto, nada impede isso em princípio, mas algumas implementações podem não oferecer suporte, pois é um caso de uso menos frequente.

thecity2
fonte
11

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:

  1. 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.

  2. 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.

  3. 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.

Stéphane Deny
fonte
2
Bem-vindo à comunidade. Auto-plágio não é legal. Refiro-me ao seu primeiro post aqui . Claro, podemos usar o mesmo raciocínio para várias respostas, potencialmente copiar e colar uma ou duas frases ou simplesmente vincular diretamente as respostas anteriores. No entanto, essas palavras não abaixam suas postagens para cópia literal das respostas anteriores com a primeira frase alterada. Reduz a qualidade do conteúdo do currículo e mostra um espírito esportivo escolar ruim.
usεr11852 diz Reinstate Monic
5
@ usεr11852 O problema foi criado porque o outro segmento é uma duplicata deste. Portanto, fechei o outro, juntei-o a este e apaguei a resposta supérflua. Em geral, Stéphane, sempre que você se sentir inspirado a postar exatamente a mesma resposta em dois tópicos, basta sinalizar um deles como duplicado para que possamos combiná-los.
whuber
2
@ usεr11852 OK, desculpe-me pela resposta duplicada, sou um novo colaborador e ainda não conheço as práticas recomendadas.
Stéphane Deny
1
@whuber Obrigado por combinar as perguntas e pelo alerta!
Stéphane Deny
1
Você parece ter perdido 2 votos positivos como resultado. Isso é lamentável. +1 :) Bem-vindo ao CV.
Ameba diz Reinstate Monica
7

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

TSNE aproximado e orientável pelo usuário para análise visual progressiva Nicola Pezzotti, Boudewijn PF Lelieveldt, Laurens van der Maaten, Thomas Höllt, Elmar Eisemann, Anna Vilanova

Resumo:

O Progressive Visual Analytics visa melhorar a interatividade nas técnicas de análise existentes por meio da visualização, bem como a interação com resultados intermediários. Um método chave para a análise de dados é a redução da dimensionalidade, por exemplo, para produzir aplicações 2D que podem ser visualizadas e analisadas com eficiência. A Incorporação Estocástica de Vizinho Distribuída t (SNNS) é uma técnica bem adequada para a visualização de vários dados de alta dimensão. O tSNE pode criar resultados intermediários significativos, mas sofre uma inicialização lenta que restringe sua aplicação no Progressive Visual Analytics. Introduzimos uma aproximação controlável de tSNE (A-tSNE), que negocia velocidade e precisão, para permitir a exploração interativa de dados. Oferecemos técnicas de visualização em tempo real, incluindo uma solução baseada em densidade e uma lente mágica para inspecionar o grau de aproximação. Com esse feedback, o usuário pode decidir sobre refinamentos locais e orientar o nível de aproximação durante a análise. Demonstramos nossa técnica com vários conjuntos de dados, em um cenário de pesquisa do mundo real e para a análise em tempo real de fluxos de alta dimensão para ilustrar sua eficácia na análise interativa de dados.

cvlad
fonte
Bem vindo ao site. Estamos tentando construir um repositório permanente de informações estatísticas de alta qualidade na forma de perguntas e respostas. Portanto, temos receio de respostas somente para links, devido ao linkrot. Você pode postar uma citação completa e um resumo das informações no link, caso elas desapareçam?
gung - Restabelece Monica
6

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

O(nregistro(n))O(n2)

RUser4512
fonte
1
Usei-o com 250K linhas densas de 1K - era realmente muito bom, mas está vinculado à memória.
Vladimir Chupakhin
2

A aproximação de Barnes-Hut agora é o método padrão no scikit-learn a partir da versão 0.17.0:

Por padrão, o algoritmo de cálculo de gradiente usa a aproximação de Barnes-Hut em execução no tempo O (NlogN). method = 'exato' será executado no algoritmo mais lento, mas exato, em O (N ^ 2). O algoritmo exato deve ser usado quando os erros do vizinho mais próximo precisam ser melhores que 3%. No entanto, o método exato não pode ser escalado para milhões de exemplos. Novo na versão 0.17: Método de otimização aproximado via Barnes-Hut.

thecity2
fonte
Isso não aborda a questão. BH, embora mais rápido, não suporta streaming. Talvez você queira que isso seja um comentário sobre esta resposta .
merv