PCA主成分分析 提取主成分,过滤噪音

PCA(主成分分析)通过正交变换将高维数据转换为线性不相关的主成分,以降低计算维度。PCA通过最大化每个维度的方差来选择主要成分,过滤掉噪声。在机器学习中,去除无关紧要的变量能提升模型效率。PCA涉及计算数据的协方差矩阵,然后进行特征值分解。通过SVD(奇异值分解)可以实现PCA,SVD找到所有基础向量并忽略不重要的部分。PCA的主要成分是数据中具有较大方差的方向,表示数据的差异性,而小方差的特征可能被视为噪声。
摘要由CSDN通过智能技术生成

前一篇提到的人脸识别中,我们在使用SVM支持向量机做人脸分类之前使用到PCA提取人脸数据中的主要成分,降低计算的维度,那么具体PCA是如何提取的呢?下文了解一下。

PCA is a method to project data in a higher dimensional space into lower dimensional space by maximizing the variance of each dimension --wiki
PCA is mostly used as a tool in exploratory data analysis and for making predictive models. It is often used to visualize genetic distance and relatedness between populations. PCA is either done by singular value decomposition of a design matrix or by doing thefollowing 2 steps:

  1. calculating the data covariance( or correlation) matrix of the original data
  2. performing eigenvalue decomposition(特征值分解) on the covariance matrix(协方差矩阵).–wiki

主成分分析,是一种统计方法,通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。对于这些成分,有些就显得没有那么必要。那么我们可以从这些成分中挑取比较有用的,而对于我们模型的训练作用不大的可以去除掉。这个过程其实也是一个降维的过程,对高维度的数据集进行降维,减少一些信息含量,保留主要的那些维度。主要的那些维度是指在这些维度上具有更大的差异,而对于那些差异化不大的特征,有时候反而会影响我们的模型学习,而成为一种噪音,也会影响我们training时候的速度。所以在机器学习的过程中,去掉那些无关紧要的变量会使得我们的学习模型效率提高。

因此我们要找到那些差异化比较大的特征,也就是说在表示它的特征的这一系列数中,它的variance(方差:是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量)是比较大的,比较离散的,而对于那些不明显的特征,用数据来衡量他们的这种特征程度的话,他们更容易聚集在一起,而不那么离散,也就是variance的值很小。下面使用代码画图来形象地了解一下。

%matplotlib inline 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

rng=np.random.RandomState(1)
X=np.dot(rng.rand(2,2),rng.rand(2,200)).T
plt.scatter(X[:,0],X[:,1])
plt.axis('equal')

先画出散点图,观察一下我们的samples:
在这里插入图片描述
Numpy.dot(a,b,out=None): do product of two arrays.
就是两个矩阵的乘积,A矩阵的第一行乘以B矩阵的第一列所得的元素的和作为新矩阵C的第一列中第一行的数,A矩阵第二行乘以B矩阵第一列所得元素的和作为C矩阵的第一列中第二行的数,以此类推。
Numpy.random.RandomState.rand(2,200) random values in a given shape, 产生一个2x200的矩阵。矩阵中的每一个element(元)都是随机产生的介于0到1之间的一个数。
X=np.dot(rng.rand(2,2),rng.rand(2,200)).T
这个代码的意思是先随机产生两个点,然后再用这两个点进行一个列变换(左乘行变换,右乘列变换)产生与左边矩阵具有相同行,与右乘的矩阵右相同列的shape为2x200的新矩阵,可以知道这个新的矩阵中的每个点的x或y坐标都不会大于2(1x1+1x1=2)。尾部的.T进行了矩阵的转置,使得矩阵从2x200的shape变成200x2。
使用PCA来解出上图中散点的主成分,图中每个点需要两个参数(x,y坐标)才能表达准确,那么对于该图上的点来说,number of components=2,有两个成分。

from sklearn.decomposition import PCA
pca=PCA(n_components=2)
pca.fit(X)

看起来只有三行代码,但是相关的计算几乎全在里面了。

Sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver=‘auto’, tol=0.0, iterated_power=

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值