【机器学习】降维方法(一)----主成分分析(PCA)

发现其实还有很多知识点还未整理和掌握,包括降维、模型评估、特征选择、稀疏学习、聚类算法等。在实践中穿插着整理和学习吧。先从降维方法开始。

线性降维

欲获得低维子空间,最简单的方法就是对原始高维空间进行线性变换。
给定样本 XRn×m X ∈ R n × m ,即有 m m 个数据样本,每个样本有 n n 个特征( n n 维),记为 xi=(x(1)i,x(2)i,...,x(n)i),i=1,2,...,m x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( n ) ) , i = 1 , 2 , . . . , m ,线性变换 Z=WTX Z = W T X 之后得到 k k 维空间中的样本 ZRk×m Z ∈ R k × m WTRk×n W T ∈ R k × n 是变换矩阵,也被称为基,可以看做有 k k n n 维的基向量,即 W=(w1,w2,...,wk)Rk×n W = ( w 1 , w 2 , . . . , w k ) ∈ R k × n
其中 wl w l ( l l 1,2,...,k 1 , 2 , . . . , k )是基向量,可表示为:

wl=wl1wl2wln w l = [ w l 1 w l 2 ⋮ w l n ]

样本 X X k k 维坐标系的投影是: Z=WTX Z = W T X
Z=WTX=wT1wT2wTk(x1,x2,...,xm) Z = W T X = ( w 1 T w 2 T ⋮ w k T ) ( x 1 , x 2 , . . . , x m )

=wT1x1,wT1x2,...,wT1xmwT2x1,wT2x2,...,wT2xmwTkx1,wTkx2,...,wTkxm=z(1)1,z(1)2,...,z(1)mz(2)1,z(2)2,...,z(2)mz(k)1,z(k)2,...,z(k)m = ( w 1 T x 1 , w 1 T x 2 , . . . , w 1 T x m w 2 T x 1 , w 2 T x 2 , . . . , w 2 T x m ⋮ w k T x 1 , w k T x 2 , . . . , w k T x m ) = ( z 1 ( 1 ) , z 2 ( 1 ) , . . . , z m ( 1 ) z 1 ( 2 ) , z 2 ( 2 ) , . . . , z m ( 2 ) ⋮ z 1 ( k ) , z 2 ( k ) , . . . , z m ( k ) )

我们可以看出
z(j)i=wTjxizi=WTxi=wT1wT2wTkxi=z(1)iz(2)iz(k)i z i ( j ) = w j T x i , z i = W T x i = ( w 1 T w 2 T ⋮ w k T ) x i = ( z i ( 1 ) z i ( 2 ) ⋮ z i ( k ) )

zi z i 恢复 xi x i 得到恢复数据 x^i=j=1kz(j)iwj=Wzi x ^ i = ∑ j = 1 k z i ( j ) w j = W z i
我们可以发现样本X的特征维数由 xi x i n n 维变为 x^i x ^ i k k

主成分分析(PCA)

主成分分析(Principal Component Analysis,简称PCA),是最常用的一种降维方法。 其主要思路可以从两个方向来理解。
第一、最近重构性,即样本点到投影的超平面的距离都越小越好;
第二、最大可分性,即样本点在这个超平面上的投影尽可能分开。
因此优化思路即为最小化投影距离或者最大化投影方差。

假设数据样本都已进行了中心化,即 i=1mxi=0 ∑ i = 1 m x i = 0 ;再假定投影变换后得到的新坐标系 {w1,w2,...,wk} { w 1 , w 2 , . . . , w k } ,假设其中任选两个基向量 wl w l wm w m 都是正交的( lm l ≠ m ),也就是 wTlwm=0 w l T w m = 0 ,则 W W 是正交基, wl w l 为标准正交基向量( l l 1,2,...,k 1 , 2 , . . . , k ), ||wl||2=wTlwl=1 | | w l | | 2 = w l T w l = 1
x^i=j=1kz(j)iwj=Wzi x ^ i = ∑ j = 1 k z i ( j ) w j = W z i zi=WTxi z i = W T x i

最近重构性(最小化投影距离)

现在考虑整个训练数据集,原样本点 xi x i 与基于投影重构的样本点 x^i x ^ i 之间的距离为:
i=1m||x^ixi||2=i=1m||j=1kz(j)iwjxi||2=i=1m[(Wzi)T(Wzi)2(Wzi)Txi+x2i]=i=1m(zTiWTWzi2zTiWTxi+x2i)=i=1m(zTizi2zTizi+x2i)=i=1m(zTizi+x2i)=tr(WT(i=1mx2i)W)+i=1mx2i ∑ i = 1 m | | x ^ i − x i | | 2 = ∑ i = 1 m | | ∑ j = 1 k z i ( j ) w j − x i | | 2 = ∑ i = 1 m [ ( W z i ) T ( W z i ) − 2 ( W z i ) T x i + x i 2 ] = ∑ i = 1 m ( z i T W T W z i − 2 z i T W T x i + x i 2 ) = ∑ i = 1 m ( z i T z i − 2 z i T z i + x i 2 ) = ∑ i = 1 m ( − z i T z i + x i 2 ) = − t r ( W T ( ∑ i = 1 m x i 2 ) W ) + ∑ i = 1 m x i 2
tr指的是矩阵的迹,即主对角线上各个元素总和,因为 i=1mx2i=XXT ∑ i = 1 m x i 2 = X X T ,所以 tr(WT(i=1mx2i)W)=tr(WTXXTW) − t r ( W T ( ∑ i = 1 m x i 2 ) W ) = − t r ( W T X X T W )
w使tr(wTXXTw) 我 们 为 了 让 这 个 距 离 最 小 , 应 调 整 基 w 使 得 − t r ( w T X X T w ) 最 小
优 化 问 题 可 以 写 为 :
minwtr(WTXXTW) min w − t r ( W T X X T W )
s.t. WTW=I s . t .   W T W = I    I I 为 单 位 矩 阵

