一个极其简洁的PCA白化
2013-10-09 10:15
197 查看
昨晚在看SSC的作者的代码的时候发现一个取PCA投影后的矩阵,发现代码极其简单,在这里做个备注,计算的时候可以更方便点:
![](http://latex.codecogs.com/gif.latex?%5BU,S,V%5D%20=%20svd(X',0);)
![](http://latex.codecogs.com/gif.latex?Xp%20=%20U(:,1:r)';)
其中X是原数据,X中的每一列是一个数据,r是需要保留的前r个最大方向的投影数据。
在这里详细解释下:
传统的PCA是这么来做的,用这个上面的符号:
应该是
![](http://latex.codecogs.com/gif.latex?%5BU,%20S,%20V%5D%20=%20svd(X);)
![](http://latex.codecogs.com/gif.latex?xp%20=%20U(:,%201:r)'*X)
那回过头来解释下最上面那个,由于是对X'求的svd那么结果应该是:
![](http://latex.codecogs.com/gif.latex?Xp%20=%20V(:,%201:r)'*X)
由于
![](http://latex.codecogs.com/gif.latex?X%20=%20V*S'*U')
所以
![](http://latex.codecogs.com/gif.latex?Xp%20=%20V(:,%201:r)'*V(:,%201:r)*S'*U(:,%201:r)'=S'*U(:,%201:r)')
,如果继续白化的话那么就是除以S那么结果就是直接
![](http://latex.codecogs.com/gif.latex?Xp=U(:,%201:r)')
。。证毕。。
其中X是原数据,X中的每一列是一个数据,r是需要保留的前r个最大方向的投影数据。
在这里详细解释下:
传统的PCA是这么来做的,用这个上面的符号:
应该是
那回过头来解释下最上面那个,由于是对X'求的svd那么结果应该是:
由于
所以
,如果继续白化的话那么就是除以S那么结果就是直接
。。证毕。。
相关文章推荐
- 一个极其简洁的Python网页抓取程序,自己主动从雅虎財经抓取股票数据
- 一个极其简洁的Python网页抓取程序,自动从雅虎财经抓取股票数据
- WPF上一个简洁的DragDrop测试(例子)
- 尽可能简洁的用CSS写一个漂亮的横向菜单
- 判断一个正整数是否是2的N次方的简洁算法及其证明
- 一个简洁实用的PHP缓存类完整实例
- Mybatis极其(最)简(好)单(用)的一个分页插件
- 倒计时demo,用C#做了一个倒计时demo,界面简洁,多个鼠标右键功能。
- 一个更加简洁的 建造者模式
- 一个简洁的归并排序实现模板
- 一个完全独立的、简洁的jquery前端分页组件,用到动态添加页内样式的方法哦。
- 一个简洁、高性能、跨平台的 PHP7 代码加密扩展
- 简洁大方,为自己的Android App添加一个ContextMenu
- 用一段非常难懂的语句,但是很简洁的实现了一个很实用的函数。
- 一个简洁的 search in rotated sorted array 的解法
- 一个极其高效的虚拟机内存冗余消除机制:UKSM
- Mybatis极其(最)简(好)单(用)的一个分页插件
- 用Latex制作一个简洁美观的简历(菜鸟快速上手)
- 一个高效简洁的Struts分页方法(原创)
- 尽可能简洁的用CSS写一个漂亮的横向菜单