![ff2d5dbae2634475e3a1e4b3388b4c70.png](https://i-blog.csdnimg.cn/blog_migrate/8fd1e7c4964fa683cacb0cea92d8b782.jpeg)
背景
最近在温习之前了解过的spectral clustering 的时候接触到一个看着bigger满满的术语:manifold learing,然后顺藤摸瓜找到一篇2000年的science,不过他们当时并没有大肆炒这个manifold learning的概念,而是提出了一种叫做“local linear embedding”的降维算法,在处理所谓的流形的降维的时候,效果比PCA要好很多。于是我了解了下这个“简约而不简单”的LLE算法的具体实现方法,写一下我目前的理解。
![e209d7283b3105689969098949369397.png](https://i-blog.csdnimg.cn/blog_migrate/3585450d569faf453f6ac36a084943f9.jpeg)
图片来源
首先,所谓流形,我脑海里最直观的印象就是上图这种Swiss roll,我吃的时候喜欢把它整个摊开成一张饼再吃,其实这个过程就实现了对瑞士卷的降维操作,即从三维降到了两维。降维前,我们看到相邻的卷层之间看着距离很近,但其实摊开成饼状后才发现其实距离很远,所以如果不进行降维操作,而是直接根据近邻原则去判断相似性其实是不准确的。
原理
LLE的原理其实是这样的:
- 所谓局部线性,就是认为在整个数据集的某小范围内,数据是线性的,就比如虽然地球是圆的,但我们还是可以认为我们的篮球场是个平面;而这个“小范围”,最直接的办法就是k-近邻原则。这个“近邻”的判断也可以是不同的依据:比如欧氏距离,测地距离等。
- 既然是线性,那么对每个数据点
(D维数据,即
的列向量),可以用其k近邻的数据点的线性组合来表示,即
。其中,
是
的列向量,
是
的第
行,
是
的第
个近邻点。
- 通过使loss function最小化:
得到权重系数,一共
个数据点,对应
列
。
- 接下来是LLE中又一个假设:即认为将原始数据从D维降到d维后,
,其依旧可以表示为其k近邻的线性组合,且组合系数不变,即
,再一次通过最小化loss function:
得到降维后的数据。
算法推导
step 1:
运用k近邻算法得到每个数据的k近邻点:
step 2:
求解权重系数矩阵
即求解:
在推导之前,我们首先统一下数据的矩阵表达形式
输入:
权重:
则可逐步推导出权重系数矩阵的表达式:
将
其中,
求导:
step 3: 映射到低维空间
即求解:
低维空间向量:
首先,用一个
对
否则:
因此:
由矩阵论可知:对矩阵
所以:
再一次拉格朗日乘子法:
求导:
即
可见Y其实是M的特征向量构成的矩阵,为了将数据降到
结果演示
借助matlab强大的矩阵运算能力对swiss roll数据集进行了LLE降维。原始的数据如下:
![440e6297e3996d8a0a6c75075950b33f.png](https://i-blog.csdnimg.cn/blog_migrate/1e2c65905dc278cedb210c553ca857d8.jpeg)
通过LLE降维后的结果如下:
![35908dc731c2114afa95d918de96cf93.png](https://i-blog.csdnimg.cn/blog_migrate/aa844c1d1951ba7519a9b496cd5598e0.jpeg)
可以看出,当k取值较小(k=4)时,算法不能将数据很好地映射到低维空间,因为当近邻个数太少时,不能很好地反映数据的拓扑结构。当k值取值适合,这里选取的是k=15,可见不同颜色的数据能很好地被分开并保持适合的相对距离。但若k取值太大,如k=50,不同颜色的数据开始相互重叠,说明选取的近邻个数太多则不能反映数据的流形信息。
思考
- 在step 3中为什么是取d个最小的非零特征值,而不是最大的
个特征值呢?
- 怎样理解每一步的约束条件呢?
没想到导入md文件公式还是不能渲染出来,重新用知乎的公式编辑器把公式编辑了一遍,不得不吐槽一句:知乎的公式编辑真是不方便而且太不美观了。。。
我是个人博客搬运工降维打击之LLE算法www.quanlion.com