主成分分析(PCA降维)与最小二乘-原理以及详细推导
2017-06-27 21:47
525 查看
重新整理了PCA相关的原理和推导
从最小二乘出发, 其原理可以描述为: 在数据空间χ中寻找一个超平面, 让数据样本到该超平面的距离平方之和最小.
数据点到超平面距离的计算试为该点向量减该点在超平面上的投影所得向量的长度, 即
dist(xi,plane)=||xi−x^i||2
下标2表示L2范数, 几何解释如图
假设该超平面由d′个标准正交向量张成, 即
plane=span{w1,w2,w3,...,wd′},s.t. wi⋅wj=δij
令W=[w1,w2,w3,...,wd′],则 PCA的优化目标可表示为
argminW∑i||xi−x^i||22s.t. WTW=I(1)
由线性代数知识可知, 数据点xi在超平面上的投影可表示为
x^i=∑j=1d′(wTjxi)wj
于是优化目标可写为
argminW∑i||∑j=1d′(wTjxi)wj−xi||22s.t. WTW=I(2)
接下来一步一步分析, 先将距离平方展开:
||xi−x^i||22=(xi−x^i)T(xi−x^i)=xTixi−xTix^i−x^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=1d′wTjxixTiwj
对(3)式右边第二项展开:
−xTix^i=xTi∑j=1d′(wTjxi)wj=−∑j=1d′wTjxixTiwj
由内积性质可知xTix^i=x^Tixi, 所以(3)式可写成
||xi−x^i||22=−∑j=1d′wTjxixTiwj+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(1−wT1w1)+λ22(1−wT2w2)+λ12wT1w2+λ21wT2w1
对w1求导并令其等于0得:
∂L∂w1=2XXTw1−2λ11w1+λ12w2+λ21w2=0⃗
重点:要让上式成立, 显然w1和w2是不能等于0⃗ 的, 而且它们不能共线, 共线了超平面维数就不是d′了, 这意味着w1和w2线性无关. 所以只能是有:
2XXTw1−2λ11w1=0⃗ λ12+λ21=0
从上式可以看出w1恰好是XXT对应于λ11的特征向量, 同理对于w2,...,wd′. 于是只要求出XXT最大的前d′个特征值对应的特征向量, 用它们张成超平面, 将数据向超平面上投影即可完成降维.
注意到这里XXT恰好是(m-1)倍的中心化数据的协方差矩阵, 推导如下:
cov(xi,xj)=E((xi−x¯i)(xj−x¯j))
用m个样本做估计, 并且注意到中心化, 则有:
x¯i=1m∑k=1mx(k)i=0cov(xi,xj)=1m−1∑k=1mx(k)ix(k)j
即证.
Python实现: http://blog.csdn.net/u013648367/article/details/53135665
从最小二乘出发, 其原理可以描述为: 在数据空间χ中寻找一个超平面, 让数据样本到该超平面的距离平方之和最小.
数据点到超平面距离的计算试为该点向量减该点在超平面上的投影所得向量的长度, 即
dist(xi,plane)=||xi−x^i||2
下标2表示L2范数, 几何解释如图
假设该超平面由d′个标准正交向量张成, 即
plane=span{w1,w2,w3,...,wd′},s.t. wi⋅wj=δij
令W=[w1,w2,w3,...,wd′],则 PCA的优化目标可表示为
argminW∑i||xi−x^i||22s.t. WTW=I(1)
由线性代数知识可知, 数据点xi在超平面上的投影可表示为
x^i=∑j=1d′(wTjxi)wj
于是优化目标可写为
argminW∑i||∑j=1d′(wTjxi)wj−xi||22s.t. WTW=I(2)
接下来一步一步分析, 先将距离平方展开:
||xi−x^i||22=(xi−x^i)T(xi−x^i)=xTixi−xTix^i−x^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=1d′wTjxixTiwj
对(3)式右边第二项展开:
−xTix^i=xTi∑j=1d′(wTjxi)wj=−∑j=1d′wTjxixTiwj
由内积性质可知xTix^i=x^Tixi, 所以(3)式可写成
||xi−x^i||22=−∑j=1d′wTjxixTiwj+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(1−wT1w1)+λ22(1−wT2w2)+λ12wT1w2+λ21wT2w1
对w1求导并令其等于0得:
∂L∂w1=2XXTw1−2λ11w1+λ12w2+λ21w2=0⃗
重点:要让上式成立, 显然w1和w2是不能等于0⃗ 的, 而且它们不能共线, 共线了超平面维数就不是d′了, 这意味着w1和w2线性无关. 所以只能是有:
2XXTw1−2λ11w1=0⃗ λ12+λ21=0
从上式可以看出w1恰好是XXT对应于λ11的特征向量, 同理对于w2,...,wd′. 于是只要求出XXT最大的前d′个特征值对应的特征向量, 用它们张成超平面, 将数据向超平面上投影即可完成降维.
注意到这里XXT恰好是(m-1)倍的中心化数据的协方差矩阵, 推导如下:
cov(xi,xj)=E((xi−x¯i)(xj−x¯j))
用m个样本做估计, 并且注意到中心化, 则有:
x¯i=1m∑k=1mx(k)i=0cov(xi,xj)=1m−1∑k=1mx(k)ix(k)j
即证.
Python实现: http://blog.csdn.net/u013648367/article/details/53135665
参考资料
[1] 周志华. 机器学习相关文章推荐
- PCA的数学原理,推导的很详细
- 主成分分析(PCA)原理及推导
- PCA降维原理以及举例
- 举例详细说明javascript作用域、闭包原理以及性能问题
- 举例详细说明javascript作用域、闭包原理以及性能问题
- floyd原理以及求最小环
- 降维(一)----说说主成分分析(PCA)的源头
- PCA以及降维的思想
- 详细介绍在tomcat中配置数据源以及数据源的原理
- linux-2.6.32在mini2440开发板上移植---触摸屏工作原理以及驱动程序详细分析
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)
- linux-2.6.32在mini2440开发板上移植(10)之触摸屏工作原理以及驱动程序详细分析
- 主元分析PCA原理以及应用
- PCA降维算法总结以及matlab实现PCA
- linux-2.6.32在mini2440开发板上移植(10)之触摸屏工作原理以及驱动程序详细分析
- 举例详细说明javascript作用域、闭包原理以及性能问题(转)
- 举例详细说明javascript作用域、闭包原理以及性能问题
- MyEclipse 程序注册详细步骤以及原理简析
- linux-2.6.32在mini2440开发板上移植(10)之触摸屏工作原理以及驱动程序详细分析
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)