使用t-SNE可视化高维数据

 

定义

t-SNE,全称指的是t-distributed Stochastic Neighbor Embedding,t-SNE(TSNE)将数据点之间的相似度转换为概率。原始空间中的相似度由高斯联合概率表示,嵌入空间的相似度由“随机t分布”表示。

虽然Isomap,LLE和variants等数据降维和可视化方法,更适合展开单个连续的低维的manifold。但如果要准确的可视化样本间的相似度关系,t-SNE表现更好。因为t-SNE主要是关注数据的局部结构。

t-SNE是从SNE演化来的,他们都采用了将空间中的距离转换为概率的方式来表示点与点之间的相似度,然后求高维空间和低维空间的概率分布的KL Divergence作为两个分布的距离,希望最小化这个距离函数。SNE中对于高维和低维空间都使用高斯分布来建模,但是会造成“拥挤问题”,也就是最后低维空间中的数据点会聚集在一起。所以t-SNE使用了t分布来定义低维空间中点的相似性。具体的原理在Laurens van der Maaten的视频讲解里讲的特别清楚,可以花半个多小时的时间看一下。另外,这篇中文博文讲的也不错, 还给出了手工实现的代码,可以学习一个。

优化 t-SNE

t-SNE的主要目的是高维数据的可视化。因此,当数据嵌入二维或三维时,效果最好。有时候优化KL散度可能有点棘手。有五个参数可以控制t-SNE的优化,即会影响最后的可视化质量:

  1. perplexity困惑度
  2. early exaggeration factor前期放大系数
  3. learning rate学习率
  4. maximum number of iterations最大迭代次数
  5. angle角度

注意事项

  • 数据集在所有特征维度上的尺度应该相同
\[f(x) = \sum_{i=1}^{n}{p(x)}\]