发现其实还有很多知识点还未整理和掌握,包括降维、模型评估、特征选择、稀疏学习、聚类算法等。在实践中穿插着整理和学习吧。先从降维方法开始。
线性降维
欲获得低维子空间,最简单的方法就是对原始高维空间进行线性变换。
给定样本
X∈Rn×m
,即有
m
个数据样本,每个样本有
n
个特征(
n
维),记为
xi=(x(1)i,x(2)i,...,x(n)i),i=1,2,...,m
,线性变换
Z=WTX
之后得到
k
维空间中的样本
Z∈Rk×m
,
WT∈Rk×n
是变换矩阵,也被称为基,可以看做有
k
个
n
维的基向量,即
W=(w1,w2,...,wk)∈Rk×n
其中
wl
(
l
取
1,2,...,k
)是基向量,可表示为:
wl=⎡⎣⎢⎢⎢⎢⎢wl1wl2⋮wln⎤⎦⎥⎥⎥⎥⎥
样本
X
在
k
维坐标系的投影是:
Z=WTX
Z=WTX=⎛⎝⎜⎜⎜⎜⎜wT1wT2⋮wTk⎞⎠⎟⎟⎟⎟⎟(x1,x2,...,xm)
=⎛⎝⎜⎜⎜⎜⎜wT1x1,wT1x2,...,wT1xmwT2x1,wT2x2,...,wT2xm⋮wTkx1,wTkx2,...,wTkxm⎞⎠⎟⎟⎟⎟⎟=⎛⎝⎜⎜⎜⎜⎜⎜z(1)1,z(1)2,...,z(1)mz(2)1,z(2)2,...,z(2)m⋮z(k)1,z(k)2,...,z(k)m⎞⎠⎟⎟⎟⎟⎟⎟
我们可以看出
z(j)i=wTjxi,zi=WTxi=⎛⎝⎜⎜⎜⎜⎜wT1wT2⋮wTk⎞⎠⎟⎟⎟⎟⎟xi=⎛⎝⎜⎜⎜⎜⎜⎜z(1)iz(2)i⋮z(k)i⎞⎠⎟⎟⎟⎟⎟⎟
用
zi
恢复
xi
得到恢复数据
x^i=∑j=1kz(j)iwj=Wzi
。
我们可以发现样本X的特征维数由
xi
的
n
维变为
x^i
的
k
维
主成分分析(PCA)
主成分分析(Principal Component Analysis,简称PCA),是最常用的一种降维方法。 其主要思路可以从两个方向来理解。
第一、最近重构性,即样本点到投影的超平面的距离都越小越好;
第二、最大可分性,即样本点在这个超平面上的投影尽可能分开。
因此优化思路即为最小化投影距离或者最大化投影方差。
假设数据样本都已进行了中心化,即
∑i=1mxi=0
;再假定投影变换后得到的新坐标系
{w1,w2,...,wk}
,假设其中任选两个基向量
wl
和
wm
都是正交的(
l≠m
),也就是
wTlwm=0
,则
W
是正交基,
wl
为标准正交基向量(
l
取
1,2,...,k
),
||wl||2=wTlwl=1
。
x^i=∑j=1kz(j)iwj=Wzi
,
zi=WTxi
。
最近重构性(最小化投影距离)
现在考虑整个训练数据集,原样本点
xi
与基于投影重构的样本点
x^i
之间的距离为:
∑i=1m||x^i−xi||2=∑i=1m||∑j=1kz(j)iwj−xi||2=∑i=1m[(Wzi)T(Wzi)−2(Wzi)Txi+x2i]=∑i=1m(zTiWTWzi−2zTiWTxi+x2i)=∑i=1m(zTizi−2zTizi+x2i)=∑i=1m(−zTizi+x2i)=−tr(WT(∑i=1mx2i)W)+∑i=1mx2i
tr指的是矩阵的迹,即主对角线上各个元素总和,因为
∑i=1mx2i=XXT
,所以
−tr(WT(∑i=1mx2i)W)=−tr(WTXXTW)
我们为了让这个距离最小,应调整基w使得−tr(wTXXTw)最小
优化问题可以写为:
minw−tr(WTXXTW)
s.t. WTW=I
I为单位矩阵
最大可分性(最大化投影方差)
换一个角度来考虑,我们也可以通过使所有样本点的投影尽可能分开来找到最好的
W
。若所有样本点的投影能尽可能分开,则应该使投影后样本点的方差最大化。
XXT∑i=1mxixTi
是个协方差矩阵,一个对称的矩阵,而且对角线是各个维度上的方差。因此投影后样本点的方差为
∑i=1mWTxixTiW=tr(WTXXTW)
因此优化问题可以写为:
maxw tr(WTXXTW)
s.t. WTW=I
和上面最近重构性思路的优化问题等价。
使用拉格朗日乘子法可得
XXTwi=λiwi
,对协方差矩阵
XXT
进行特征值分解,将求得的特征值排序:
λ1≥λ2≥...≥λn
,取前
k
个特征值对应的特征向量构成
W∗=(w1,w2,...,wk)
,这就是主成分分析的解。
算法描述
输入:样本集
D={x1,x2,...,xm};
低维空间维数
k
.
输出:降维后样本集
D′
过程:
①对所有样本进行中心化:
xi−1m∑i=1mxi→xi
;
②计算样本的协方差矩阵
XXT
;
③对协方差矩阵
XXT
做特征值分解;
④取最大的
k
个特征值所对应的特征向量构成
W=(w1,w2,...,wk)
⑤对样本集
D
中每个样本的投影
zi=WTxi
⑥输出样本
D′=(z1,z2,...,zm)
样本的协方差矩阵
XXT
:
cov(x(k),x(t))=∑i=1m(x(k)i−x¯(k))(x(t)i−x¯(t))m−1
,
k,t
取
1,2,..,n
若是样本是经过中心化过后的样本,则
x¯(k)=0
,
k
取
1,2,..,n
式子变为:
cov(x(k),x(t))=∑i=1mx(k)ix(t)im−1
协方差矩阵(样本为
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))⎞⎠⎟⎟⎟⎟⎟
低维空间维数
k
:
一般低维空间维数
k
由用户事先指定,也可以通过在
k
值不同的低维空间对开销较小的学习器进行交叉验证来选取较好的
k
值。从重构的角度还可以设置一个重构阈值,例如
t=95%
,然后选取使下式成立的最小
k
值:
∑i=1kλi∑i=1nλi≥t
PCA优缺点
PCA算法的主要优点有:
1.仅仅需要以方差衡量信息量,不受数据集以外的因素影响。
2.各主成分之间正交,可消除原始数据成分间的相互影响的因素。
3.计算方法简单,主要运算是特征值分解,易于实现。
PCA算法的主要缺点有:
1.主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
2.方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。
PCA算法可用于高维数据可视化。因为一个高维数据集是无法用图形表示的,所以我们可以通过PCA降维方法把它降成二维或三维数据来可视化。
参考:
1. http://www.cnblogs.com/pinard/p/6239403.html
2.《机器学习》