t-distributed stochastic neighbor embedding (t-SNE) is a statistical method for visualizing high-dimensional data by giving each datapoint a location in a two or three-dimensional map. It is based on Stochastic Neighbor Embedding originally developed by Sam Roweis and Geoffrey Hinton, where Laurens van der Maaten proposed the t-distributed variant. It is a nonlinear dimensionality reduction technique for embedding high-dimensional data for visualization in a low-dimensional space of two or three dimensions. Specifically, it models each high-dimensional object by a two- or three-dimensional point in such a way that similar objects are modeled by nearby points and dissimilar objects are modeled by distant points with high probability.

The t-SNE algorithm comprises two main stages. First, t-SNE constructs a probability distribution over pairs of high-dimensional objects in such a way that similar objects are assigned a higher probability while dissimilar points are assigned a lower probability. Second, t-SNE defines a similar probability distribution over the points in the low-dimensional map, and it minimizes the Kullback–Leibler divergence (KL divergence) between the two distributions with respect to the locations of the points in the map. While the original algorithm uses the Euclidean distance between objects as the base of its similarity metric, this can be changed as appropriate. A Riemannian variant is UMAP.

t-SNE has been used for visualization in a wide range of applications, including genomics, computer security research, natural language processing, music analysis, cancer research, bioinformatics, geological domain interpretation, and biomedical signal processing.

While t-SNE plots often seem to display clusters, the visual clusters can be influenced strongly by the chosen parameterization and therefore a good understanding of the parameters for t-SNE is necessary. Such "clusters" can be shown to even appear in non-clustered data, and thus may be false findings. Interactive exploration may thus be necessary to choose parameters and validate results. It has been demonstrated that t-SNE is often able to recover well-separated clusters, and with special parameter choices, approximates a simple form of spectral clustering.

For a data set with n elements, t-SNE runs in  time and requires  space.

Details 
Given a set of  high-dimensional objects , t-SNE first computes probabilities  that are proportional to the similarity of objects  and , as follows. 

For , define 
 
and set . 
Note that  for all . 

As Van der Maaten and Hinton explained:  "The similarity of datapoint  to datapoint  is the conditional probability, , that  would pick  as its neighbor if neighbors were picked in proportion to their probability density under a Gaussian centered at ."

Now define 
 

This is motivated because   and    from the N samples are estimated as 1/N, so the conditional probability  can be written as     and      .  Since , you can obtain previous formula.

Also note that   and .  

The bandwidth of the Gaussian kernels  is set in such a way that the entropy of the conditional distribution equals a predefined entropy using the bisection method. As a result, the bandwidth is adapted to the density of the data: smaller values of  are used in denser parts of the data space.

Since the Gaussian kernel uses the Euclidean distance , it is affected by the curse of dimensionality, and in high dimensional data when distances lose the ability to discriminate, the  become too similar (asymptotically, they would converge to a constant). It has been proposed to adjust the distances with a power transform, based on the intrinsic dimension of each point, to alleviate this.

t-SNE aims to learn a -dimensional map  (with  and  typically chosen as 2 or 3) that reflects the similarities   as well as possible. To this end, it measures similarities  between two points in the map  and , using a very similar approach. 
Specifically, for , define  as

 

and set . 
Herein a heavy-tailed Student t-distribution (with one-degree of freedom, which is the same as a Cauchy distribution) is used to measure similarities between low-dimensional points in order to allow dissimilar objects to be modeled far apart in the map. 

The locations of the points  in the map are determined by minimizing the (non-symmetric) Kullback–Leibler divergence of the distribution  from the distribution , that is:

 

The minimization of the Kullback–Leibler divergence with respect to the points  is performed using gradient descent. 
The result of this optimization is a map that reflects the similarities between the high-dimensional inputs.

Software 
 The R package Rtsne implements t-SNE in R.
 ELKI contains tSNE, also with Barnes-Hut approximation
 scikit-learn, a popular machine learning library in Python implements t-SNE with both exact solutions and the Barnes-Hut approximation.
 Tensorboard, the visualization kit associated with TensorFlow, also implements t-SNE (online version)

References

External links 
 Visualizing Data Using t-SNE, Google Tech Talk about t-SNE
 Implementations of t-SNE in various languages, A link collection maintained by Laurens van der Maaten

Machine learning algorithms
Dimension reduction