1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java做主成分分析_主成分分析PCA

java做主成分分析_主成分分析PCA

时间:2020-03-28 18:27:09

相关推荐

java做主成分分析_主成分分析PCA

PCA(Principal Component Analysis),即主成分分析,一种常用于数据降维分析的方法。要理解PCA的原理,首先需要理解矩阵变换的意义。

矩阵变换,有两种意义:1,在当前坐标系下的向量,经过矩阵M变换后,结果为被变换的向量在当前坐标系下的新向量。

2,保持向量不变,矩阵M对当前坐标系进行变换,结果为当前向量在新坐标系下的向量表示。该新坐标系即矩阵M,变换后的向量是在新坐标系下各坐标轴上的投影。

以二维空间样本为例,有如下一批样本:

我们需要将该二维样本数据转换到一维空间中,只分析一维空间样本数据。如果我们直接在当前坐标系下分析该样本,把所有样本投影到X或者Y轴的任意一个一维空间上,样本数据都会有较大的损失。如果我们能够找到一个变换矩阵M,使得当前坐标系旋转到下图X' Y'位置:

此时,所有样本数据在X'坐标轴上的投影达到最大,分散的最开。因此直观上X' Y'坐标系就是我们需要寻找的最优变换M。

如何得到这个变换矩阵M?假设我们有如上图一组样本数据A=(x,y),经过矩阵M变换后,样本数据在M坐标系下的投影变成了B=(x',y')。下面分析如何得到M:

(1)首先我们对样本做一次归一化处理(每个样本数据减去相应的样本均值)。这么处理的好处主要是方便后续计算样本方差和协方差。处理后的样本分布如下图所示:

(2)所以我们的目标是使得变换后的单个样本数据B在X' Y'上的投影最分散和最大化,也就是使得B=(x', y')中 |x'|或者|y'|最大,而 x'y' 趋近于0。进一步,所有样本数据,使得

或者

最大化,而

趋近于0。

对样本数据A=(x,y)来说,令C=

,对变换后的样本数据B=(x',y')来说,令D=

。那么,C和D的矩阵表示如下:

C=(

) D=(

)

可以看到C和D的主对角线上的元素就是(x,y)和(x',y')的方差。而非主对角线上元素就是(x,y)和(x',y')的协方差。这个C和D被称为C和D的协方差矩阵。

现在我们的目标是找到变换矩阵M,使得协方差矩阵D对角化。

(3)那么C,D和M是什么关系呢?

上式表明我们的目标变成:寻找一个变换矩阵M,使得MC

是一个对角矩阵。

又已知C是一个对称矩阵,由对称矩阵的性质可知,一定存在一组C的特征向量作为行组成的特征矩阵E,使得

=F,其中F是对角矩阵。

结论:这与我们的目标一致,我们要寻找的PCA变换矩阵M就是E,也就是原始样本数据A的协方差矩阵C的特征向量作为行组成的特征矩阵。

那么,下面我们总结一下PCA的步骤:

(1)样本数据归一化处理

(2)对归一化后的样本数据求出协方差矩阵C

(3)对协方差矩阵C求出其特征向量和特征值

(4)以特征值大小按行排列相应的特征向量,舍弃特征值较小的特征向量行,组成的矩阵就是需要找寻的降维后的变换矩阵M。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。