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

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

线性降维

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

w l = [ w l 1 w l 2 w l n ]

样本 X k 维坐标系的投影是: Z = W T X
Z = W T X = ( w 1 T w 2 T w k T ) ( x 1 , x 2 , . . . , x 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 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 ) )

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

主成分分析(PCA)

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

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

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

现在考虑整个训练数据集,原样本点 x i 与基于投影重构的样本点 x ^ i 之间的距离为:
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 = 1 m x i 2 = X X T ,所以 t r ( W T ( i = 1 m x i 2 ) W ) = t r ( W T X X T W )
w 使 t r ( w T X X T w )

min w t r ( W T X X T W )
s . t .   W T W = I    I

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

换一个角度来考虑,我们也可以通过使所有样本点的投影尽可能分开来找到最好的 W 。若所有样本点的投影能尽可能分开,则应该使投影后样本点的方差最大化。
X X T i = 1 m x i x i T 是个协方差矩阵,一个对称的矩阵,而且对角线是各个维度上的方差。因此投影后样本点的方差为 i = 1 m W T x i x i T W = t r ( W T X X T W )

max w   t r ( W T X X T W )
s . t .   W T W = I

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

算法描述

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

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

协方差矩阵(样本为 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 值。从重构的角度还可以设置一个重构阈值,例如 t = 95 % ,然后选取使下式成立的最小 k 值: 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.《机器学习》

猜你喜欢

转载自blog.csdn.net/u013597931/article/details/79970043