• 十、Sklearn流形学习


    参考url:

    https://jakevdp.github.io/PythonDataScienceHandbook/05.10-manifold-learning.html

    流形学习是一种无监督评估器,它试图将一个低维度流形嵌入到一个高维度空间来描述数据集。

    1、流形学习:‘HELLO’

        

         

      

    2、多维标度法(MDS)

      通过观察这个数据集,可以看到数据集中选中的x值和y值并不是对数据的最基本描述:即使放大、缩小或旋转数据,‘HELLO’仍然会很明显。

      

       这说明x和y的值并不是数据间关系的必要基础特征。

      这个例子中真正的基础特征是每个点与数据集中其他点的距离,表示这种关系的常用方法是关系(距离)矩阵:对于N个点,构建一个NxN的矩阵,元素(i,j)是点i和点j之间的距离。

      

       多维标度法,可以将一个数据集的距离矩阵还原成一个D维坐标来表示数据集。

      

    3、将MDS用于流形学习

      既然距离矩阵可以从数据的任意维度进行计算,那么多维度标度法绝对非常实用。

      

       

       

      以上就是使用流行学习评估器希望达成的基本目标:给定一个高维嵌入数据,寻找数据的一个低维表示,并保留数据间的特定关系。

      在MDS的示例中,保留的数据是每队数据点之间的距离。

    4、非线性嵌入:当MDS失败时

      当嵌入为非线性时,即超越简单的操作集合时,MDS算法就会失效。

      

       

       虽然数据点间基本的关系仍然存在,但是这次数据以非线性的方式进行了变换:它被包囊成了'S'形

      如果尝试用一个简单的MDS算法来处理这个数据,就无法展示数据非线性嵌入的特征,进而导致我们丢失了这个嵌入式流形的内部基本关系特性

      

       将MDS算法应用于非线性数据时无法还原其内部结构

      即使是最优的二维线性嵌入也不能破解S曲线的谜题,而且还丢失了原始数据的y轴信息

    5、非线性流形:局部线性嵌入

      MDS算法构建嵌入时,总是期望保留相距很远的数据点之间的距离,但是如果修改算法,让它只保留比较接近的点之间的距离呢?

      

       其中的每一条细小的线都表示在嵌入时会保留的距离。

      左图是用MDS算法生成的嵌入模型,它会试图保留数据集中每对数据点间的距离,右图使用流行学习算法局部线性嵌入(LLE)生成的嵌入模型,该方法不保留所有的距离,而是仅保留邻节点间的距离——本例选择与每个点最近的100个邻节点。

      在左图中,显然不可能在展开数据的同时,保证每条线段的长度完全不变,所以MDS算法会失效。

      在右图中,通过某种方式将卷曲的数据展开,并且线段的长度基本保持不变,这是LLE算法的工作原理,它通过对成本函数的全局优化来反映这个逻辑。

      

    6、关于流形方法的一些思考

      由于流形学习在实际应用中的要求非常严格,因此除了在对高维数据进行简单的定向可视化之外,流形学习很少被正式使用。

      流形学习与PCA算法的比较:

      (1)在流形学习中,并没有好的框架来处理缺失值。相比之下,PCA算法中有一个用于处理缺失值的迭代方法。

      (2)在流形学习中,数据中噪音的出现将造成流形‘短路’,并且严重影响嵌入结果。相比之下,PCA可以自然地从最重要的成分中滤除噪音。

      (3)流形嵌入的结果通常高度依赖于所选取的邻节点的个数,并且通常没有确定的定量方式来选择最优的邻节点个数。相比之下,PCA算法中并不存在这样的问题。

      (4)在流形学习中,全局最优的输出维度数很难确定。相比之下,PCA可以基于解释方差来确定输出的维度数。

      (5)在流形学习中,嵌入维度的含义并不总是很清楚,而在PCA算法中,主成分有非常明确的含义。

      (6)在流形学习中,流形方法的计算复杂度为O[N2]或O[N3],而PCA可以选择随机方法,通常速度更快。

      流形学习有一个明显的优点,就是它具有保留数据中的非线性关系的能力。

      可以先用PCA探索数据的线性特征,再用流形方法探索数据的非线性特征。

  • 相关阅读:
    AD域服务器的部署 【1】— AD域介绍
    Docker 设置http代理
    在Django中将SQLite3数据库迁移到MySQL
    pycharm远程更新代码到远端服务器
    这个看着更好。Docker中使用MySQL
    docker换成最好用的源
    docker基础命令
    在docker中运行mysql实例
    centos7安装mysql
    centos 7 修改ip
  • 原文地址:https://www.cnblogs.com/nuochengze/p/12538874.html
Copyright © 2020-2023  润新知