主成分分析(PCA降维)与最小二乘-原理以及详细推导

重新整理了PCA相关的原理和推导

从最小二乘出发, 其原理可以描述为: 在数据空间χ中寻找一个超平面, 让数据样本到该超平面的距离平方之和最小.

数据点到超平面距离的计算试为该点向量减该点在超平面上的投影所得向量的长度, 即

dist(xi,plane)=||xix^i||2

下标2表示L2范数, 几何解释如图
主成分分析(PCA降维)与最小二乘-原理以及详细推导
假设该超平面由d个标准正交向量张成, 即

plane=span{w1,w2,w3,...,wd},s.t.  wiwj=δij

W=[w1,w2,w3,...,wd],则 PCA的优化目标可表示为
argminWi||xix^i||22s.t.  WTW=I(1)

由线性代数知识可知, 数据点xi在超平面上的投影可表示为
x^i=j=1d(wTjxi)wj

于是优化目标可写为
argminWi||j=1d(wTjxi)wjxi||22s.t.  WTW=I(2)

接下来一步一步分析, 先将距离平方展开:
||xix^i||22=(xix^i)T(xix^i)=xTixixTix^ix^Tixi+x^Tix^i(3)

(3)式第一项是常数, 对(3)式右边最后一项展开:
x^Tix^i=(j=1d(wTjxi)wTj)(k=1d(wTkxi)wj)

注意, wTjxi是实数, 不参与转置并且可以挪动位置, 注意到wTjwk=δjk ,当j=k时等于1, 否则等于0. 展开上式相乘之后只剩下:
j=1d(wTjxi)(wTjxi)

由内积的性质可知wTjxi=xTiwj,上式最后变为:
j=1dwTjxixTiwj

对(3)式右边第二项展开:
xTix^i=xTij=1d(wTjxi)wj=j=1dwTjxixTiwj

由内积性质可知xTix^i=x^Tixi, 所以(3)式可写成
||xix^i||22=j=1dwTjxixTiwj+const=tr(WTxixTiW)+const

tr表示矩阵的迹, 上式展开即可验证. 现对整个样本求和并注意到ixixTi=XXT. 考虑上述结果, 优化目标可写为:
argmaxW tr(WTXXTW)s.t.  WTW=I(2)

这里用到了迹和矩阵乘法的线性性质.
现用拉格朗日乘子法求解, 约束条件WTW=I包含了d×d个等式, 为了说明清楚, 不失一般性,取d=2进行推导, 此时拉格朗日函数可写为:
L(w1,w2)=wT1XXTw1+wT2XXTw2+λ11(1wT1w1)+λ22(1wT2w2)+λ12wT1w2+λ21wT2w1

w1求导并令其等于0得:
Lw1=2XXTw12λ11w1+λ12w2+λ21w2=0⃗ 

重点:要让上式成立, 显然w1w2是不能等于0⃗ 的, 而且它们不能共线, 共线了超平面维数就不是d了, 这意味着w1w2线性无关. 所以只能是有:
2XXTw12λ11w1=0⃗ λ12+λ21=0

从上式可以看出w1恰好是XXT对应于λ11的特征向量, 同理对于w2,...,wd. 于是只要求出XXT最大的前d个特征值对应的特征向量, 用它们张成超平面, 将数据向超平面上投影即可完成降维.
注意到这里XXT恰好是(m-1)倍的中心化数据的协方差矩阵, 推导如下:
cov(xi,xj)=E((xix¯i)(xjx¯j))

用m个样本做估计, 并且注意到中心化, 则有:
x¯i=1mk=1mx(k)i=0cov(xi,xj)=1m1k=1mx(k)ix(k)j

即证.
Python实现: http://blog.csdn.net/u013648367/article/details/53135665

参考资料

[1] 周志华. 机器学习