《机器学习实战》笔记(十三):Ch13 - 利用PCA来简化数据

第13章 利用PCA来简化数据([代码][ch13])

  • 降维技术

    降维的意思是能够用一组个数为d的向量zi来代表个数为D的向量xi所包含的有用信息,其中d<D。假设对一张512512大小的图片,用svm来做分类,最直接的做法是将图按照行或者列展开变成长度为512512的输入向量xi,跟svm的参数相乘。假如能够将512512的向量在保留有用信息的情况下降维到100,那么存储输入和参数的空间会减少很多,计算向量乘法的时间也会减少很多。所以降维能够有效的减少计算时间。而高维空间的数据很有可能出现分布稀疏的情况,即100个样本在100维空间分布肯定是非常稀疏的,每增加一维所需的样本个数呈指数级增长,这种在高维空间中样本稀疏的问题被称为维数灾难。降维可以缓解这种问题。而为什么可以降维,这是因为数据有冗余,要么是一些没有用的信息,要么是一些重复表达的信息,例如一张512512的图只有中心100*100的区域内有非0值,剩下的区域就是没有用的信息,又或者一张图是成中心对称的,那么对称的部分信息就重复了。正确降维后的数据一般保留了原始数据的大部分的重要信息,它完全可以替代输入去做一些其他的工作,从而很大程度上可以减少计算量。例如降到二维或者三维来可视化。

    • 原因

      • 使的数据更加简单易用

      • 降低很多算法的开销

      • 去除噪声

      • 使的结果变得非常易懂

  • 从什么角度出发来降维

    一般来说可以从两个角度来考虑做数据降维,一种是直接提取特征子集做特征抽取,例如从512*512图中只取中心部分,一种是通过线性/非线性的方式将原来高维空间变换到一个新的空间,这里主要讨论后面一种。后面一种的角度一般有两种思路来实现,一种是基于从高维空间映射到低维空间的projection方法,其中代表算法就是PCA,而其他的LDA、Autoencoder也算是这种,主要目的就是学习或者算出一个矩阵变换W,用这个矩阵与高维数据相乘得到低维数据。另一种是基于流形学习的方法,流形学习的目的是找到高维空间样本的低维描述,它假设在高维空间中数据会呈现一种有规律的低维流形排列,但是这种规律排列不能直接通过高维空间的欧式距离来衡量,如下左图所示,某两点实际上的距离应该是下右图展开后的距离。如果能够有方法将高维空间中流形描述出来,那么在降维的过程中就能够保留这种空间关系,为了解决这个问题,流形学习假设高维空间的局部区域仍然具有欧式空间的性质,即它们的距离可以通过欧式距离算出(Isomap),或者某点坐标能够由临近的节点线性组合算出(LLE),从而可以获得高维空间的一种关系,而这种关系能够在低维空间中保留下来,从而基于这种关系表示来进行降维,因此流形学习可以用来压缩数据、可视化、获取有效的距离矩阵等。

  • 几种降维的方法

    • PCA

      • 优点:降低数据的复杂性,识别最重要的多个特征

      • 缺点:不一定需要,且有可能损失信息

      • 使用数据类型:数值型数据

      • 原理

        • 输入:N个D维向量x1,…,xN,降维到d维

        • 输出:投影矩阵W=(w1,…,wd),其中每一个wi都是D维列向量

        • 目标:投影降维后数据尽可能分开,maxwtr(WTXXTW)(这里的迹是因为上面提到的B的非对角线元素都是0,而对角线上的元素恰好都是每一维的方差)

        • 假设:降维后数据每一维方差尽可能大,并且每一维都正交

          • 将输入的每一维均值都变为0,去中心化

          • 计算输入的协方差矩阵C=X∗XT

          • 对协方差矩阵C做特征值分解

          • 取最大的前d个特征值对应的特征向量w1,…,wd

  • 小节

    降维技术使得数据变的更易使用,并且它们往往能够去除数据中的噪音,使得其他机器学习任务更加精确。
    降维往往作为预处理步骤,在数据应用到其他算法之前清洗数据。

    • 比较流行的降维技术

      • 独立成分分析

      • 因子分析

      • 主成分分析(应用最广泛)


代码托管见Github
[ch13]:https://github.com/Lornatang/machine_learning_in_action_py3/tree/master/src/ch13

《机器学习实战》笔记(十三):Ch13 - 利用PCA来简化数据《机器学习实战》笔记(十三):Ch13 - 利用PCA来简化数据 lornatang 发布了20 篇原创文章 · 获赞 20 · 访问量 3922 私信 关注
上一篇:sklearn的IncrementalPCA部分使用方法


下一篇:PCA算法步骤