Machine Leanring-Principal Component Analysis(PCA)

Principal Component Analysis

方差:数据与平均数之差平方和的平均数。更多详见

Principal Component Analysis(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。

通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(如点和点之间的距离关系)都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,以此来保留更多的信息。可以证明,PCA是丢失原始数据信息最少的一种线性降维方式。(实际上就是最接近原始数据,但是PCA并不试图去探索数据内在结构)

PCA 的理论基础:

关于为什么协方差的特征向量就是 k 维理想特征,有3个理论,分别是:

1. 最大方差理论

2. 最小误差理论

3. 坐标轴相关度理论

这里简单描述下最大方差理论:

(1) 最大方差理论:

信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。因此我们认为,最好的 k 为特征既是将 n 维样本点转换为 k 维后,每一维上的样本方差都很大

下图5个样本点:(已做过预处理,均值为0,特征方差归一)

PCA 处理图解如下:

降维转换后:

上图中的直线就是我们选取的特征向量,上面实例中PCA的过程就是将空间的2维的点投影到直线上。

那么问题来了,两幅图都是PCA的结果,哪一幅图比较好呢?

先解释一下投影的概念:

红色点表示样例x(i),蓝色点表示x(i)在u上的投影,u是直线的斜率也是直线的方向向量,而且是单位向量。蓝色点是x(i)在u上的投影点,离原点的距离是<x(i),u>(即x(i)Tu或者uTx(i))由于这些样本点(样例)的每一维特征均值都为0,因此投影到u上的样本点(只有一个到原点的距离值)的均值仍然是0。

(2)最小误差理论:

根据最大方差理论,答案是降维后左图,其实也就是样本投影后间隔较大,容易区分。

其实从另一个角度看,左边的图每个点直线上的距离绝对值之和比右边的每个点到直线距离绝对值之和小,是不是有点曲线回归的感觉?其实从这个角度看,这就是最小误差理论:选择投影后误差最小的直线。

再回到上面的左图,也就是我们要求的最佳的 u ,前面说了,最佳的 u 也就是最佳的曲线,它能够使投影后的样本方差最大或者是误差最小。

另外,由于我们前面PCA算法第一步的时候已经执行对样本数据的每一维求均值,并让每个数据减去均值的预处理了,所以每个特征现在的均值都为0,投影到特征向量上后,均值也为0.因此方差为:

最后的等式中中间的那部分其实就是样本方差的协方差矩阵(xi 的均值为 0)

由于 u 是单位向量,得到

上式两边同乘以 u,得到:

于是我们得到:

最佳投影直线就是特征值 λ 最大是对应的特征向量,其次是 λ 第二大对应的特征向量(求解的到的特征向量都是正交的)。其中 λ 就是我们的方差,也对应了我们前面的最大方差理论,也就是找到能够使投影后方差最大的直线



Coursera上Ag讲解部分:

Principal Component Analysis Problem Formulation

PCA 所做的就是寻找 一个投影平面 ,对数据进行投影, 使得这个能够最小化 。另外, 在应用PCA之前通常的做法是先进行均值归一化和特征规范化 ,使得特征x1和x2均值为0, 数值在可比较的范围之内。

更一般的情况是我们有 n 维的数据想降到 k 维 。在这种情况下, 我们不仅仅只寻找单个的向量 来对数据进行投影 ,我们要找到 k 个方向 来对数据进行投影 ,从而最小化投影误差。

(1)假设我们要从2维数据降维至1维数据,那么PCA算法的目的是找到一个直线,使得所有样本投影到这条直线的距离误差最小。

(2) 专业解释:

- 假设我们要从2维数据降至1维数据,那么PCA算法的目的是找到一个向量u(1)使得所有数据样本投影到这个向量时的投影误差最小。

- 假设我们要从n维数据降至k维数据,那么PCA目的是找到一组向量u(1),u(2),u(3),.......u(k)使得所有数据样本投影到这个向量时的投影误差最小。

(3)PCA和线性回归的区别

  • PCA和LR是不同的算法,PCA计算的是投影误差,而LR计算的是预测值与实际值的误差。
  • PCA中只有特征没有标签数据y,LR中既有特征样本也有标签数据。

Principal Component Analysis Algorithm

(1)数据预处理:

我们首先应该计算出 每个特征的均值 μ 然后我们用 x - μ 来替换掉 x 这样就使得 所有特征的均值为0

(2)PCA算法目的:

PCA算法是找到一组向量u(1),u(2),u(3),.......u(k)使得所有数据样本投影到这个向量时的投影误差最小。

(3) PCA算法

  • 计算协方差矩阵Σn×n

    Σ=1m∑i=1n(x(i))(x(i))T

    -利用SVD奇异值分解分解协方差矩阵

    [U,S,V]=svd(Σ)

    -得到矩阵

    Un×n=???|u(1)||u(2)||u(3)||...||u(n)|???

    在实际运算中也可以用eig()函数代替SVD函数,因为协方差矩阵始终为对称正定矩阵(n*n),一定会存在特征值,奇异值矩阵分解主要是针对那些不是方阵的矩阵进行的一种分解。

    (4)PCA降维

    前面算出的新特征向量组成的矩阵为nxn维的,为了降维,我们可以只取出前k个向量,然后将原始数据样本x(1),x(2),x(3),.......x(m)(x∈Rn) 转化为新的特征向量下的新数据样本z(1),z(2),z(3),.......z(m)

    z=UTreducex=???|u(1)||u(2)||u(3)||...||u(k)|???Tx

    (5)PCA算法总结

  • 对数据进行均值归一化,确保每一个特征的均值为0,根据实际情况看是否做特征缩放,以使得所有特征之间具有比较行。
  • 计算所有样本之间的协方差矩阵
  • 利用奇异值分解对协方差矩阵进行分解求出新的特征向量空间
  • 然后取前k个向量作为新的特征向量空间,将原始特征空间中的数据样本x转化为新特征空间中的新的数据样本z。(注意不包括偏差项x0)


Applying PCA



Reconstruction from Compressed Representation

之前讲了如何利用PCA算法将高维数数据降维至低维数据,现在我们想如何将压缩后的数据转化为开始的高维数据。之前的新样本数据为:

z=UTreducex=???|u(1)||u(2)||u(3)||...||u(k)|???Tx

转化为原始高维数据则为:

xappox=Ureducez

Choosing the Number of Principal Components

在 PCA 算法中 我们把n维特征变量 降维到k维特征变量 这个数字k也被称作 主成分的数量 或者说是我们保留的主成分的数量 ,如何选择k?

  1. 平均平方映射误差 (Average Squared Projection Error)

    1m∑i=1m||x(i)?x(i)approx||2

  2. 数据的总变差 (Total Variation)

    frac1m∑i=1m||x(i)||2

    则有:

    1m∑mi=1||x(i)?x(i)approx||21m∑mi=1||x(i)||2≤0.01(1%)1m∑mi=1||x(i)?x(i)approx||21m∑mi=1||x(i)||2≤0.05(5%)1m∑mi=1||x(i)?x(i)approx||21m∑mi=1||x(i)||2≤0.1(10%)

一个常见的 选择K值的经验法则是选择能够使得它们之间的比例小于等于0.01的最小的k值 ,换言之 一个非常常用的 ,选择k值的方法是 :我们希望平均平方映射误差, 就是x和其映射值之间的平均距离除以数据的总变差, 就是数据的变化有多大。

该方差的步骤是:

选择不同的k值,运行PCA计算Xapprox,然后代入上述方法计算是否满足上述条件。

(2)利用奇异值进行计算

当用SVD对样本之间的协方差矩阵进行计算时,可以求出协方差矩阵的奇异值Sij,则通过计算贡献率

∑ki=1Sij∑ni=1Sij

有:

1?∑ki=1Sij∑ni=1Sij=1m∑mi=1||x(i)?x(i)approx||21m∑mi=1||x(i)||2

(3)计算不同K值对应的累积贡献率,可以选择主成分的数量。例如我要保留原始数据99%的差异性,则令:

∑ki=1Sij∑ni=1Sij≥0.99

Advice for Applying PCA

(1)利用PCA加速监督学习算法

  • 将训练样本的特征向量提取出来(不包括标签数据)
  • 运行PCA将原始训练样本x(1),x(2),x(3),.......x(m)(x∈Rn)映射到降维后新数据样本z(1),z(2),z(3),.......z(m)(z∈Rk)中
  • 将新的训练样本和标签数据重新组合重新的训练样本进行学习求解最优参数θ
  • 如果有新样本加入,则首先要对新样本进行PCA映射,然后将得到的新样本z代入到模型中进行计算

    PCA只运行到训练样本中,不用在交叉验证数据集和测试数据集中,当求得了映射关系后,可以将这种关系直接应用到交叉验证数据集和测试数据集中

    (2)PCA的应用

    数据压缩

    • 压缩数据,减小存储空间和内存空间
    • 加速学习算法

    可视化

    (3)不建议利用PCA防止过拟合问题

    PCA可以减少特征的数量(维数),所以在理论上讲可以防止过拟合问题,但是并不是最好的方法。最好的方法还是利用规则化参数对算法防止过拟合。

    (4)何时使用PCA

    并不是所有的问题都是要对原始数据进行PCA降维,首先应看在不使用PCA的情况下算法的运行情况,如果未达到所期望的结果,再考虑PCA对数据进行降维。

    (5) 总结与讨论

    PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。

    PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。

    但是,这一点同时也可以看做是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等放啊对处理过程进行干预,可能会得不到预期的效果,效率也不高。

    黑点表示采样数据,排列成转盘的形状

    容易想象,该数据的主元是(P1,P2)。但是这显然不是最优和最简化的主元。(P1,P2)之间存在着非线性的关系。根据先验的知识可知旋转角θ是最优的主元(类比极坐标)。则在这种情况下,PCA就会失效。但是,如果加入先验的知识,对数据进行某种规划,就可以将数据转化为以θ为线性的空间中。这类根据先验知识对数据预先进行非线性转换的方法就成为Kernel-PCA,它扩展了PCA能够处理的问题的范围,又可以结合一些先验约束,是比较流行的方法。

    有时数据的分布并不是满足高斯分布。在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的。在寻找主元不能将方差作为衡量重要性的标准。要根据数据的分布情况选择合适的描述完全分布的变量,然后根据概率分布:

    P(y1,y2)=P(y1)P(y2)

    来计算两个向量上数据分布的相关性。等价的,保持主元间的正交假设,寻找的主元同样要使P(y1,y2)=0。这一类方法被称为独立主元分解(ICA)

    这种情况下,方差最大的方向并不是最优主元方向。

参考:PCA–主成分分析(Principal components analysis)-最大方差解释

【Stanford机器学习笔记】12-Dimensionality Reduction

机器学习实战ByMatlab(2):PCA算法

四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

时间: 2024-08-07 18:43:11

Machine Leanring-Principal Component Analysis(PCA)的相关文章

[zz] Principal Components Analysis (PCA) 主成分分析

http://matlabdatamining.blogspot.com/2010/02/principal-components-analysis.html 英文Principal Components Analysis的博客,写的挺好,担心以后打不开,全文转载. Principal Components Analysis Introduction Real-world data sets usually exhibit relationships among their variables.

主成分分析(Principal Component Analysis,PCA

主成分分析(Principal Component Analysis,PCA)是将多个变量通过线性变换以选出较少几个重要变量的多元统计分析方法. 原理:在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性.人们自然希望变量个数较少而得到的信息较多.在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠.主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量

Andrew Ng机器学习公开课笔记&ndash;Principal Components Analysis (PCA)

网易公开课,第14课 notes,10 之前谈到的factor analysis,用EM算法找到潜在的因子变量,以达到降维的目的 这里介绍的是另外一种降维的方法,Principal Components Analysis (PCA), 比Factor Analysis更为直接,计算也简单些 主成分分析基于, 在现实中,对于高维的数据,其中有很多维都是扰动噪音,或有些维是冗余的,对描述数据特征没有作用 比如我们在描述汽车速度的时候,用不同的单位mph or kph作为两维,其实只需要其中一维即可

PCA(principal component analysis)主成分分析法

<Aggregating local descriptors into a compact image representation>论文笔记 在论文中,提取到VLAD特征后,要对特征向量进行PCA降维,就是用一个大小为D' * D的矩阵M,对VLAD特征向量x做变换,降维后的vector是x' = Mx,x'的大小是D'维.矩阵M是由原样本的协方差矩阵的D'个特征向量构成. 为什么M要是特征向量的矩阵呢? 根据PRML中的内容,理解如下: 1,Maxinum Variance Formula

主成分分析(principal components analysis, PCA)

原理 计算方法 主要性质 有关统计量 主成分个数的选取 ------------------------------------------------------------------------------------------------------------------------ http://my.oschina.net/gujianhan/blog/225241 ---------------------------------------------------------

用PCA降维 (Principal Component Analysis,主成分分析)

参考资料:Mastering Machine Learning With scikit-learn 降维致力于解决三类问题.第一,降维可以缓解维度灾难问题.第二,降维可以在压缩数据的同时让信息损失最 小化.第三,理解几百个维度的数据结构很困难,两三个维度的数据通过可视化更容易理解 PCA简介 主成分分析也称为卡尔胡宁-勒夫变换(Karhunen-Loeve Transform),是一种用于探索高维数据结 构的技术.PCA通常用于高维数据集的探索与可视化.还可以用于数据压缩,数据预处理等.PCA可

Principal components analysis(PCA):主元分析

在因子分析(Factor analysis)中,介绍了一种降维概率模型,用EM算法(EM算法原理详解)估计参数.在这里讨论另外一种降维方法:主元分析法(PCA),这种算法更加直接,只需要进行特征向量的计算,不需要用到EM算法. 假设数据集表示 m 个不同类型汽车的属性,比如最大速度,转弯半径等等. 对于任意一辆汽车,假设第 i 个属性和第 j 个属性 xi 和 xj 分别以 米/小时 和 千米/小时 来表示汽车的最大速度,那么很显然这两个属性是线性相关的,所以数据可以去掉其中一个属性,即在 n-

核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程

KPCA,中文名称"核主成分分析",是对PCA算法的非线性扩展,言外之意,PCA是线性的,其对于非线性数据往往显得无能为力,例如,不同人之间的人脸图像,肯定存在非线性关系,自己做的基于ORL数据集的实验,PCA能够达到的识别率只有88%,而同样是无监督学习的KPCA算法,能够轻松的达到93%左右的识别率(虽然这二者的主要目的是降维,而不是分类,但也可以用于分类),这其中很大一部分原因是,KPCA能够挖掘到数据集中蕴含的非线性信息. 1. 理论部分 KPCA的公式推导和PCA十分相似,只

解释一下核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程(转载)

KPCA,中文名称"核主成分分析",是对PCA算法的非线性扩展,言外之意,PCA是线性的,其对于非线性数据往往显得无能为力,例如,不同人之间的人脸图像,肯定存在非线性关系,自己做的基于ORL数据集的实验,PCA能够达到的识别率只有88%,而同样是无监督学习的KPCA算法,能够轻松的达到93%左右的识别率(虽然这二者的主要目的是降维,而不是分类,但也可以用于分类),这其中很大一部分原因是,KPCA能够挖掘到数据集中蕴含的非线性信息. 今天突然心血来潮,想重新推导一下KPCA的公式,期间遇