介绍了3中非线性降维方法
LLE基于相邻点的关系,然后在低维空间保持这种关系
Laplacian Eigenmaps基于图结构的关系,然后在低维空间保持这种关系
t-SNE基于分布的关系,然后在低维空间保持这种关系,巧妙利用不同相似度函数实现拉开不同类
视频 pdf
Manifold Learning非线性降维
在之前的Unsupervised Learning - Linear Methods说到PCA是没法做非线性变换的,比如下面:
通过降维,可以使用欧氏距离计算距离。比如左边在高维空间蓝色点和红色点更近,但是在右边的2维屏幕上是蓝色点和黄色点更近。而在做数据可视化时,我们往往需要的是右边的低维度便于观察彼此距离和进行聚类。
Locally Linear Embedding (LLE)
xjx^{j}xj是xix^{i}xi相邻的点,它们之间的关系用wijw_{i j}wij?表示,则我们希望下式尽可能小:
∑i∥xi?∑jwijxj∥2\sum_{i}\left\|x^{i}-\sum_{j} w_{i j} x^{j}\right\|_{2} i∑?∥∥∥∥∥?xi?j∑?wij?xj∥∥∥∥∥?2?
所以得到的wijw_{i j}wij?就表示一组权重,xjx^{j}xj是周围的点和这个权重wijw_{i j}wij?来表示xix^{i}xi
保持wijw_{i j}wij?不变
在低维度的空间找一组zjz^{j}zj和这个权重wijw_{i j}wij?来表示ziz^{i}zi:
∑i∥zi?∑jwijzj∥2\sum_{i}\left\|z^{i}-\sum_{j} w_{i j} z^{j}\right\|_{2} i∑?∥∥∥∥∥?zi?j∑?wij?zj∥∥∥∥∥?2?
所以就实现从高维转低维。不是很懂~~,了解一下。
对k的选择比较敏感:
太近太远都不是很好的关系。
Laplacian Eigenmaps
在Semi-supervised提到Smoothness Assumption:
如果2点之间通过高密度路径(hightdensity path连通,则认为y1和y2是接近的
当然,可以在基于图的结构上计算近似距离。
相似度s(xi,xj)s\left(x^{i}, x^{j}\right)s(xi,xj)计算:
s(xi,xj)=exp?(?γ∥xi?xj∥2)s\left(x^{i}, x^{j}\right)=\exp \left(-\gamma\left\|x^{i}-x^{j}\right\|^{2}\right)s(xi,xj)=exp(?γ∥∥?xi?xj∥∥?2)
然后wi,j=s(xi,xj)w_{i, j} =s\left(x^{i}, x^{j}\right)wi,j?=s(xi,xj),和LLE思想类似,求得两点之间关系wi,jw_{i, j}wi,j?后,在低维空间找一个点zjz^{j}zj,我们希望S尽可能小的情况下找到对应的ziz^{i}zi,从而实现降维。
但是和在半监督学习不同的是,zj,ziz^{j}, z^{i}zj,zi都没有标签(在半监督学习中可能通过神经网络求得一部分),所以如果zi=zj=0z^{i}=z^{j}=\mathbf{0}zi=zj=0那么S就一定是0,是会存在问题的。所以需要对z添加约束。
我们希望低维空间是M维的,而这些点组成的矩阵求秩也应该要为M。
Span?{z1,z2,…zN}=RM\operatorname{Span}\left\{z^{1}, z^{2}, \ldots z^{N}\right\}=R^{M} Span{
z1,z2,…zN}=RM
T-distributed Stochastic Neighbor Embedding (t-SNE)
单纯使用LLE的方法能够使得同类聚集,但是缺没法使不同类分开,比如下面:
t-SNE目的就是为了解决这个。
t-SNE做法:
求点xix_ixi?到xjx_jxj?的归一化距离(做归一化的目的是在不同维空间进行比较):
P(xj∣xi)=S(xi,xj)∑k≠iS(xi,xk)P\left(x^{j} \mid x^{i}\right)=\frac{S\left(x^{i}, x^{j}\right)}{\sum_{k \neq i} S\left(x^{i}, x^{k}\right)} P(xj∣xi)=∑k??=i?S(xi,xk)S(xi,xj)?
同样的,在低维空间也可求ziz_izi?到zjz_jzj?的归一化距离:
Q(zj∣zi)=S′(zi,zj)∑k≠iS′(zi,zk)Q\left(z^{j} \mid z^{i}\right)=\frac{S^{\prime}\left(z^{i}, z^{j}\right)}{\sum_{k \neq i} S^{\prime}\left(z^{i}, z^{k}\right)} Q(zj∣zi)=∑k??=i?S′(zi,zk)S′(zi,zj)?
我们希望一个点的周围分布在降维后保存不变,所以可以用周围点的归一化距离描述分布,我们希望总的分布误差越小越好。而描述分布差异用的就是KL散度(相对熵),所以对下式进行GD,求z。
L=∑iKL(P(?∣xi)∥Q(?∣zi))=∑i∑jP(xj∣xi)log?P(xj∣xi)Q(zj∣zi)\begin{array}{r} L=\sum_{i} K L\left(P\left(* \mid x^{i}\right) \| Q\left(* \mid z^{i}\right)\right) \\ \quad=\sum_{i} \sum_{j} P\left(x^{j} \mid x^{i}\right) \log \frac{P\left(x^{j} \mid x^{i}\right)}{Q\left(z^{j} \mid z^{i}\right)} \end{array} L=∑i?KL(P(?∣xi)∥Q(?∣zi))=∑i?∑j?P(xj∣xi)logQ(zj∣zi)P(xj∣xi)??
ok,回到上面问题,t-SNE为什么可以把不同类拉开?
关键在于SSS和S′S^{\prime}S′不一样:
S和Smoothness Assumption一样,欧式距离经过RBF
S(xi,xj)=exp?(?∥xi?xj∥2)\begin{array}{l} S\left(x^{i}, x^{j}\right) \\ =\exp \left(-\left\|x^{i}-x^{j}\right\|_{2}\right) \end{array} S(xi,xj)=exp(?∥∥?xi?xj∥∥?2?)?
S′S^{\prime}S′则发生改变:
S′(zi,zj)=1/1+∥zi?zj∥2S^{\prime}\left(z^{i}, z^{j}\right)=1 / 1+\left\|z^{i}-z^{j}\right\|_{2} S′(zi,zj)=1/1+∥∥?zi?zj∥∥?2?
由于S′S^{\prime}S′拖尾更长,在距离远的情况下(横轴大),在保持同分布也就是相似度要一样的话S′S^{\prime}S′的横轴值会拉的更远。而在距离近的情况下(横轴小),则不会差太多:
S′S^{\prime}S′不发生改变则叫SNE方法。
以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用