机器学习40讲_15_14_非线性降维流形学习
你好,我是王天一。
今天我和你分享的主题是非线性降维流行,学习原形语诗品物流行。
这是儒家经典易经对万物流变的描述。
两千多年之后,流行一词被数学家所借鉴,用来命名和欧式空间局部同杯的拓扑空间。
虽然流行这个词儿本身有着浓厚的学院派的味道,但他的思想你却一点都不会陌生。
最著名的流行模型恐怕非瑞士卷尔莫属。
只是他的名字未必像他的形状一样广为人知。
点击文稿,你可以看到瑞士卷的图片,它实际上就是一张卷起来的薄蛋糕片儿。
虽然说卷曲的操作将它从二维形状升级成了三维形状,但这个多出来的空间维度呢并没有产生关于原始结构的新的信息。
因而瑞士卷呢它实际上就是嵌入到三维空间之中的二维流星。
在机器学习当中呢,流行指的是嵌入到高维数据空间当中的低维子空间。
它的维数是低维数据变化的自由度,也叫做固有的维度。
流星学习就是通过挖掘数据的内在结构,实现向固有维度的一个降维。
原始的维度是高纬的啊,那么经过流行学习之后啊,学到这个流形,就可以把原始的高纬降低到固有维度的这个数量。
这样呢就可以找到和高维的原数据相对应的这个低维的嵌入流星。
和主成分分析相比呢,流行可以是线性,但更多的是非线性。
正因如此,流行学习通常被视为非线性降维方法的代表,他不光能够缓解为数灾难的影响,还具有比线性降维方法更强大的特征。
表达能力除了非线性之外呢,流行学习的方法一般还是非参数,这使得流行能够更加自由的表示数据的固有维度,还有聚类特性。
但是呢也让他对噪声变得更加的敏感。
要将数据从高维空间映射到低维的流行上,首先要确定低维流行的结构。
其次要确定高维空间到低维流行的映射关系。
可是在实际问题当中呢,不管是流形结构还是流形的维数,都不是已知了。
因此呢有必要先做出一些鲜艳的假设啊,来缩小这个问题的解空间。
啊,会在一定的范围之内去寻找这个解当关于流行的假设,聚焦在数据的几何性质上的时候啊,这就可以得到多维缩放的算法。
在确定流形结构时,多维缩放让高维空间上样本之间的距离在低维空间上尽可能的得以保持。
啊,也就是距离的不变性,它以距离重构误差的最小化为原则,来计算所有数据点。
两两之间的距离矩阵根据降维前后距离保持不变的特点,距离矩阵又可以转化成为内积矩阵,利用和主成分分析。
类似的方法可以从高维空间上的内积矩阵构造出从低维空间到高维空间的嵌入。
那他的数学细节呢,我在这儿就不做描述了。
但这里面有一个问题,就是原始高维空间和约化、低维空间。
在这两个空间当中距离的等效性是不是一个合理的假设呢?想象一下,假如说你手边有一个地球仪,那么这个三维的球体呢,实际上也是由二维的世界地图来卷成的,所以呢它可以约化成一个二维的流形。
如果要在流行上计算北京和纽约两个城市的距离的话,那就要在地球仪上勾出来这两点之间的一条直线。
那注意的是,这里面是打引号的直线,那么这直线是什么呢?沿着地球表面计算出来的两个城市之间的直线距离。
但是需要注意的一点是,如果我在三维的这个地球仪上画出来是一条直线的话,那么它在二维流形上是体现成为一个曲线。
同样的话,如果我在二维的地图上,在两点之间连一条直线啊,那么这个直线嵌入到三维的空间当中啊,它也会变成一条曲线。
那这样计算出来的流形上的距离是否等于三维空间当中的距离呢?答案显然是否定北京和纽约两点在三维空间的距离,对应的是三维空间中的直线。
这条子是直线在哪儿呢?在地球仪的内部,按照这种理解距离的方式啊,我要从北京去纽约的话,应该坐一趟穿越地心的这个直达的地铁,从太平洋底下照过去,这说明什么呢?多维缩放的方法虽然考虑了距离的等效性,但是却没能将这种等效性放在特殊的数据结构。
这种背景之下去考虑,简单来说就是它忽略了高维空间中的直线距离,在低维空间中不可到达的问题。
所以他得到的结果呢也就难以反映真实数据的特质,吸取了多维缩放的经验教训。
美国斯坦福大学的约书亚泰林鲍姆等人啊提出了等度量映射这样一种非线性的降维方法等。
度量映射它以数据所在的低维流行和欧式空间子集等距性为基础。
那么在流行上呢,描述距离的指标不再是欧式距离,而变成了所谓的侧地距离。
测地距离什么意思呢?测量地球,它就是在地图上连接北京和纽约那条直线的距离啊,也就是流星上两点之间的固有距离。
但是在流形结构和维度未知的前提之下啊,我这个测地距离也是没法直接计算。
那么在解决这个问题,上等度量映射采用的是利用流行和欧式空间局部同杯的性质。
那么根据欧式距离为每个点找到近邻点,这样的话呢就可以直接的利用欧式距离来近似近邻点之间的测底距离。
你两个点之间的测地距离不是没法算吗?啊,我把它近似为一组欧式距离的组合啊,通过这种方式来计算测地距离。
这样的话,在每一组近邻点之间建立连接,就可以让所有数据点共同构成一张带权重的近邻连接图。
这个近邻连接图呢相当于把原始的测地距离打散成为一组接力的过程。
这个接力棒呢在一个又一个的近邻点之间传递啊,那么传递的路径就可以看成是原始测地距离的一个近似。
所以说这样一来啊,相距较远的两点的测地距离就被等效为连接这两点的最短的路径。
那么这个问题呢可以使用在图论还有网络科学当中发展非常成熟的这个DJ四三八算法来求解。
这就简单的多计算出距离矩阵之后,那么等度量映射的运算就和多维的缩放完全一致。
那么点击文稿,你可以看到等距离映射它原理示意图可以观察这个图啊,可以得到更加清晰的认识等度量映射。
他关注的是全局意义上数据的几何结构。
那么如果只关注数据在某些局部上的结构的话,它对应的方法就是局部的线性嵌入。
局部线性嵌入是由伦敦大学学院的sam lowis等人提出的一个方法,他的核心思想就是待求解的低位流行啊,在局部上它是线性,他满足线性的行驶,每个数据点都可以表示成为它近邻点的线性组合。
那么球解流行呢是降维的过程。
这个过程就是在保持每个邻域当中线性系数不变的基础上,我重构数据点,并且呢让重构的误差最小局部线性嵌入的实现呢包括两个步骤。
在确定一个数据点的近邻点之后啊,首先要根据最小均方误差来计算,用近邻点表示数据点的最优的权值。
那么这里需要注意的是,所有的权值之和应该要等于一啊需要满足规划的一个条件。
这个过程呢实际上就是一个线性拟合的过程。
接下来呢就要根据线性拟合的结果啊,也就是计算出来的权值来重构原始数据点。
在低维空间上的表示。
重构的原则是什么呢?重构的近邻点在已知权值之下的线性组合和重构的数据点啊具有最小的均方误差。
那么对于重构映射的球技啊,最终也可以转化成为对矩阵特征值的球解。
点击文稿啊,你可以看到局部线性嵌入它原理的示意图啊,也可以得到一个更加直观、更加清晰的认识。
将两种典型的流行学习算法加以比较的话,不难发现,他们的区别在于对流行和欧式空间关系的理解上。
流行跟欧式空间呢,它就像是寂静岭里面两个平行的世界,把他们联系起来的羁绊是什么呢?是这个拓扑性质的保持。
那么等度量映射理如其名,它将距离视为空间变换过程当中的不变量,强调的呢是不同数据点之间关系的不变性,以及数据全局结构完整的保持。
打个比方,如果说把全局结构看成一个拼图玩具的话,那么等度量映射的任务就是将每一块拼图所代表的领域正确的组合啊,从而构成完美的完整的这样的图案。
相比之下呢,局部线性嵌入在乎的只有数据关系在某个领域上的不变性。
数据点可以用它的临近点,在最小二乘意义下的最优的线性组合来表示这个局部的几何性质是不会改变。
也就是说我在这个领域上的几何性质是不变。
但是在淋浴之外,局部线性嵌入它并不考虑相距较远的数据点,他们之间关系的保持。
那么显然局部线性嵌入在拼读的时候呢更加随意。
我只要把所有的拼图块按照嵌入关系连成一片就可以了。
至于说拼出什么奇形怪状啊,跟原始的这个理想的图案不一样啊,这都没有关系。
那么点击文稿,你就可以看到基于全局信息的等度量映射和基于局部信息的局部线性嵌入。
两者的一个比较,不管是等度量映射也好,还是局部线性嵌入也好啊,它们都是以几何性质作为同构的基础。
如果说要从概率角度来理解流星学习的话,那么最典型的例子就是随机近邻嵌入。
随机近林嵌入,它核心的特点是保持降维,前后数据的概率分布不变。
它是将高维空间之上数据点之间的欧式距离转化为服从正态分布的一个条件概率。
点击文档。
你可以看到条件概率的表达式,这里面的西格玛i代表了一个困惑度参数,他可以近似的看成近邻点的数。
这个概率的表达式呢用来描述不同数据点之间的相似性。
简单的说相距越近的点,形成近邻的概率越大啊,那么它两者相似的概率也就越大,反过来相距越远的点,相似的概率也就越小,这可以怎么来理解呢?就像我们呃上学的时候站排排队一样啊,通常来说是按照大小个啊按照身高来进行排队。
那么在这样的队伍当中啊,站在一块儿的人啊,他的身高肯定会更加近似。
那么它两者相似的概率就大。
啊,那么离得较远的人呢,我站在对手和站在队尾啊,那么身高肯定会相差的不少啊,所以说距离的远近啊也体现出了概率的这个差别的大小。
映射到低维空间之后啊,随机近邻嵌入按照和高维空间相同的方式啊来计算低维空间上的条件概率,并且要求两个空间中的条件概率啊尽可能的相似。
这就意味着啊要尽可能的保持数据之间的相似性,重构的依据是什么呢?交叉熵,也就是KL散度,理想的重构应该让KL散度最小化。
但是别忘了KL散度它有一个不对称的特性。
P和q之间的散度和q和p之间的散度是不一样,这就会导致什么呢?相距较远的点啊,体现成为比较大的一个散度的差。
这种情况下,为了让KL散度最小化的话,数据点在映射到低维空间之后啊,就会被压缩到一个极小的范围之内。
这就像一群学生被突然的紧急集合叫到操场上挤在一起之后啊,你根本分不清哪些人来自于哪个班。
这呢就是随机近邻嵌入所面对的一个拥挤的问题。
为了解决这个拥挤问题啊,深度学习的泰斗、新顿,还有他的学生提出来的所谓的t分布,随机嵌入的概念。
新算法呢主要做出了两点改进,首先他将由欧式距离推导出来的条件概率改写成了对称的姓氏。
其次呢是让低维空间的条件概率服从t分布啊,注意啊服从t分布,不服从正态分布的。
但是在高维空间当中啊,这个正态是保持不变。
这两种改进的目的是一样,那就是让相同结构的数据点在低维空间上变得更加致密。
而不同结构的数据点呢更加疏远一样的数据点,我让它很近的凑到一块儿啊,不一样的数据点,我离得越远越好。
但事实证明啊,这个目的也确实的达到线性呢,它可以看成是一个非线性的特例。
那么从这个角度出发概率主成分分析啊,我们前面提到的呃内容其实也可以归结到广义的流行学习范畴之中。
还记得前一篇文章的图片吗?两个满足正态分布的演变量,让数据分布呈现出类似于煎饼的一个椭圆形这样的形状。
咱煎饼还是墨西哥卷饼啊,都是这种形状。
这张煎饼呢实际上就是一个流行,这个界面所在的超平面,显示的只是数据的投影。
那么之所以选择这个平面来投影呢,是因为数据的变化是集中在这里。
所以这个投影呢得到的啊就是一个低维的一个结构。
相比之下呢,数据在垂直于超平面方向上的方差就小啊,所以这些变化在降维的时候就可以忽略不计啊,也就是把它们从流行的这个范围当中给剔除掉。
既然都能够实现数据的降维啊,那么以主成分分析为代表的线性方法,还有以流行学习为代表的非线性方法,他们各自的优缺点在哪呢?依言以避之。
线性方法揭示数据的规律。
非线性方法揭示数据的结构,我再重复一遍线性方法,它揭示数据的规律。
非线性方法,它揭示数据的结构,主成分分析可以去除掉属性之间的贡献性,通过特征提取来揭示数据差异的本质来源,这会给数据的分类提供详实的依据。
流行学习呢它虽然不能够解释非线性变化的含义,却可以挖掘出高维数据的隐藏结构啊,并且在二维或者三维的空间当中直观的显示。
所以呢它是数据可视化的一个利器,而不同的隐藏结构呢也可以作为特征识别的一个参考。
Sk learn当中啊,它包含了执行流形学习的manifold模块,它将常用的流形学习方法打包成为内置的类调用。
这个ISO map啊,locally lining embedding,还有TSNE这些类就可以计算啊,相应的流行算法的细节呢都被隐藏在函数的内部作为使用。
作为用户啊,我们只需要输入少量对应的参数就可以了。
将以上的算法应用在多元线性回归的英超数据集之上。
啊,我把它投影到一个二维的流形当中,可以看到这样的结果。
当然由于数据集里面的数据点较少啊,所以在各种算法当中啊,我这个近邻点的数目都被设置成为了两个。
这是处理小数据时候的一个方式。
点击文稿,你可以看到这样的结果,可以看出来,这三种方式所计算出来的流行当中呢,似乎都存在着一些模式。
但要说明这些模式的意义的话,可就不像把它们计算出来那么简单。
今天我和你分享了几种典型的流行学习方法。
啊,我们没有过多的涉及这些方法的数学细节。
感兴趣的话,你可以参考不同算法的这个原始的论文。
今天的内容包括着以下四个要点,第一流形学习是非线性的教学方法,目的在于找到与高维数据对应的低维的嵌入流形。
第二等度量映射是基于全局信息的流行学习方法,通过测地距离和欧式距离的等效性来计算流星。
第三,局部线性渐入是基于局部信息的流行学习方法,通过局部线性系数的不变性来计算流行。
第四,t分布随机近临嵌入,将欧式距离映射为相似性啊,利用相似性的保持来计算流行。
从前文当中英超数据集的流行可以看出,当现实中复杂的高维数据被映射到二维或者三维的流行上的时候,大呼神奇之后啊,如何对得到的结果加以解释,又变成了一个棘手的问题。
那么你觉得流行学习除了感官上的冲击之外,到底还能具有什么样的实在的作用?欢迎分享你的观点。