一、预备知识点
(1)均值描述的是样本集合的中间点。
(2)标准差给我们描述的则是样本集合的各个样本点到均值的距离的平均值是多少,我们可以理解为平均值这个点“向心力”或者“凝聚力”的强弱。也可以理解为“波动性”……
即标准差能反映一个数据集的离散程度。平均数相同的,标准差未必相同。
这里有一个点:就是标准差什么时候除以n,什么时候除以n-1
如果计算一个数据集的标准差,就除以n;如果想用样本来估计总体的标准差,就除以n-1
(3)方差 的计算是针对一维特征,即针对同一特征不同样本的取值来进行计算得到;而协方差则必须要求至少满足二维特征。可以说方差就是协方差的特殊情况。
故协方差的意义在于将两类比较“暧昧”的数据或者因素,证明其中的某种关系
if正相关,即A因素可能会促进B因素,A越大,B越大
if负相关,即A因素可能会抗拒B因素,A越大,B越小
else 为0,A因素与B因素相互独立,老死不相往来
也可以这么理解
数据集在某个基上的投影值(也是在这个基上的坐标值)越分散, 方差越大, 这个基保留的信息也就越多.
二、PCA实现
PCA的思想是将n维特征映射到k维上(k<n),这k维是全新的正交特征。这k维特征称为主元,是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n-k维特征。
基本流程实现如下:
输入:样本集D={x1,x2,……,xm}低维空间维数d'
过程:
1、对所有样本进行中心化
减去均值,除以标准差
2、计算样本的协方差矩阵XXT
为什么求协方差的特征值和特征向量?
大佬笔记:https://www.cnblogs.com/dengdan890730/p/5495078.html
3、对协方差矩阵XXT做特征分解
特征向量都归一化为单位向量
4、取最大的d'个特征值所对应的特征向量w1,w2,……,wd'
将样本点投影到选取的特征向量上。假设样例数为m,特征数为n,减去均值后的样本矩阵为DataAdjust(m*n),协方差矩阵是 n*n,选取的k个特征向量组成的矩阵为EigenVectors(n*k)。那么投影后的数据FinalData为
从将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵
为什么进行排序?
康行天下,喜欢的博主之一: https://www.cnblogs.com/makefile/p/pca.html
输出:投影矩阵W* = (w1,w2,……,wd')
参考链接:https://www.zhihu.com/question/27276029
https://blog.csdn.net/szu_hadooper/article/details/72844602
强烈推荐第二篇博文,对理解很有帮助,过段时间会来填补示例的坑,敬请期待