一个关于PCA的疑问
来源:互联网 发布:ftp阿里云服务器配置 编辑:程序博客网 时间:2024/05/21 04:22
我们知道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 npnp.cov(X)#covariance, X:ndarray-likefrom scipy import eigeig(np.cov(X))#return eigenvalue and eigenvectors
0 0
- 一个关于PCA的疑问
- 关于php_apc的一个疑问
- 关于php_apc的一个疑问
- 关于数据结构的一个疑问
- 回答一个同事关于模板的疑问
- 关于MSDN网站的一个疑问
- 关于java垃圾回收的一个疑问
- 关于php数值类型的一个疑问
- 关于Domino共享邮件的一个疑问?
- 关于汉诺塔问题的一个疑问
- 关于mysql5.6.13的一个疑问
- Java关于继承的一个小疑问
- 关于强制转换的一个疑问
- 关于HttpURLConnection的一个疑问解析
- wp7中关于ListPicker的ItemSource的一个疑问
- 关于规范,以及一个疑问
- 关于规范,以及一个疑问
- 出现了一个关于TC的疑问。。。。高手请来。。。
- 决策树之ID3算法
- Leetcode[147]-Insertion Sort List
- 移动互联网对传统软件公司的冲击
- maven入门(二)
- Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~
- 一个关于PCA的疑问
- python第三方模块之pyquery
- 黑马程序员----字符串
- 挖财公司面试分享
- java
- CF 546B Soldier and Badges
- 安卓消息处理机制-处理线程
- java学习第一阶段3
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用