0
点赞
收藏
分享

微信扫一扫

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_数据


我们在进行数据分析时,往往会发现数据具有很多种属性,比如某类型饼干的口味、加工方式、保质期、价格、购买人群等等。每一种属性就代表该数据在某一维度上的数值。多维度的数据无疑会增加数据的准确性与可靠性,但也给我们的计算带来麻烦。

主成分分析(Principal Component Analysis,PCA)是一种常用的数据分析方法,通常用于提取数据的主要特征分量,从而完成对高维数据进行降维的过程。

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_02

PCA对数据的降维不是简单的维度挑选,而是将m维的数据映射到n维上(n<m),并且保证得到的n维数据仍能准确表示原数据特征

例如现在我们的数据如下图所示,x1x2代表原数据的两个维度。这时候我们看图像,也不好说x1x2哪个特性更能代表数据特征。

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_数据_03

我们再一看,好像原数据也可以用y1y2两个新维度表示。如下图,而且此时y1维度能体现的信息量(variance)远比y2维度大。这时我们就可以把x1x2两个维度的数据投影y1维度上放弃y2维度上的数据特征,从而达到降维的目的找到y1方向的过程就是PCA实现的过程

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_04

如下图,e为投影方向,xk’为初始点xk投影到e方向上的投影点。

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_05

经过理论推导(下面有推导过程,我先把结论写在前面),我们发现只要计算矩阵。

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_06

(其中nx点个数)的特征值,那么在这些特征值中最大者对应的特征向量方向,就是我们要求解的e的方向。

数学推导过程如下(可不看)

我们取αk为投影点到坐标原点的距离,且e向量模长为1。


[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_数据_07

以所有初始点与投影点间欧式距离之和最小为求解目标

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_08

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_09

这样我们的推导目标从求J(e)最小值转化为求

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_数据_10

拉格朗日乘数法,u对e求导后等于0

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_11

可以看出,λ为矩阵S的特征值,e为对应的特征向量

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征值_12

所以PCA问题的问题求解就是求矩阵S特征值的最大值。


我们以实际数学问题为例,我们现在有如下数据点:

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_13

我们对S特征值计算,发现有(0.7061,0.7081)和(-0.7081,-0.7061)两条特征向量,对应特征值为0.1934和1.7951。那么我们选取对应特征值大的(-0.7081,-0.7061)特征向量为最优投影方向。


大致为(1,1)方向。

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_14


如下图,我们看到投影到(0.7071,0.7071)向量上的数据大致呈正态分布。

[DM]数据预处理-PCA主成分分析2(附MATLAB代码)_特征向量_15

降维对于维度较高的数据集是很有必要的,虽然部分数据被舍弃了,但是舍弃这部分信息之后能使样本的采样密度增加,这正是降维的重要动机。


另一方面,当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将他们舍弃能在一定程度上起到去噪的效果。

MATLAB代码

微信扫描下方二维码即可提取代码:


举报

相关推荐

0 条评论