修订版

PCA
今天我们讨论高维数据的可视化,在平时接触到各种图表,例如散点图和柱状图仅能表示一两个变量间的关系。
希望的是存在高维空间的向量映射到低维空间中,而且映射后的低纬向量不失去数据结构的特征。这个过程类似将一个高纬空间向量嵌入到低纬空间的过程。也是就是降维过程,大家可能比较熟悉就是 PCA 模型就是一种降维的算法。

将一张尺寸为 图片,这样图片 784 维空间的图片,每一个像素表示一个维度。可以理解为 维度转换为 维的数据特征,将数据 PCA 投影一个低维子空间,使得方差最大化。其实每张图在 维空间内一个点,其实这些点应该是位于高维空间的流形上,也就是说我们在高维空间中任意一点,我么绘制后应该就是噪音。这说明 PCA 降维后丢失了每一个点和其周围邻近点的距离上相对关系。
SNE(Stochastic Neighbor Embedding)
与 PCA 相比,在 SNE 中,数据在映射到低维空间后还保持高维空间中的其与最近点的距离关系。SNE 将一对点间欧式距离转换为密度。
在高维空间中,我们推测数据点间相似性。
这是高维空间嵌入到低纬空间后的的映射分布

今天我们将讨论如何使用 t-SNE 将上图分布在二维空间数据转换为下图一维空间中

这里我们用简单例子来演示 t-SNE 如何实现降维的,以及其背后的算法。如何我们将数据投影到任意一个坐标轴,因为丢失某个维度信息,很难将其在投影后的坐标上将这些原来属于不同簇点分清

t-SNE所做的是找到一种将数据投影到低维空间(在本例中是 1 维数字线)的方法,以便在高维空间(在本例中是 2 维散点图)中保留其聚类的信息。好这就是 t-SNE 要做的事情。有了目标接下来我们就一步一步实现目标
所有先我们将这些点随机顺序地分布到一个线上

接下拉,t-SNE 开始每一次将这些点移动一个很小距离直到他们完成分类,这样说起来不太具体,究竟t-SNE 是怎么移动的呢,不急我们这里来具体演示,我们先看第一个蓝色点

蓝色点移动方向是在原来 2D 图中距离其近点方向靠拢。而其他不属于同一簇的点会被推开。
在每一步中,直线上的一个点被吸引到散点图(2 维空间)中距离他近的点上,并被距离他远的点所排斥,通过不断迭代最终就可以得到

我们现在只是简单介绍 t-SNE 的降维过程,现在让我们深入了解 t-SNE 是如何实现上面的降维过程。
第一步
找到散点图中所有点的相似性,在下图我们看看绿色点与其他点之间的关系。


然后在以绿色点为中心的正态分布曲线(这里画的太好,大家了解就好)上绘制距离,然后如下图,从这个蓝色点引一条到距离的线,这个线就是表示 unscaled similarity (无缩放相似性)


之所以用正态分布,这样做好处是远处的点具有较低的相似性值,而距离近点具有较高的相似值

通过测量点之间距离来得到他们到绿色点 unscaled similarity 得分

现在我们在原有点上添加密度为其他簇一半的簇的,簇内点间距离比较松散。
正态曲线的宽度取决于感关注点附近数据的密度

这里我们不难看出因为绿色点簇的密度是蓝色点簇密度的一半,所以蓝色点的正态分布曲线的宽度也是绿色点曲线宽度的一半。然后缩放相似性得分将使两个集群的相似性得分相同

这个正态分布曲线具有偏差为 1,

图上显示这些点的 unscaled similarity
对于下图虽然有不同偏差但是计算出得分缩放分数却是相同的。

这表明相对紧密的簇的缩放相似性得分与相对比较松散簇的相似性得分相同。实际情况稍微复杂一点,但基本思想是不变的。t-SNE有一个等于预期密度的“困惑”参数,这个参数起作用了,从而解决不同密度簇具有相同相似性的问题。
通过计算某一点到散点图其他点距离来设置这些点相对于某个的相似性分数。因为基于其周围点的密度不同而得到不同宽度正态分布曲线。所以t-SNE 是通过平均两个点之间相似度来衡量他们之间距离,为什么是两个方向,因为选择不同点作为研究对象就可以得到不同相似度。最后我们会得到矩阵,