机器学习40讲学习笔记-14 非线性降维:流形学习

一 序

  本文属于极客时间机器学习40讲学习笔记系列。

14 | 非线性降维:流形学习

 这篇跟上篇很类似,都是讲降维的理论的。

    在机器学习中,流形(manifold)指的是嵌入在高维数据空间中的低维子空间,它的维数是低维数据变化的自由度(degree of freedom of variability),也叫作固有维度(intrinsic dimensionality)。流形学习(manifold learning)正是通过挖掘数据的内在结构实现向固有维度的降维,从而找到与高维原数据对应的低维嵌入流形。

   有点抽象,可以理解为降维的一种思路。老师给的例子瑞士卷跟地球上城市距离都比较好理解。

机器学习40讲学习笔记-14 非线性降维:流形学习_第1张图片

           图 A 表示测地距离与欧氏距离的区别,图 B 表示利用近邻点近似计算测地距离,图 C 表示真实测地距离与近似测地距离的比较

流形学习通常被视为非线性降维方法的代表。它不仅能够缓解维数灾难的影响,还具有比线性降维方法更强的特征表达能力。

        如果我们观察到的数据是三维的,但其本质是一个二维流形。图上所标注的两个圈圈,在流形(把卷展开)上本距离非常远,但是用三维空间的欧氏距离来计算则它们的距离要近得多。结合地球上城市距离的这个例子来看,传统很多算法都是用欧氏距离作为评价两个点之间的距离函数的。地球上城市坐标是三维空间坐标(x,y,z),但使用欧氏距离对于“在高维空间展开的低维流型”进行距离的衡量是不正确的,从北京去纽约应该坐一趟穿越地心的直达地铁。这说明多维缩放方法虽然考虑了距离的等效性,却没能将这种等效性放在数据特殊结构的背景下去考虑。它忽略了高维空间中的直线距离在低维空间上不可到达的问题,得到的结果也就难以真实反映数据的特征。

     我们关注的是把三维地球展开成二维平面,然后测量的地表上的距离,而不是三维空间中球面上两个点的欧氏距离。球面上我们考虑的是三维空间坐标(x,y,z),而一个表面我们完全可以只用两个参数来表示(经度、维度),所以这个球面是一个二维流型的三维展开。

深度学习主要的特点就是“特征学习”,所谓特征,就是能“表示事物本质的内容”,流形能够刻画数据的本质。也就是说。既然学习到了“将数据从高维空间降维到低维空间,还能不损失信息”的映射,那这个映射能够输入原始数据,输出数据更本质的特征。

    老师举得例子是人脸特征,换个身份证的例子,我们的身份证号是18位的,有固定的格式3位省3位市8位生日4位其他编码。但由于格式的限制,很多编码是不可能产生的。如果我们给一个类似数据库自增的ID那种连续的数字,只需要10位数字,就足够代表100亿人了。所以当我们有某种方法,能够找到一个从18维空间映射到10维空间的方法。那么这个10维空间就是数据“最本质”的特征了。

       既然都能实现数据的降维,那么以主成分分析为代表的线性方法和以流形学习为代表的非线性方法各自的优缺点在哪里呢?一言以蔽之,线性方法揭示数据的规律,非线性方法则揭示数据的结构。   主成分分析可以去除属性之间的共线性,通过特征提取揭示数据差异的本质来源,这为数据的分类提供了翔实的依据;而流形学习虽然不能解释非线性变化的意义,却可以挖掘出高维数据的隐藏结构并在二维或三维空间中直观显示,是数据可视化的利器,而不同的隐藏结构又可以作为特征识别的参考。

Scikit-learn 中包括了执行流形学习的 manifold 模块,将常用的流形学习方法打包成内置类,调用 Isomap、LocallyLinearEmbedding 和 TSNE 等类就可以计算对应的流形,算法的细节都被隐藏在函数内部,只需要输入对应的参数即可。

老师还额外扩展了局部线性嵌入等具体的实现方法,记住基本点:流形学习如何找到这个从高维到低维的映射。背后的假设(瑞士卷哪个图形):假设数据在高维具有某种结构特征,希望降到低维后,仍能保持该结构。

机器学习40讲学习笔记-14 非线性降维:流形学习_第2张图片

你可能感兴趣的:(NLP,机器学习)