最大可分性(最大化投影方差)

换一个角度来考虑,我们也可以通过使所有样本点的投影尽可能分开来找到最好的 W W 。若所有样本点的投影能尽可能分开,则应该使投影后样本点的方差最大化。
XXTi=1mxixTi X X T ∑ i = 1 m x i x i T 是个协方差矩阵,一个对称的矩阵,而且对角线是各个维度上的方差。因此投影后样本点的方差为 i=1mWTxixTiW=tr(WTXXTW) ∑ i = 1 m W T x i x i T W = t r ( W T X X T W )
因 此 优 化 问 题 可 以 写 为 :
maxw tr(WTXXTW) max w   t r ( W T X X T W )
s.t. WTW=I s . t .   W T W = I

和上面最近重构性思路的优化问题等价。
使用拉格朗日乘子法可得 XXTwi=λiwi X X T w i = λ i w i ,对协方差矩阵 XXT X X T 进行特征值分解,将求得的特征值排序: λ1λ2...λn λ 1 ≥ λ 2 ≥ . . . ≥ λ n ,取前 k k 个特征值对应的特征向量构成 W=(w1,w2,...,wk) W ∗ = ( w 1 , w 2 , . . . , w k ) ,这就是主成分分析的解。

算法描述

输入:样本集 D={x1,x2,...,xm} D = { x 1 , x 2 , . . . , x m } ; 低维空间维数 k k .
输出:降维后样本集 D D ′
过程:
①对所有样本进行中心化: xi1mi=1mxixi x i − 1 m ∑ i = 1 m x i → x i
②计算样本的协方差矩阵 XXT X X T
③对协方差矩阵 XXT X X T 做特征值分解;
④取最大的 k k 个特征值所对应的特征向量构成 W=(w1,w2,...,wk) W = ( w 1 , w 2 , . . . , w k )
⑤对样本集 D D 中每个样本的投影 zi=WTxi z i = W T x i
⑥输出样本 D=(z1,z2,...,zm) D ′ = ( z 1 , z 2 , . . . , z m )

样本的协方差矩阵 XXT X X T
cov(x(k),x(t))=i=1m(x(k)ix¯(k))(x(t)ix¯(t))m1 c o v ( x ( k ) , x ( t ) ) = ∑ i = 1 m ( x i ( k ) − x ¯ ( k ) ) ( x i ( t ) − x ¯ ( t ) ) m − 1 k,t k , t 1,2,..,n 1 , 2 , . . , n
若是样本是经过中心化过后的样本,则 x¯(k)=0 x ¯ ( k ) = 0 k k 1,2,..,n 1 , 2 , . . , n
式子变为: cov(x(k),x(t))=i=1mx(k)ix(t)im1 c o v ( x ( k ) , x ( t ) ) = ∑ i = 1 m x i ( k ) x i ( t ) m − 1

协方差矩阵(样本为 n n 维)写作:

cov(x(1),x(1)) cov(x(1),x(2))...cov(x(1),x(n))cov(x(2),x(1)) cov(x(2),x(2))...cov(x(2),x(n))cov(x(n),x(1)) cov(x(n),x(2))...cov(x(n),x(n)) ( c o v ( x ( 1 ) , x ( 1 ) )   c o v ( x ( 1 ) , x ( 2 ) ) . . . c o v ( x ( 1 ) , x ( n ) ) c o v ( x ( 2 ) , x ( 1 ) )   c o v ( x ( 2 ) , x ( 2 ) ) . . . c o v ( x ( 2 ) , x ( n ) ) ⋮ c o v ( x ( n ) , x ( 1 ) )   c o v ( x ( n ) , x ( 2 ) ) . . . c o v ( x ( n ) , x ( n ) ) )

低维空间维数 k k
一般低维空间维数 k k 由用户事先指定,也可以通过在 k k 值不同的低维空间对开销较小的学习器进行交叉验证来选取较好的 k k 值。从重构的角度还可以设置一个重构阈值,例如 t=95% t = 95 % ,然后选取使下式成立的最小 k k 值: i=1kλii=1nλit ∑ i = 1 k λ i ∑ i = 1 n λ i ≥ t

PCA优缺点

PCA算法的主要优点有:
1.仅仅需要以方差衡量信息量,不受数据集以外的因素影响。 
2.各主成分之间正交,可消除原始数据成分间的相互影响的因素。
3.计算方法简单,主要运算是特征值分解,易于实现。

PCA算法的主要缺点有:
1.主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
2.方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

PCA算法可用于高维数据可视化。因为一个高维数据集是无法用图形表示的,所以我们可以通过PCA降维方法把它降成二维或三维数据来可视化。

参考:
1. http://www.cnblogs.com/pinard/p/6239403.html
2.《机器学习》

你可能感兴趣的:(学习笔记)