栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习算法之主成分分析PCA降维

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习算法之主成分分析PCA降维

目录

谈一下降维

降维操作是干什么 

降维具有如下一些优点:

降维的算法有哪些 

降维的的两种方式

特征抽取:

特征选择:

PCA是啥? 

特征值和特征向量

 PCA的目标

PCA的过程

第一步中心化 

协方差:

方差:

 数据标准化

协方差矩阵计算

 PCA另一个角度最小投影距离

核主成分分析KernelizedPCA

PCA总结

PCA的主要优点有:

主要缺点:


谈一下降维

降维操作是干什么 

        降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。

降维具有如下一些优点:

                1) 使得数据集更易使用。
                2) 降低算法的计算开销。
                3) 去除噪声。
                4) 使得结果容易理解。

降维的算法有哪些 

        比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。

降维的的两种方式

特征抽取:

        就是将高维的特征通过某种方式映射至低维的方式,比如PCA主成分分析以及神经网络的降维等。

特征选择:

        1.过滤式(打分机制):过滤,指的是通过某个阈值进行过滤。比如经常会看到但可能并不会去用的,根据方差、信息增益、互信息、相关系数、卡方检验、F检验来选择特征。

        过滤式方法运用统计指标来为每个特征打分并筛选特征,其聚焦于数据本身的特点。其优点是计算快,不依赖于具体的模型,缺点是选择的统计指标不是为特定模型定制的,因而最后的准确率可能不高。而且因为进行的是单变量统计检验,没有考虑特征间的相互关系。

        2.包裹式:每次迭代产生一个特征子集,评分。

        包裹式方法使用模型来筛选特征,通过不断地增加或删除特征,在验证集上测试模型准确率,寻找最优的特征子集。包裹式方法因为有模型的直接参与,因而通常准确性较高,但是因为每变动一个特征都要重新训练模型,因而计算开销大,其另一个缺点是容易过拟合。

        3.嵌入式:先通过机器学习模型训练来对每个特征得到一个权值。接下来和过滤式相似,通过设定某个阈值来筛选特征。区别在于,嵌入式使用机器学习训练;过滤式采用统计特征。

        嵌入式方法利用了模型本身的特性,将特征选择嵌入到模型的构建过程中。典型的如 Lasso 和树模型等。准确率较高,计算复杂度介于过滤式和包裹式方法之间,但缺点是只有部分模型有这个功能。

PCA是啥?          PCA 追求的是在降维之后能够最大化保持数据的内在信息,并通过衡量在投影方向上 的 数据方差 的大小来衡量该方向的重要性

 

图2 最大投影方差和最小投影距离

         通俗的解释,如上图,假设我们有两个维度特征(PCA是无监督学习和y无关)x1、x2,我们目的是要将此2维的特征压缩至1维,那么我们要给样本点找一个新的坐标系x1'、x2’,新坐标系满足要保留的维度最大投影方差化(或者说最小投影距离),上图我们最终是将x1、x2压缩至一维x1',x2'我们不关心了不要了。为什么要保留这个最大投影方差的维度?因为方差大就说明信息量大,直观的看起来样本更容易“区分”开来。

        总之来说主成分分析的目的就是要从这些现有的特征中重建新的特征,新的特征剔除了原有特征的冗余信息,因此更有区分度。注意,主成分分析的结果是得到新的特征,而不是简单地舍弃原来的特征列表中的一些特征。

特征值和特征向量

        首先要理解矩阵线性变换,即矩阵乘法:几乎所有的向量在乘以矩阵A后都会改变方向,某些特殊的向量 x 和 Ax 位于同一个方向,它们称之为特征向量,  数字称为特征值。它告诉我们在乘以 A 后,向量是怎么被拉伸、缩小、反转或者不变的。意味着特征向量存在于矩阵的零空间中。任意向量都是单位矩阵的特征向量,因为,其特征值为 1。

        通过求出A的特征值和对应的特征向量,就能找到旋转后正确的坐标轴,这个就是特征值和特征向量的一个实际应用:“得出使数据在各个维度区分达到最大的坐标轴”。(区分大:方差大)

        而在数据挖掘中,就会直接用特征值来描述对应特征向量方向上包含的信息量,而某一特征值除以所有特征值的和的值就为:该特征向量的方差贡献率。(在该维度下蕴含的信息的比例)

        经过特征向量变换下的数据称为变量的主成分,当前m各主成分累计的方差贡献率达到85%以上就保留这个m个主成分的数据。实现了对数据进行降维的目的。

 PCA的目标

         最小投影距离,最大投影方差。降维后不同维度的相关性为0;

        如图二最大投影方差和最小投影距离,数据离散性最大,代表数据在所投影的维度有越高的区分度,这个区分度就是信息量。所以我们要将坐标轴进行旋转就能正确降维了。而这个旋转的操作其实就是矩阵变换。

 

        通过矩阵A对坐标系X进行旋转。经过一些数学推导,其实就可以得知,特征值对应的特征向量就是理想中想取得的正确坐标轴,而特征值就等于数据在旋转后的坐标上对应维度的方差(沿对应的特征向量的数据的方差)。而A其实即为我们想求得的那个降维特征空间,Y则是我们想要的降维后的数据。 

PCA的过程

