PART 1. 浅析PCA
1_1 PCA概述
PCA(Princile Component Analysis),中文名叫做主成成分分析,它的主要理论是:线性组合输入空间,以期找到一组标准正交基,实现坐标变换。
PCA的主要应用有以下几点:
- 降维
- 去噪
1_2 为什么要用PCA
首先,为了引入PCA,我们介绍如下几个场景:
- 设定因变量是学习成绩,自变量是学习时间、学习兴趣,建立因变量与自变量的数学模型,设为模型A;同时,我们分别将自变量只设定为学习时间或学习兴趣,分别建立模型B、C。容易发现,模型A、B、C都能够很好地预测学习成绩。
- 建立20*20的像素矩阵,对手写数字进行识别,那么对于一个样本,我们需要的维度高达400。
- 考虑一副简单的有规律可循的画面,但是不巧上面竟有几个惹人的黑点,我们想自动把黑点去除。
其次,简单分析下这三个场景。
对于场景1:学习时间与学习兴趣高度线性相关,所以我们只用一个自变量(二者之一),便能够很好地预测学习成绩。
对于场景2:如果是以400个像素作为输入空间,那么对于模型的计算是很复杂的。我们实际上书写数字的时候,对于特定的数字总会有一定的模式,我们会在既定模式中间产生微小的偏差(我们的脑子比较擅长理解这种模式),因此更好的输入空间应该是直接输入这种模式,而不是生硬地输入如此多的像素值。
对于场景3:简单的有规律可循的画面表明存在某种模式,而黑点正是背离了这模式的点。
最后,说下从场景中揭示的问题。
对于场景1,表明当输入变量线性相关度极高时(
|r|>
2n√
),我们可以舍弃部分变量而不影响模型的精确度。
对于场景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上的投影点密集。
所以说,主成分方向上,数据点的方差很大。
方差大,更有利于保持数据的原有结构不变。
2_1_3 如何找到方差大的PC
方差的表达式
首先,介绍一下数据。
先将数据减去其平均值,使得数据的平均值为0,这一步的作用是简化数学计算,使得协方差矩阵可以直接用点积来表示(后文中可以看到)。
设定数据集
X∈R
m∗n
,m表示样本点的数量,n表示样本点的维度。
在
R
m∗n
空间中,找到一个主成分方向
e∈R
n∗1
,将数据点投影到
e
上,观察其在
e
上的分布,即可找到对应该主成分方向的方差,表达式为
1m∑(x∗e−μ
x
)
2
优化最大方差,寻找主成分方向
由于
μ
x
=0
(原数据的平均值为0,投影后数据的平均值为0)证明如下:
μ
x
=1m∑(x∗e)=1m∑
i=1m
∑
j=1n
x
ij
e
j
=∑
j=1n
(∑
i=1m
1mx
ij
)e
j
=0
所以我们实际的优化函数为:
maxL(e)=max1m∑(x∗e)
2
=max1m∑
i=1m
(∑
j=1n
x
ij
e
j
)
2
考虑限制条件,
e
不可能无穷大,否则就没有意义了,我们需要寻找的是
e
的方向而不是
e
的大小,所以,不妨将
e
单位化,受限条件为
s.t.E(e)=∥e∥=∑
j=1n
e
j2
=1
对于含有等式约束的优化问题,采用拉格朗日法,有
∇L
e
=λ∗∇E
e
将上式展开变换,得
(∑
i=1m
1mx
i
∗x
iT
)e=λe
其中,左边括号里面的对象是协方差矩阵,记作
Cov(n)
,则
Cov(n)e=λe
所以知道,当
e
方向上方差最大时,也即e为主成分时,对应的
e
为协方差矩阵的特征向量,对应的
λ
为协方差矩阵的特征值。
2_2 比较主成分间的优劣
通过上文,我们知道,方差最大的
e
对应着主成分,也就是协方差矩阵的特征向量。
那么,协方差矩阵的特征向量通常不止一个,如何评判特征向量对应的主成分的优劣呢(或者说,哪个主成分的方差最大呢)?
首先,设定考虑主成分
e
,方差的表达式如下
1m∑(x∗e)
2
=1m∑
i=1m
(∑
j=1n
x
ij
e
j
)
2
=1m∑
i=1m
((∑
j=1n
x
ij
e
j
)(∑
q=1n
x
iq
e
q
))=∑
j=1n
∑
q=1n
(1m∑
i=1m
x
ij
x
iq
)e
j
e
q
=e
T
∗(Cov(j,q)∗e)=λe
2
=λ
所以,主成分的优劣对应着主成分的方差大小,方差大小对应着协方差矩阵对应特征向量的特征值(特征向量都已单位化)。
2_3 如何选择PA
选择PA的时候,常见的一句话就是:该主成分组解释了多少方差。
可以理解成:该主成分组解释了原数据组的多少离散程度,解释了多少结构。
这个百分比来源于
协方差矩阵对应主成分的特征值和协方差矩阵所有的特征值的和
一般来说,该比例大于90%,即很好地解释了原数据的方差。
PART 3. 总结
最后,总结一下PCA:
- 数据集先减去中心值,中心化为X,以简化数学计算。
- 求出X的协方差矩阵∑
- 求出∑的特征向量e和特征值λ
- 将特征值降序排列,根据百分比协方差矩阵对应主成分的特征值和协方差矩阵所有的特征值的和确定主成分(即选取特征值对应的特征向量)
- 总结,解释了原数据的多少方差