Redução de dimensionalidade (nao linear)

Jacques Wainer

Redução de dimensionalidade não linear

1) MDS

multidimensional scaling - linear

converte grafos com distancia para pontos no espaço

distancia entre os pontos no espaço é aproximadamente a distancia dos vertices correspondentes no grafo

stress(x_{1},\ldots x_n) = \sum_{i,j} (d_{ij}-||x_i - x_j||)^2

normalmente os pontos estão em 2 dimensões

é usado como uma forma de visualizar grafos

https://en.wikipedia.org/wiki/Multidimensional_scaling

2) ISOMAP

nao linear

https://medium.com/data-science-in-your-pocket/dimension-reduction-using-isomap-72ead0411dec

3) T-SNE

usado normalmente para visualização

https://www.youtube.com/watch?v=NEaUSP4YerM

4) Outras reduções nao lineares

https://scikit-learn.org/stable/modules/classes.html#module-sklearn.manifold

5) auto encoder

Rede neural que começa larga, vai diminuindo a largura até o minimo, e volta a crescer

https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798

Aprende a repetir os dados - autoencoder tradicional

  1. dado de entrada = dado de saída

já que diminuimos o número de neuronios na camada do meio, essa representação reduzida deve aprender a reproduzir os dados originais

é uma redução de dimensionalidade (não linear dado que neurônios computam funções não lineares).

Denoising autoencoder

Dado de entrada + ruido

nesta versão, a rede aprende a não só reproduzir o dado usando a representação mais estreita, mas tambem aprende a “eliminar ruidos”.

A rede não sobe o que é ruido introduzido e ruido “normal” e assim esperamos que aprenda a eliminar variações nao importantes nos dados.

Variational auto encoder

ideia: os valores na camada final devem ter valores entre -1 e 1

https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73

6) Self Supervised Learning (SSL) ou embeddings

Word2vec

Word2vec - familia de algoritmos para gerar uma redução de dimensionalidade de palavras

Vector space model representation para palavras e documentos

Contexto de tamanho k em volta de uma palavra

Redes neurais parecidas com autoencoders, mas ou a entrada ou a saida é são multiplas palavras

CBOW

entrada: multiplas palavras do contexto menos a palavra central

saída: precisa gerar a palavra central

https://wiki.pathmind.com/word2vec

Skip gram

entrada: a palavra central é a entrada e

saída: precisa gerar as multiplas palavras do contexto

Exemplos negativos

é preciso treinar a rede em exemplos negativos

o problema passa a ser: dado 2 palavras (w_0) e outra - preveja a probabilidade da outra estar no contexto de w_0

assim exemplos negativos sao exemplos onde a probabilidade é 0.

veja em https://jalammar.github.io/illustrated-word2vec/

Praticalidades

Relações semanticas

https://jalammar.github.io/illustrated-word2vec/

Glove

sSSL nao precisa de redes neurais (e a não linearidade que ela traz).

GloVe monta uma matriz quadrada de palavras x palavras (que captura frequencias do contexto)

Fatora essa matriz M = W H onde W é a tabela das plaavras para as nova representação.

https://www.youtube.com/playlist?list=PLM8wYQRetTxCCURc1zaoxo9pTsoov3ipY

graph embeddings

SSL pode ser (obviamente) extendido para outras coisas que tem sequencias (tipo palavras): RNA, visao??

Grafos: deepwalk

cada contexto é um caminho aleátorio no grafo de tamanho fixo!!!

https://www.youtube.com/watch?v=oQPCxwmBiWo