Neighbor Embedding: 通过非线性的方法降维,根据在原先空间中数据点与点之间的关系来降维,也叫做Manifold Learning
流形学习(Manifold Learning)
Manifold:高维空间中的低维空间
在欧式空间里面,距离较小的适应,但距离一旦增大就不适应了,如下图:在比较近的点(蓝色)我们可以得到正确结果,但在比较远的点(红色和黄色),欧式空间就会认为红色更近,但从Manifold看来却是黄色更近
所以用Maniflod Learning去做降维,再去计算就会得到好的结果
方法
1. Locally Liner Embedding(LLE)
xi是空间一点,xj是他的临近点,他们之间有关系wij,xi通过wij来表示xj
我们用过最小化这个式子来求出wij
然后我们保持wij不变,找一个zi,就可以得到一个zj,就达到降维的目的。
这个图告诉我们k的值要选对,并不是所有点都有关系,不能过大也不能过小,在这个S的降维中k=8,k=12效果都挺好的
2.Laplacian Eigenmaps
在空间中的两个点的距离关系不能单单只看距离,还要看它们之间有没有high density的关系,所以下面的左图中两个点距离不是按红色虚线,而是按蓝色线进行。
把数据看成果然graph,然后根据graph去降维,首先就是要找graph,半监督已经讲这个L后面会加上一个相当于正则项的S(表示i,j有多相近),用在无监督中,我们已经知道了wij,所以要最小化S
只要将所有点投影到一个点,S就是0,所以对z做一些限制,比如降至z维后,这些点要将z维空间填满。
前面两种方法只能把相近的点归集在一起,但远的点就不能做处理了。
3.t-SNE
t-SNE先定义一个概率分子是i,j的相似度,分母是i跟所有点相似度的和,降维前和降维后的尺度可能不一样,因此进行归一化都转换为几率后规模(scale)就统一了。希望能找到z使得两个分布(xi对于其他点的概率分布和zi 对于其他点的概率分布)越接近越好。
t-SNE –Similarity Measure
如果有很多数据点,t-SNE需要逐个点对其他点的进行运算,similarity运算量较大,因此,一般开始会进行降维。
另外,如果有新的数据点加入,不能直接利用t-SNE进行预测,而是需要重新跑一边所有的数据。因此,t-SNE通常用于visualization,显示高维空间的数据在二维空间上的关系。
降维讲similarity计算使用的式子是:
这里为什么用exp有说过,exp掉得快,距离远的关系就弱。
t-SNE用的是:
做了t-SNE后如果相同的会比较近,而不同的会差比较大(拉大距离)
直接看个例子: