前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PCA的浅析与深入

PCA的浅析与深入

作者头像
用户1147754
发布2019-05-27 08:30:06
7040
发布2019-05-27 08:30:06
举报
文章被收录于专栏:YoungGyYoungGy

PART 1. 浅析PCA

1_1 PCA概述

PCA(Princile Component Analysis),中文名叫做主成成分分析,它的主要理论是:线性组合输入空间,以期找到一组标准正交基,实现坐标变换。 PCA的主要应用有以下几点:

  • 降维
  • 去噪

1_2 为什么要用PCA

首先,为了引入PCA,我们介绍如下几个场景:

  1. 设定因变量是学习成绩,自变量是学习时间、学习兴趣,建立因变量与自变量的数学模型,设为模型A;同时,我们分别将自变量只设定为学习时间或学习兴趣,分别建立模型B、C。容易发现,模型A、B、C都能够很好地预测学习成绩。
  2. 建立20*20的像素矩阵,对手写数字进行识别,那么对于一个样本,我们需要的维度高达400。
  3. 考虑一副简单的有规律可循的画面,但是不巧上面竟有几个惹人的黑点,我们想自动把黑点去除。

其次,简单分析下这三个场景。

对于场景1:学习时间与学习兴趣高度线性相关,所以我们只用一个自变量(二者之一),便能够很好地预测学习成绩。 对于场景2:如果是以400个像素作为输入空间,那么对于模型的计算是很复杂的。我们实际上书写数字的时候,对于特定的数字总会有一定的模式,我们会在既定模式中间产生微小的偏差(我们的脑子比较擅长理解这种模式),因此更好的输入空间应该是直接输入这种模式,而不是生硬地输入如此多的像素值。 对于场景3:简单的有规律可循的画面表明存在某种模式,而黑点正是背离了这模式的点。

最后,说下从场景中揭示的问题。

对于场景1,表明当输入变量线性相关度极高时(|r|>2n√|r|>\frac{2}{\sqrt{n}}),我们可以舍弃部分变量而不影响模型的精确度。 对于场景2,表明我们实际的输入空间虽然足够揭示问题(400维的像素点可以判断输入数字),但是不够有效率,不能够揭示真正的输入模式。 对于场景3:黑点正是背离了真正的输入模式。

总结,PCA是一个非常棒的工具,可以揭示输入数据的真正模式,既可以有效地降低数据的维度,也可以有效地去除噪声的干扰。

1_3 PA的直观理解

上面讲了很多真正的输入模式,那么一个问题很自然地产生了,什么是真正的输入模式呢? 我们,给它起了个名字,叫做PA(主成分)。

主成分,顾名思义,就是很重要的成分。 举2个例子,很容易明白。

第一个是三维空间。

这里写图片描述
这里写图片描述

由图,我们用三个维度X,Y,Z去描述这个三维空间中的点。然后,当我们仔细观察这些点后,发现这些点几乎都在如图的蓝色平面上,只有很少的点在蓝色平面外。 对于蓝色平面,我们建立正交的坐标向量X,Y,同时对于蓝色平面外的点,我们增加坐标向量Z去描述。 在这个问题中,[X,Y]可以说是问题的真正输入模式,是主成分,即用减少后的2维平面同样可以很好地描述原数据集。

第二个是二维空间。

这里写图片描述
这里写图片描述

由图,我们用2个维度去描述数据点,同时做出线性回归,并将数据点投影到回归线上。实际上,当数据点线性度足够高的时候,我们可以只用一个维度(图中的X)就可以很好的描述数据点的分布。 这个维度(蓝色的X),就是我们要找的真正输入模式,是主成分。



PART 2. 深入PCA

2_1 如何发现PC

2_1_1 PC的特点——方差大

首先,我们先简介描述数据的工具——平均值,方差,协方差。 平均值表示了数据的样本中心。 方差表示了数据的离散程度。 一般来说,平均值和方差便足以描述一维数据的大致特征了。 同时,为了描述二维数据的相关关系,我们引入协方差,表明二维数据变化的方向关系。

由上面二维、三维图,我们可以看到,主成分方向上,数据的离散程度更大,或者具体的说:数据点在主成分方向上的方差很大。

那么,为什么方差很大就是主成分,就能更好地描述数据呢?

2_1_2 方差大的好处

借用上面二维空间中的图,想象蓝色的向量是x,与其垂直的向量是y。 数据点分别在X,Y上做投影,很容易发现:X上的投影点离散,Y上的投影点密集。 想象极限情况,数据点完全线性分布,那么X上的投影点仍然保持原有的数据结构,而Y上的投影点则聚焦到了一起,变成了一个点。

所以说,主成分方向上,数据点的方差很大。 方差大,更有利于保持数据的原有结构不变。

2_1_3 如何找到方差大的PC

方差的表达式

首先,介绍一下数据。 先将数据减去其平均值,使得数据的平均值为0,这一步的作用是简化数学计算,使得协方差矩阵可以直接用点积来表示(后文中可以看到)。 设定数据集X∈Rm∗nX \in \mathbb{R}^{m*n},m表示样本点的数量,n表示样本点的维度。 在Rm∗n \mathbb{R}^{m*n}空间中,找到一个主成分方向e∈Rn∗1e\in \mathbb{R}^{n*1},将数据点投影到ee上,观察其在ee上的分布,即可找到对应该主成分方向的方差,表达式为

