Hey
PCA(主成分分析法)
- 一个非监督的机器学习算法
- 主要用于数据的降维
- 通过降维,可以发现更便于人类理解的特征
- 可视化,去噪
注意pca只能demean,而不能使用数据标准化(StandardScaler),使用后会出现var为相等的情况
确定主成分—主方向是某个方向的数据的方差最大—实质上求的是特征向量—-拉格朗日余子式
one-hot编码—就是将变量变成01的形式方便处理
PCA(Principal Component Analysis)数据降维的方法
- 他可以通过线性变换将原始数据变换为一组各维度线性无关的表示,以此来提取数据的主要线性成分
- 线性无关是因为构建的特征轴是正交的
- 主要线性分量,
- PCA解释方差,对离群点很敏感,少量原远离中心的点对方差有很大的影响,从而也对特征向量有很大的影响
PCA实现
- 去除平均值(demean)
每组数据都减去每组数据的平均值 - 计算协方差矩阵(也可以通过梯度上升法)
矩阵的对角线是每组数据的方差,协方差是衡量两个变量同时变化的变化程度,协方差大于0表示x和y变化相同,小于0,表示一个增加,另一个减少。如果x和y是统计独立的,那么二者之间的协方差就是0;但是协方差是0,并不能说明x和y是独立的。协方差绝对值越大,两者对彼此的影响越大,反之越小。协方差是没有单位的量
保留最重要的k个特征(通常k要小于n),也可以自己制定,也可以选择一个阈值,然后通过前k个特征值之和减去后面n-k个特征值之和大于这个阈值,则选择这个k 计算协方差矩阵的特征值和特征向量
将特征值排序
将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵- 保留前N个最大的特征值对应的特征向量
将数据转换到上面得到的N个特征向量构建的新空间中(实现了特征压缩)
PCA原理
其实PCA的本质就是对角化协方差矩阵。有必要解释下为什么将特征值按从大到小排序后再选。首先,要明白特征值表示的是什么?在线性代数里面我们求过无数次了,那么它具体有什么意义呢?对一个n*n的对称矩阵进行分解,我们可以求出它的特征值和特征向量,就会产生n个n维的正交基,每个正交基会对应一个特征值。然后把矩阵投影到这N个基上,此时特征值的模就表示矩阵在该基的投影长度。特征值越大,说明矩阵在对应的特征向量上的方差越大,样本点越离散,越容易区分,信息量也就越多。因此,特征值最大的对应的特征向量方向上所包含的信息量就越多,如果某几个特征值很小,那么就说明在该方向的信息量非常少,我们就可以删除小特征值对应方向的数据,只保留大特征值方向对应的数据,这样做以后数据量减小,但有用的信息量都保留下来了。PCA就是这个原理
https://blog.csdn.net/u012162613/article/details/42177327?utm_source=blogxgwz2
http://www.cnblogs.com/zhangchaoyang/articles/2222048.html
https://blog.csdn.net/u013719780/article/details/78352262?utm_source=blogxgwz1
https://blog.csdn.net/watkinsong/article/details/38536463?utm_source=blogxgwz1
https://blog.csdn.net/bon_mot/article/details/76889559?utm_source=blogxgwz4
https://blog.csdn.net/u013082989/article/details/53792010?utm_source=blogxgwz3
https://www.cnblogs.com/zy230530/p/7074215.html
pca从高维数据向低维数据映射
X(mn) . W(kn).T
pca降维后肯定会损失一定的信息的
PCA的sklearn的使用
1 | from sklearn.decomposition import PCA |
PCA也可以用于降噪和特征的提取
降噪
先用pca降维,然后在inverse_transform(),这样虽然特征信息损失了部分,但是也可以去噪