第一步中心化 

        采用了中心化,均值为0, 未中心化,可能第一主成分的方向有误

       

        这里可以看出主成分分析的目的是最小投影距离,最大投影方差。如果不中心化就达不到上述目的。

        在中心化后,由于特征的均值变为0,所以数据的协方差矩阵C可以用或者

 来表示,为矩阵的转置,这里X每一行为一个特征。当然也可以表示为或者,这时每一行为一个样本。(这里容易搞混要区分出来转置在前或者是在后)

协方差:

 

方差:

 

        可见,协方差和方差其实一个道理

 数据标准化

         数据标准化是必须的,因为要算特征值和特征向量,特征值对应的特征向量就是理想中想取得的正确坐标轴,而特征值就等于数据在变换后的坐标上对应维度的方差(沿对应的特征向量的数据的方差),我们要比较特征的方差来抽取最大方差的特征,那么不同量纲不同单位的数据不做标准化就很不公平。

协方差矩阵计算

        为什么要算协方差矩阵呢?这时就要想起我们之前的目的:在降维后的每一维度上,方差最大。而方差最大,则容易想到的就是协方差矩阵,去中心化后,协方差矩阵的对角线上的值正好就是各个数据维度的方差。原始数据的协方差矩阵 X[nxn] 对角线,对应的就是原始数据的方差;降维后的数据的协方差矩阵 X' [n'xn'] ,对应的就是降维后的数据的方差。而我们的目的,则是使方差最大,这就又想到了另一个概念,迹,因为迹不就是对角线上所有元素之和吗,而协方差矩阵的迹,不就是方差之和吗。这样我们构建损失函数,不就是argmax(协方差矩阵X’的迹) !!!

        首先设新的坐标系为W [n' x n'] : { w1,w2,w3...wn' }, 显然w为标准正交基,那么:

 

        在新的坐标系的投影为Z =,其中Z为 { z1,z2,z3...zn' },向量Xi在ω上的投影坐标可以表示为易知中心化后,投影之后的均值为0,即

 

         投影之后的方差可以表示为

 

        其实就是样本协方差矩阵,所以问题可以转化为

 

        结合目标函数与条件,用代替协方差矩阵,通过拉格朗日函数可以得到: 

        对ω进行求导最终得: 此时求出来方差D(x)为

 

        −λ是由特征值构成的对角阵,且特征值在对角线上,其余位置为0。很显然,W为标准正交基,我们假如把特征值以及对应的W的那一列拿出来和相乘,不就是一个求特征值和特征向量的过程嘛。而W的维度为n' x n',显然我们就是求前n'个最大的特征值以及对应的特征向量(同时也可以设定一个阈值,当前n’个特征向量达到总和的多少占比时,一般是85%,就提取,这样可能在尽可能减少信息量损失的情况下更多地降低维度)。这n'个特征向量组成的矩阵W即为我们需要的矩阵。通过将原始数据矩阵与该矩阵进行矩阵乘法,便可以将n维的数据降到n'维。也就是说,一条n维的数据{1xn},假设选了前m个特征向量,通过乘以特征矩阵{nxm},就变成了m维的数据{1xm},我们就达到了降维的目的。 

 PCA另一个角度最小投影距离

         通过最小投影距离其实是和线性回归的原理类似。我们希望投影后到d维超平面,最小化所有点到投影点的距离平方之和。

 xk为原始点经过变换到新的特征空间的点。数据集每个点到投影点的距离为

 

         表示在超平面D上的投影点(投影向量),该超平面由d个标准正交基构成,于是投影向量可以表示为

 

        表示在ωi方向上投影的长度。PCA要优化的方法目标为 

         其中损失函数可以展开

 

        第一项的 是个常数,将之前表示的带入式第二三项,注意和表示投影投影长度,都是常数

        由于当i不等于j时, 因此只剩下1

 

        实际是矩阵的 迹,将其代入得到

 

        因此损失函数可以写为 

 

        又由于矩阵乘法性质所以 问题可以转化为

 

        这里是矩阵形式,其实就已经和上面用最大方差理论(文章最上边最大投影方差写法是向量形式)等价了,再使用同样的步骤就可以求得最终的投影空间,最佳投影方向就是最大特征值所对应的特征向量。 

核主成分分析KernelizedPCA

         有时我们的数据并不是可以投影到线性超平面的,这时候就不能直接进行PCA降维,这里就需要用到支持向量机一样的核函数的思想,先把数据从n维映射到线性可分的高维N>n,然后再从N维降维到一个低维度n',这里的维度之间满足n' < n < N。

        通过映射φ将n维映射到N维。

        对于n维空间的特征分解:映射为

 

        通常φ不是显式的,计算的时候通过核函数完成。

        其中核函数有

 

PCA总结

        为了克服PCA的一些缺点,也衍生出了很多PCA的变种,包括上述提到的KPCA。

PCA的主要优点有:

(1)仅通过方差衡量信息量,不受数据集以外因素影响。

(2)各主成分之间正交,消除可能出现的低秩、或者原始数据成分间相关的可能。

(3)计算方法简单,易于实现。

主要缺点:

(1)降维后各个特征维度的含义具有一定的模糊性,数据的可解释性没有原始样本的特征强。(可解释性变弱)

(2)方差小的非主成分可能含有对样本差异的重要信息(可能丢失强力特征),因降维丢弃后可能对后续处理有影响。

参考:http://blog.codinglabs.org/articles/pca-tutorial.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355307.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号