您的位置:首页 > 其它

【Machine Learning】笔记:主成份分析 PCA

2017-08-30 11:07 169 查看

PCA 要做什么

PCA 要做的事,就是找出这样一些向量,使得原来数据 x 在这些向量上的投影的方差尽可能地大,用 z=Wx 把高维数据映射到较低维的空间中,同时要保留尽可能多的信息。

比如映射到一维空间中,那么就是 z1=w1x,同时使得 Var(z1)=1N∑z1(z1−z1¯)2 最大,但光这样,其实只要让 w1 的长度尽量大就行了,所以还要加上限制 ∥w1∥2=1.

在这基础上,如果想要再多保留一个维度,那就要寻找 w2,最大化目标和限制和上一步中一样,但还要加上一条限制 w1⋅w2=0.

解最大化问题

关于上述的最大化问题,是带条件限制的最大化,我们可以用拉格朗日乘数法来解。先解 w1.

已知:

z1z1¯=w1x=1N∑z1=1N∑w1x=w11N∑x=w1x¯

要最大化的式子是:

Var(z1)=1N∑z1(z1−z1¯)2=1N∑x(w1x−w1x¯)2=1N∑x(w1(x−x¯))2=1N∑(w1)T(x−x¯)(x−x¯)Tw1=(w1)T[1N∑(x−x¯)(x−x¯)T]w1=(w1)TSw1

其中 S=Cov(x)=1N∑(x−x¯)(x−x¯)T 是协方差矩阵,它是对称的半正定矩阵。

要解的最大化问题可以表达为

max(w1)TSw1,s.t. (w1)Tw1=1

这时定义拉格朗日函数

g(w1)=(w1)TSw1−α((w1)Tw1−1)

对 w1 的每个维度求偏导数(即直接对 w1 求导),令他们都等于 0,就会得到

Sw1−αw1=0

即 α 是 S 的特征值,w1 是它的特征向量。那么,

(w1)TSw1=α(w1)Tw1=α

要让它最大,只需选择最大的那个特征值即可,设为 λ1,也即 w1 是它最大的特征值所对应的特征向量。

接下来寻找 w2,要最大化的问题变为

max(w2)TSw2,s.t. (w2)Tw2=1,(w1)Tw2=0

同样,定义拉格朗日函数

g(w2)=(w2)TSw2−α((w2)Tw2−1)−β((w1)Tw2)

对 w2 求导,得到

2Sw2−2αw2−βw1=0

在两边的左边同时乘上 (w1)T,就会变成

2(w1)TSw2−2α⋅0−β⋅1=0

第一项可以做这样的变形:

(w1)TSw2=((w1)TSw2)T=(w2)TSTw1=(w2)TSw1=(w2)Tλ1w1=0

因此,原等式可以解出 β=0,再代回去,就会得到

Sw2=αw2

说明 w2 同样是 S 的特征值,因此,选择第二大的特征值,就能使 (w2)TSw2 最大。

在完成推导后,我们可以知道 Cov(z)=D 是对角矩阵的形式,其中 z=Wx,因为

Cov(z)=1N∑(z−z¯)(z−z¯)T=WSWT=WS[w1…wK]=W[Sw1…SwK]=W[λ1w1…λKwK]=[λ1Ww1…λKWwK]=[λ1e1…λKeK]=D

它是对角矩阵,即 z 的任意两个维度都是线性无关的。

另一视角看 PCA

对于一个数据点 x 来说,可以尝试将它分解为

x=c1u1+c2u2+…+cKuK+x¯

其中 u1,u2,…,uK 是 components,c1,c2,…,cK 是每个成分的权重,x¯ 是所有数据点的平均。令 x^=c1u1+c2u2+…+cKuK,我们要做的是,寻找 u1,u2,…,uK,让 x^ 与 x−x¯ 尽可能接近,即最小化 reconstruction error

L=minu1,…,uK∑∥(x−x¯)−x^∥2

可以证明,从 PCA 中得到的 w1…wK 就是最小化 L 的 u1,…,uK,详细证明在 [Bishop, Chapter 12.1.2].

如果直接 SVD 分解,X≈UΣV,X 是 M×N 的矩阵,即 M 维度的特征,有 N 个数据,U 是 M×K 的矩阵,它的 K 个列代表 K 个标准正交的特征向量,对应的特征值是 XXT 的 K 个最大的特征值,Σ 是 K×K 的矩阵,V 是 K×N 的矩阵。

PCA 和神经网络

PCA 可以表示成有一层隐含层,激活函数是线性函数的神经网络(Autoencoder)很像。

要让 x^=∑k=1Kckwk 与 x−x¯ 尽可能接近,可以解出 ck=(x−x¯)wk.

比如选择只保留两个主成分,即 K=2,那么隐含层就有两个神经元:



那么,就可以定义误差为输出层与 x−x¯ 的距离,然后可以用梯度下降法。那么,训练出来的 w1,…,wK 与 PCA 解出来的一样吗?是不一样的,因为 PCA 解出来的 w1,…,wK 是正交的,就算用神经网络做出来的,reconstruction error 也不会比 PCA 更小。

但用神经网络也有好处,好处就是它可以是 deep 的,这样它就成了 deep autoencoder.

PCA 的缺点

Unsupervised

PCA 是在所有数据上找出一个维度,让所有数据在它上面的投影最大。但如果数据有不同的类别,PCA 就不行了,这时候可以用 LDA 来完成。

Linear

当数据的维度有某种非线性的属性时,比如有个“S”形曲面,PCA 就无法很好降维了。这时候可以用 tSNE.

参考:manifold vs. PCA.

Non-negative matrix factorization (NMF)

在图像识别的例子上,找出来的 components 其实也是图像(每个像素点都有一个值),如果把它画出来,会发现它并没有很明显地告诉我们,我们把图像分成了哪几个部分,而可能是很模糊的一些图像。

这是因为做 SVD 时,分解出来的值有正有负,也就是说,PCA 做出来的不一定是图像像素的叠加,也可能是相减,因此看不出来分解成了哪几个组件。

我们可以限制它,只能分解为 components 相加的形式,那可以用 Non-negative matrix factorization (NMF),详细信息可以参考 http://www.cs.unc.edu/~lazebnik/research/spring08/assignment3.html.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PCA 机器学习