之前在PCA中介绍了线性降维的方法,今天讲述neighbor embedding,即非线性降维的方法。降维凭借的是data point 和data point之间的关系,在降维前的空间中每一个点和它的邻居之间的关系来做降维,也叫做manifold learning。
Manifold Learning
我们要做的是非线性的降维,data是分布在低维空间里面,只是被扭曲到了高维空间。 比如地球的表面是一个二维平面,但是被塞到一个三维空间中。 Manifold就是把S型摊平,将高维空间内的低维数据展开,这样才能计算点对点的距离。
Locally Linear Embedding (LLE)
从原来的分布中找一点xi,然后找它的neighbour xj,计算它们之间的关系wij。把xi,xj 降维成zi,zj 之后要保证它们之间的wij 不变。李老师用白居易《长恨歌》作比,浪漫!
LLE没有明确的function做降维。 LLE的好处是,就算不知道xi,xj 只知道wij ,也可以用LLE。 要好好调neighbour的个数,刚刚好才会得到好的结果。点之间的距离关系保持不变需要点之间够近,所以k太大不行,会考虑一些太远的点。
Laplacian Eigenmaps
两个点之间的距离能不能用欧氏距离还衡量,要看两点之间有没有高密度区域的链接,可以建立一个图,用图中的距离来表示。 回顾半监督学习:红框里那项与labelled data无关,它利用unlabelled data考虑得到的label是否smooth,作用类似于正则项。
同样的道理可以用在无监督学习。但是最小化S会有问题,以为只要让zi=zj 就好了,这显然不合理。之所以在半监督学习时没有这个问题,是因为半监督学习的损失函数还有一项从标注数据而来,如果让所有标签都相等则那一项会很大。 所以要加一个约束:设z是M维的,则z1,z2,...,zN 张成RM 空间。 这样解出z。z就是graph laplacion L 的eigenvector,对应比较小的eigenvalue。 先找出z再用k-means做聚类,叫Spectral clustering.
T-distributed Stochastic Neighbor Embedding (t-SNE)
前面方法只假设相近的点接近,未假设不相近的点要分开。相近的点离得很近,但不相近的点也聚集在一起,如下图。
t-SNE先分别计算原空间、新空间中所有点对的相似度再归一化。归一化是必要的,为了防止两个空间中距离的scale不同。 然后最小化二者之间的KL距离,代入公式用GD(gradient descent)即可。
t-SNE需要一堆data point,然后找到z。如果之后再给一个数据,t-SNE是没法做的,只能再跑一遍。 所以t-SNE主要用于可视化。
t-SNE的神妙之处在于原空间与新空间中相似度计算公式不同。
而新空间的计算公式,是长尾的,为了维持相同的相似度,两个点之间要分得更开。对原来距离很近的点,影响很小。而原来离得远的点,会被拉开,强化gap。