数据降维PCAmatlab
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(一)数据降维——主成分分析(PCA)
本文主要目的是了解PCA的计算流程以及MATLAB自带的PCA函数参数说明,从数据的计算过程了解PCA的结果。借鉴其他人工作,在此做一些总结,希望对他人有所帮助。
PCA思想:利用降维的思想,把多个特征转化为少数的几个综合特征,其中每个成分都是原始变量的线性组合,且各成分之间互不相关,从而这些成分能够反映原始变量的绝大部分信息,且所含信息互不重叠。
PCA过程:1矩阵标准化。2.计算标准化的矩阵协方差;3计算协方差矩阵的特征值和特征向量,并按照特征值从大到小排序;4.根据要求(这一步计算贡献率)选取降多少维,计算标准化矩阵*特征向量的个数,即为所要将的维数。(即我们最终所要的数据)1)验证:MATLAB(pca函数),数据hald
load hald
[coeff,score,latent,tsquared,explained,mu] = pca(ingredients);
coeff为主成分系数,也是特征向量的按照特征值从大到小排序。
Score为主成分分数,为标准化的数据*coeff
Latent为主成分方差,即为从大到小排列的特征值。
Tsquared为H otelling’s T-Squared Statistic,标准化的score的平方和(每一行)
Explained每个主成分的贡献率,我们可以看出前两个加在一起,一共97%多,即前两个成分都能表示数据的大部分信息。
Mu:X的每一列的均值。
以上是MATLAB自带的函数。接下来进行验证。
数据ingredient中心化
计算得分:
我们发现score=F,表明能反推到原始数据(注意此结果不是唯一,接下来会表明);至此,那么什么数据是我们想要的呢?我们知道我们要前两个主成分。最终的结果是score的前两列就可以了(这才是我们进行PCA主要的目的)。
2)我们重新编写程序,看看有何差异
1.数据中心化,我们得到X;
2.计算协方差;
3.计算协方差的特征值和特征向量并对特征值从大到小排序
问题来了,我们发现特征值在V中从小到大排序,对特征值从大到小排序,并保持为列向量(latent),使用fliplr对U进行左右翻转,我们发现第二主成分与coeff中第二主成分的值相反,其他一致(如果维度更高的话,相反的列更多),不要着急。
4.计算score_1。
我们发现score与score_1的第二主成分相反,其他一致。我们进行和上述一样的验证,可
以发现
结果一致,也可以反推到原始数据,这里就不做计算,至此我们发现我们得到两个结果,这是由于特征分解值不唯一导致的。
最后
与原始的结果一致,至此,希望能从数据的角度来理解PCA,谢谢!O(∩_∩)O哈哈~