# T-distributed stochastic neighbor embedding

t-distributed stochastic neighbor embedding (t-SNE) è un algoritmo di riduzione della dimensionalità sviluppato da Geoffrey Hinton e Laurens van der Maaten, ampiamente utilizzato come strumento di apprendimento automatico in molti ambiti di ricerca. È una tecnica di riduzione della dimensionalità non lineare che si presta particolarmente all'embedding di dataset ad alta dimensionalità in uno spazio a due o tre dimensioni, nel quale possono essere visualizzati tramite un grafico di dispersione. L'algoritmo modella i punti in modo che oggetti vicini nello spazio originale risultino vicini nello spazio a dimensionalità ridotta, e oggetti lontani risultino lontani, cercando di preservare la struttura locale.
L'algoritmo si articola in due fasi principali. Nella prima fase viene costruita una distribuzione di probabilità che ad ogni coppia di punti nello spazio originale ad alta dimensionalità associa un valore di probabilità elevato se i due punti sono simili, basso se sono dissimili. Quindi viene definita una seconda distribuzione di probabilità analoga, nello spazio a dimensione ridotta. L'algoritmo quindi minimizza la divergenza di Kullback-Leibler delle due distribuzioni tramite discesa del gradiente, riorganizzando i punti nello spazio a dimensione ridotta.

## Algoritmo

Dato un insieme di $N$ oggetti $\mathbf {x} _{1},\dots ,\mathbf {x} _{N}$ in uno spazio ad alta dimensionalità, t-SNE costruisce una distribuzione di probabilità $p_{ij}$, simmetrica nelle due variabili e proporzionale alla similarità tra i punti $\mathbf {x} _{i}$ e $\mathbf {x} _{j}$, definita come:
    $p_{ij}={\frac {p_{j\mid i}+p_{i\mid j}}{2N}}$
dove
    $p_{j\mid i}={\frac {\exp(-\lVert \mathbf {x} _{i}-\mathbf {x} _{j}\rVert ^{2}/2\sigma _{i}^{2})}{\sum _{k\neq i}\exp(-\lVert \mathbf {x} _{i}-\mathbf {x} _{k}\rVert ^{2}/2\sigma _{i}^{2})}},$
L'ampiezza delle gaussiane $\sigma _{i}$ è scelta in maniera tale che la perplessità della distribuzione condizionale uguagli un valore di perplessità fornito come iperparametro dell'algoritmo. In questo modo, l'ampiezza si adatta alla densità dei punti, con valori di $\sigma _{i}$ minori in aree ad alta densità.
t-SNE cerca di costruire una mappa $d$-dimensionale $\mathbf {y} _{1},\dots ,\mathbf {y} _{N}$ (con $\mathbf {y} _{i}\in \mathbb {R} ^{d}$) i cui punti riflettano il meglio possibile la similarità $p_{ij}$ nello spazio di partenza. Allo scopo, la similarità $q_{ij}$ tra due punti $\mathbf {y} _{i}$ e $\mathbf {y} _{j}$ nello spazio a dimensionalità ridotta viene definita come:
    $q_{ij}={\frac {(1+\lVert \mathbf {y} _{i}-\mathbf {y} _{j}\rVert ^{2})^{-1}}{\sum _{k\neq m}(1+\lVert \mathbf {y} _{k}-\mathbf {y} _{m}\rVert ^{2})^{-1}}}$
La differenza principale è l'uso nello spazio a dimensionalità ridotta di una distribuzione t di Student con un grado di libertà al posto della gaussiana, le cui code pesanti consentono di modellare meglio la dissimilarità tra oggetti distanti. La posizione $\mathbf {y} _{i}$ dei punti nello spazio a dimensione ridotta è quindi calcolata minimizzando tramite discesa del gradiente la divergenza di Kullback-Leibler della distribuzione $Q$ rispetto a $P$:
    $KL(P||Q)=\sum _{i\neq j}p_{ij}\log {\frac {p_{ij}}{q_{ij}}}$
L'uso della divergenza di Kullback-Leibler come funzione obiettivo consente di avere penalità elevate se punti vicini nello spazio originale ($p_{ij}$ elevato) vengono considerati lontani nello spazio a dimensionalità ridotta ($q_{ij}$ piccolo), mentre il viceversa ha un'influenza minore, tendendo quindi a preservare la struttura locale della distribuzione dei punti. Il risultato è una mappa a bassa dimensionalità che riflette le similarità tra i punti nello spazio ad alta dimensionalità.