![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_数据](https://file.cfanz.cn/uploads/jpeg/2022/09/29/13/6W61L784e8.jpeg)
我们在进行数据分析时,往往会发现数据具有很多种属性,比如某类型饼干的口味、加工方式、保质期、价格、购买人群等等。每一种属性就代表该数据在某一维度上的数值。多维度的数据无疑会增加数据的准确性与可靠性,但也给我们的计算带来麻烦。
主成分分析(Principal Component Analysis,PCA)是一种常用的数据分析方法,通常用于提取数据的主要特征分量,从而完成对高维数据进行降维的过程。
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_02](https://file.cfanz.cn/uploads/jpeg/2022/09/29/13/E96Cc5079Y.jpeg)
PCA对数据的降维不是简单的维度挑选,而是将m维的数据映射到n维上(n<m),并且保证得到的n维数据仍能准确表示原数据特征。
例如现在我们的数据如下图所示,x1,x2代表原数据的两个维度。这时候我们看图像,也不好说x1,x2哪个特性更能代表数据特征。
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_数据_03](https://file.cfanz.cn/uploads/png/2022/09/29/13/363X847E4T.png)
我们再一看,好像原数据也可以用y1,y2两个新维度表示。如下图,而且此时y1维度能体现的信息量(variance)远比y2维度大。这时我们就可以把x1,x2两个维度的数据投影到y1维度上,放弃y2维度上的数据特征,从而达到降维的目的。找到y1方向的过程就是PCA实现的过程。
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_04](https://file.cfanz.cn/uploads/png/2022/09/29/13/bc0N6V0e9O.png)
如下图,e为投影方向,xk’为初始点xk投影到e方向上的投影点。
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_05](https://file.cfanz.cn/uploads/png/2022/09/29/13/91G3BeN22I.png)
经过理论推导(下面有推导过程,我先把结论写在前面),我们发现只要计算矩阵。
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_06](https://file.cfanz.cn/uploads/png/2022/09/29/13/X6PC341eAc.png)
(其中n为x点个数)的特征值,那么在这些特征值中最大者对应的特征向量方向,就是我们要求解的e的方向。
数学推导过程如下(可不看):
我们取αk为投影点到坐标原点的距离,且e向量模长为1。
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_数据_07](https://file.cfanz.cn/uploads/png/2022/09/29/13/669WCRJ1a4.png)
以所有初始点与投影点间欧式距离之和最小为求解目标
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_08](https://file.cfanz.cn/uploads/jpeg/2022/09/29/13/2e45d8TBA1.jpeg)
取
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_09](https://file.cfanz.cn/uploads/png/2022/09/29/13/ZeO38F48c3.png)
这样我们的推导目标从求J(e)最小值转化为求
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_数据_10](https://file.cfanz.cn/uploads/png/2022/09/29/13/5663842808.png)
拉格朗日乘数法,u对e求导后等于0
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_11](https://file.cfanz.cn/uploads/png/2022/09/29/13/98WMD8WfTe.png)
可以看出,λ为矩阵S的特征值,e为对应的特征向量
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_12](https://file.cfanz.cn/uploads/png/2022/09/29/13/2f45a5c81R.png)
所以PCA问题的问题求解就是求矩阵S特征值的最大值。
我们以实际数学问题为例,我们现在有如下数据点:
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_13](https://file.cfanz.cn/uploads/jpeg/2022/09/29/13/cIYM6Qde6R.jpeg)
我们对S特征值计算,发现有(0.7061,0.7081)和(-0.7081,-0.7061)两条特征向量,对应特征值为0.1934和1.7951。那么我们选取对应特征值大的(-0.7081,-0.7061)特征向量为最优投影方向。
大致为(1,1)方向。
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_14](https://file.cfanz.cn/uploads/jpeg/2022/09/29/13/L31149Hb9a.jpeg)
如下图,我们看到投影到(0.7071,0.7071)向量上的数据大致呈正态分布。
![[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_15](https://file.cfanz.cn/uploads/jpeg/2022/09/29/13/328af6391M.jpeg)
降维对于维度较高的数据集是很有必要的,虽然部分数据被舍弃了,但是舍弃这部分信息之后能使样本的采样密度增加,这正是降维的重要动机。
另一方面,当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将他们舍弃能在一定程度上起到去噪的效果。
MATLAB代码
微信扫描下方二维码即可提取代码:









