PCA(主成分分析)--降维的基础算法

一.原理简介

PCA主成分分析,是一种使用较为广泛的数据降维算法,主要思想是将n维数据特征映射到k维上,

这k维全新的正交数据特征称为主成分;

PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是

密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与

第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。

依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴我们发现,大部分方差都

包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,

只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特

征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

二.算法流程

输入:数据集X={x1,x2,x3,…,xn},需要降维到k维;

Ⅰ.样本中心化(即每一个特征都减去各自的均值);

Ⅱ.计算协方差矩阵 C=\frac{1}{n}X*X^T(实际上除n或者n-1都一样,因为样本数据较大时两者比较接

近,也可以不除,因为同比例扩大缩小效果均一样);

Ⅲ.对协方差矩阵进行对角化,并将对角线上的特征值从大到小进行排序,选择其中k个最大的,将

该k个特征向量分别作为特征向量矩阵w;

Ⅳ.用Y=X*w就得到了降维后的新空间;(至于左乘还是右乘取决于数据是行向量还是列向量,列向

量就变成左乘w的转置)。

此外,值得注意的是并不是所有矩阵都可以用特征值分解(即对角化协方差矩阵),必须要求有n

个线性无关的向量,如果不满足这种情况怎么办呢,这时候我们可以采用奇异值分解的方法

SVD),此方法可对所有矩阵进行分解,但复杂情况视情况而定。

三.证明最小重构误差和最大化投影方差等价

前面我们特征分解样本的协方差矩阵,而协方差矩阵的对角线上中心化后刚好是样本的投影方差,

并取前k个特征值对应的特征向量作为投影矩阵2,解决了PCA的最大可分性问题。接下来从最小重

构误差入手,即使得样本离我们的超平面越近越好,解决PCA的最小重构问题。

首先假设数据集为n维,共有m组数据(x1,x2,x3,…,xm),注意这里每一个 x_{i}均为n维的列向量;

原坐标系为(w1,w2,w3,…,wm),其中w为标准正交基,即 ||w||_{2}=1w^Tw=1;

将数据从n维降到p维,则新的坐标系为(w1,w2,w3,…,wp),样本点 x_{i}在p维坐标系里的表示为

z_{i}=x_{i}*W;而若要恢复数据,则x_{i}=W*z_{i}

需要注意的是X是n*m的矩阵,W是m*p的矩阵,此处均采用的是列向量;

则目标函数为:                        

                        ​​​​​​​        ​​​​​​​        

则优化求解过程如下所示:

由于优化的是W,所以我们加上约束条件  W^TW=I,利用拉格朗日乘子法如下所示:

        ​​​​​​​        ​​​​​​​        

对W求导令其为0,我们可以得到以下等式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                

于是原问题也转化为了特征分解求X的协方差矩阵的特征向量的问题,由此证明两个问题是等价的。这里我们也是取前p个特征值最大对应的特征向量组成W。

当然,不难发现,从本质上说特征向量其实表示的是数据不变的特征方向,而特征值表示数据在这个方向变 化的幅度,也就是该方向上的方差;而协方差矩阵我们选择 p 个最大的特征值,也就是保留了变化最显著的 p 个方向,这样我们可以最大程度地保留数据的重要信息,同时去除一些不 必要的,次要的特征,从而达到降噪的目的。

四.PCA用于人脸识别

PCA用于人脸识别主要是靠它的降维矩阵,通过设置降维的维度选取不同数量的特征向量组成投影矩阵。人脸识别的大致过程为:

(1)首先将数据集按一定比例划分为训练集和测试集;

(2)将人脸图片按列向量读入成一个矩阵;

(3)用PCA从训练集中提取一定数量的特征向量组成投影矩阵;

(4)用测试集的人脸图片进行测试,即将其用得到的特征矩阵进行投影,用分类器对其进行分类,与正确标签进行比较正确与否,从而计算人脸识别的正确率。

值得注意的是:我们一般用KNN(K临近分类器)进行分类。

详细代码可见:Machine_Learning/code/PCA at main · breakthrougher/Machine_Learning (github.com)

----- 以上为本人学习机器学习这门课总结出的一些知识点和手敲的代码,有错误或者疑问可以评论区交流,欢迎指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值