等度量映射(Isomap)
下图一个类似瑞士卷样的点集,想象一个虫子从瑞士卷的一个点走到另一个点,可能需要围绕瑞士卷走很长的距离(图中实线).但是如果用欧式距离测量两点间却会很短(图中虚线).想像一下,如果使用MDS或是PCA进行线性降维,肯定会破坏数据的流形结构.
为了在降维后保留原数据的流形结构,Isomap算法不是计算的直线距离,而是计算路径,但是为了防止图中的情况发生,Isomap算法先计算距离较近的两点之间的距离,并且将距离较远的两点距离设置为无穷大.然后再根据得到的距离使用最小路径算法,如著名的Dijkstra算法或Floyd算法,得到最短的路径,这样的话得到的距离就与图中实线接近.
最后再使用MDS进行降维.这样降维会按照密集分布的流形结构展开.
步骤1:计算数据两两间的距离.将临近点的距离设置为欧式距离;将其他点的距离设置为无穷大.
步骤2:根据步骤1得到的距离,使用最短距离算法更新距离.
步骤3:使用MDS算法进行降维.
局部线性嵌入(LLE)
LLE首先假设数据在较小的局部是线性的,在降维后尽量保证局部的线性关系.
比如我们有一个样本,我们在它的原始高维邻域里用K-近邻思想找到和它最近的三个样本,,. 然后我们假设可以由,,线性表示,即:
其中,,,为权重系数。在我们通过LLE降维后,我们希望也尽量保持同样的线性关系,即
也就是说,投影前后线性关系的权重系数w12,w13,w14是尽量不变或者最小改变的。
从上面可以看出,线性关系只在样本的附近起作用,离样本远的样本对局部的线性关系没有影响,因此降维的复杂度降低了很多。
对于LLE算法,我们首先要确定邻域大小的选择,即我们需要多少个邻域样本来线性表示某个样本。它主要利用数据的局部线性来逼近全局线性。所以 LLE 的第一步就是寻找每个样本点的 K 个近邻点;直观地,对于每个样本点 ,根据参数 K 计算出该样本点的领域点集.
找到和这k个最近邻之间的线性关系,也就是要找到线性关系的权重系数。这显然是一个回归问题:
N 为样本个数, 为样本点 i 对应的第 j 个重构系数。
观察单个样本点的目标函数。
式子中,重构系数向量。为使最小,可以用拉格朗日乘数法求解的值。
其中,长度为 K。
将对 求偏导。
推出
式子中,另外有,则
最终
上式中 K > D 时 不一定可逆,可以通过加入 C 的迹的小倍数来规范化。
现在我们得到了高维的权重系数,那么我们希望这些权重系数对应的线性关系在降维后的低维一样得到保持。假设我们的n维样本集在低维的d维度对应投影为, 则我们希望保持线性关系,也就是希望对应的均方差损失函数最小,即最小化损失函数如下:
式子中是 d × N 矩阵。d 是 Y 的维数。
首先解释加入约束条件
加入这两个约束条件是在不影响损失函数求解的前提下使方程易于求解,保证解得唯一性.实质上第一个约束是所有点的均值。第二个约束是解的协方差。所有点的均值为 0,协方差为单位阵I。这就使得解空间分布唯一。
将目标函数转换为矩阵表示
同样应用拉格朗日数乘法对上述最优化问题求解。
其中,是拉格朗日乘子;并且,如果时,否则。
为了将上式用矩阵表示,使且。
对 Y 求偏导并令为 0,得到
由于和,故 κ = 0,将 κ = 0 带入得到
将上式左右转置,
上式中和 Y 均为未知变量,但是是对称阵,一定能够找到正交阵 U 使得对角化。
值得一提的是,当令时,
依然成立。
因为,故组成 矩阵的列向量模长为。所以才是的特征向量。
到这里就可以得到求解最小值对应的 Y 为:的最小 d 个特征值对应特征向量再乘上常数。
事实上,因为是半正定矩阵,它的特征值一定非负,由可知, 的最小特征值为 0,对应的特征向量为 。按照上面陈述, 是 Y 的一个向量。但是它不满足,所以应该舍去最小的特征值。
所以,求解最小值对应的 Y 为:的最小 d + 1 个特征值对应特征向量再乘上常数,舍掉最小的特征值对应的特征向量。
另一个方面,由矩阵范数与迹的关系
从这个公式可知最小值为对应的特征值之和,由于的最小特征值为 0,所以前 d + 1 个特征值之和与除去 0 特征值的前 d 个特征值之和相同。而且 0 特征应的特征向量为常数向量 1。与上面表述印证。
参考:
周志华<机器学习>
https://www.cnblogs.com/pinard/p/6266408.html
https://github.com/ArrowLuo/LLE_Algorithm
https://github.com/ArrowLuo/LLE_Algorithm/blob/master/%E5%B1%80%E9%83%A8%E7%BA%BF%E6%80%A7%E5%B5%8C%E5%85%A5%EF%BC%88Locally%20linear%20embedding%EF%BC%89.pdf