一个关于PCA的疑问

我们知道PCA干的事情是把n维的样本投影到k维,同时丢失的信息能够达到最少。

为什么说principal component是covariance matrix的特征值中最大的前k个对应的特征向量上的分量?

解释:

对于一组样本数据,如果它们的方差越大,说明它们蕴含的信息越多,可以参考熵的概念理解。那么PCA需要做的事情就是当投影到k维的时候,每个维度上的方差都能够越大越好。这要怎么实现呢?

需要注意的是,在样本进行投影的时候,需要对数据进行feature scaling,即x_j = (x_j -σ_j)/μ_j,j表示第j个feature,这样可以使的样本的均值为0.


左边是样本投影到u上的方差,因为原样本的均值为0,所以投影后的均值也为0,求方差那一项的括号里面就没有减去均值那一部分,该项用λ表示。最右边的括号内的部分为原样本的协方差,大小为n*n,用∑表示。(x^(i)是第i个样本,是n*1的向量)

注意到u是单位向量,因此u乘以u的Transpose等于1.因此对上式进一步推导得到uλ=λu=uu.T * ∑u = ∑u。

根据特征值和特征向量的定义,一个向量u与矩阵相乘,∑u,存在一个值λ,有λu=∑u,则λ是的特征值,u是∑的特征向量。

又因为根据λ是上式左边的部分,代表着投影到u上的方差,而我们又希望方差越大越好,因此选择λ里面值前k大对应的特征向量代表principal component的方向,是正确的。

Python的代码:

import numpy as np
np.cov(X)#covariance, X:ndarray-like
from scipy import eig
eig(np.cov(X))#return eigenvalue and eigenvectors


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值