1m∑(x∗e−μx)2

\frac{1}{m}\sum (x*e-\mu_x)^2

优化最大方差,寻找主成分方向

由于μx=0\mu_x = 0(原数据的平均值为0,投影后数据的平均值为0)证明如下:

μx=1m∑(x∗e)=1m∑i=1m∑j=1nxijej=∑j=1n(∑i=1m1mxij)ej=0

\mu_x = \frac{1}{m}\sum (x*e)=\frac{1}{m}\sum_{i=1}^m \sum_{j=1}^n x_{ij}e_j =\sum_{j=1}^n (\sum_{i=1}^m \frac{1}{m} x_{ij})e_j=0 所以我们实际的优化函数为:

maxL(e)=max1m∑(x∗e)2=max1m∑i=1m(∑j=1nxijej)2

\max L(e) = \max \frac{1}{m}\sum (x*e)^2=\max \frac{1}{m}\sum_{i=1}^m (\sum_{j=1}^n x_{ij}e_j )^2 考虑限制条件,ee不可能无穷大,否则就没有意义了,我们需要寻找的是ee的方向而不是ee的大小,所以,不妨将ee单位化,受限条件为

s.t.E(e)=∥e∥=∑j=1nej2=1

s.t. \quad E(e)= \Vert e \Vert=\sum_{j=1}^n {e_j}^2=1 对于含有等式约束的优化问题,采用拉格朗日法,有

∇Le=λ∗∇Ee

\nabla L_e = \lambda *\nabla E_e 将上式展开变换,得

(∑i=1m1mxi∗xiT)e=λe

(\sum_{i=1}^m \frac{1}{m}{x_i * {x_i}^T})e = \lambda e 其中,左边括号里面的对象是协方差矩阵,记作Cov(n)Cov(n),则

Cov(n)e=λe

Cov(n)e = \lambda e 所以知道,当ee方向上方差最大时,也即e为主成分时,对应的ee为协方差矩阵的特征向量,对应的λ\lambda为协方差矩阵的特征值。

2_2 比较主成分间的优劣

通过上文,我们知道,方差最大的ee对应着主成分,也就是协方差矩阵的特征向量。 那么,协方差矩阵的特征向量通常不止一个,如何评判特征向量对应的主成分的优劣呢(或者说,哪个主成分的方差最大呢)?

首先,设定考虑主成分ee,方差的表达式如下

1m∑(x∗e)2=1m∑i=1m(∑j=1nxijej)2=1m∑i=1m((∑j=1nxijej)(∑q=1nxiqeq))=∑j=1n∑q=1n(1m∑i=1mxijxiq)ejeq

\frac{1}{m}\sum (x *e)^2 = \frac{1}{m} \sum_{i=1}^m (\sum_{j=1}^n x_{ij}e_j)^2= \frac{1}{m} \sum_{i=1}^m( (\sum_{j=1}^n x_{ij}e_j) (\sum_{q=1}^n x_{iq}e_q)) =\sum_{j=1}^n \sum_{q=1}^n (\frac{1}{m} \sum_{i=1}^mx_{ij} x_{iq} )e_j e_q

=eT∗(Cov(j,q)∗e)=λe2=λ

=e^T*(Cov(j,q)*e)=\lambda e^2=\lambda 所以,主成分的优劣对应着主成分的方差大小,方差大小对应着协方差矩阵对应特征向量的特征值(特征向量都已单位化)。

2_3 如何选择PA

选择PA的时候,常见的一句话就是:该主成分组解释了多少方差。 可以理解成:该主成分组解释了原数据组的多少离散程度,解释了多少结构。 这个百分比来源于

协方差矩阵对应主成分的特征值和协方差矩阵所有的特征值的和

\frac{协方差矩阵对应主成分的特征值和}{协方差矩阵所有的特征值的和} 一般来说,该比例大于90%,即很好地解释了原数据的方差。

PART 3. 总结

最后,总结一下PCA:

  1. 数据集先减去中心值,中心化为XX,以简化数学计算。
  2. 求出XX的协方差矩阵∑\sum
  3. 求出∑\sum的特征向量ee和特征值λ\lambda
  4. 将特征值降序排列,根据百分比协方差矩阵对应主成分的特征值和协方差矩阵所有的特征值的和\frac{协方差矩阵对应主成分的特征值和}{协方差矩阵所有的特征值的和}确定主成分(即选取特征值对应的特征向量)
  5. 总结,解释了原数据的多少方差

博主是做机器学习的,PCA在机器学习中用处很多,但是PCA不是首要选择,一般情况下,我们应该先用原数据建立模型,再将其和PCA后的模型进行比较,切不可只做PCA后的模型。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年03月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PART 1. 浅析PCA
    • 1_1 PCA概述
      • 1_2 为什么要用PCA
        • 1_3 PA的直观理解
        • PART 2. 深入PCA
          • 2_1 如何发现PC
            • 2_1_1 PC的特点——方差大
            • 2_1_2 方差大的好处
            • 2_1_3 如何找到方差大的PC
          • 2_2 比较主成分间的优劣
            • 2_3 如何选择PA
            • PART 3. 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档