跟run哥一起学PCA
看看PCA
What is PCA?
PCA的目的就是找到一个坐标系,使得数据在只保留一个维度的时候,信息损失是最小的。
首先:去中心化(把坐标原点放在数据中心)
然后:找坐标系(找到哦啊方差最大的方向)
问题是:怎么找到方差最大的方向
为什么要做PCA
为什么要做主成分分析
在很多场景中需要对多变量数据进行观测,在一定程度上增加了数据采集的工作量。更重要的是:多变量之间可能存在相关性,从而增加了问题分析的复杂性。
如果对每个指标进行单独分析,其分析结果往往是孤立的,不能完全利用数据中的信息,因此盲目减少指标会损失很多有用的信息,从而产生错误的结论。
因此需要找到一种合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量之间存在一定的相关关系,因此可以考虑将关系紧密的变量变成尽可能少的新变量,使这些新变量是两两不相关的,那么就可以用较少的综合指标分别代表存在于各个变量中的各类信息。主成分分析与因子分析就属于这类降维算法。
伪代码
https://gitee.com/ni1o1/pygeo-tutorial/blob/master/12-.ipynb
协方差
算一手相关性
1 | # 定义一个函数,输入X,Y能得到X,Y之间的协方差 |
numpy实现
1 | C = np.cov(data_norm.T) |
计算协方差矩阵的特征向量和特征值
1 | #计算特征值和特征向量 |
协方差矩阵的特征向量就是R
计算投影
1 | #数据在主成分1上的投影坐标是Y |
最近重构性和最大可分性的思路
参考
https://blog.csdn.net/weixin_43312354/article/details/105653308