Manifold Learning(流形学习)
流形学习(manifold learning)是机器学习、模式识别中的一种方法,在维数约简方面具有广泛的应用。它的主要思想是将高维的数据映射到低维,使该低维的数据能够反映原高维数据的某些本质结构特征。流形学习的前提是有一种假设,即某些高维数据,实际是一种低维的流形结构嵌入在高维空间中。流形学习的目的是将其映射回低维空间中,揭示其本质。
因为只有在同一维度中,欧氏距离才具有比较好的比较的意义,在上面这样的高维空间中用欧式距离并不能将不同的点进行很好的区别。在流形学习中认为上面这种情况实际上是将高维的数据硬塞进了一个低维的空间,所以这个时候我们应该将这个高维数据摊平,以便于后面的聚类或者接下来的有监督学习。
对高维数据进行降维的方法
1、局部线性嵌入(Locally Linear Embedding)
首先对于某一个数据点
x
i
x^i
xi 选择它附近的若干个点
x
j
x^j
xj,用
w
i
j
w_{ij}
wij 代表
x
i
x^i
xi 和
x
j
x^j
xj之间的关系,通过最小化下面的式子获得对应的权重
对于某一个数据点
x
i
x^i
xi 认为他可以通过他周围的所有点的线性组合进行标识,另所有的点它们的线性表示均与实际的点的距离最小,得到点之间的权重
w
i
j
w_{ij}
wij 。然后用得到的权重
w
i
j
w_{ij}
wij 进行降维。
在找到了
w
i
j
w_{ij}
wij 之后需要,固定
w
i
j
w_{ij}
wij ,通过上式找到对应的
z
j
z^j
zj 得到降维后的点。
其次,在这里对于整个降维过程并没有一个显式的表达,而且,在这里领域的点选择几个也是一个需要通过实验才能得到的一个超参数。
当选择邻域的点数过少时,降维的效果并不好,可能因为无法表达点之间的关系;当邻域的点数过多时降维效果也不好,主要是因为这个方法的假设是基于局部线性的假设,当选择的邻域过大时,很有可能不满足局部线性的假设。
2、拉普拉斯特征映射(Laplacian Eigenmaps)
这是一种基于图的方法,与之前无监督学习中的平滑性假设比较像。首先根据数据点之间的相似性建立一个图,比如说相似性大于某一个值就连接在一起,小于某个值就不连接。
这里使用有标签的数据和无标签的数据,其中无标签的数据的那一项更像是一个正则项,它刻画了标签到底有多平滑。将它应用到我们这里
S
=
1
2
∑
w
i
,
j
(
z
i
−
z
j
)
2
S=\frac{1}{2}\sum{w_{i,j}}(z^i-z^j)^2
S=21∑wi,j(zi−zj)2
其中,我们还需要将所有的
z
z
z 都集中在同一个点,就可以达到最小值,所以还需要对这个等式添加约束
3、t分布随机邻居嵌入(T-distributed Stochastic Neighbor Embedding)
上面的两种方法确实可以对高维的非线性数据进行降维,但是它们只强调了要将相似的数据放在一起,并没有强调要将不相关的数据之间彼此分开,所以常常会出现如下的现象
相似的数据会集中,但不同的数据也会聚在一堆
针对这个问题,我们可以应用 t-SNE 来解决。
具体做法是下面图片表示的:
t-SNE similarity 的这种选择,从图中可以看出,使较远的数据点距离被拉的更大。
可视化后的效果