Karhunen-Loeve Transform (KLT) 原理及PCA应用
2015-07-19 02:53
351 查看
Karhunen-Loeve Transform(KLT)是一种数据变换与分析方式,常用于数据压缩和PCA降维。
1. KLT是什么变换,KLT的目的是什么?
KLT是对向量x做的一个正交变换y=Φx,目的是变换到y后去除数据相关性。
PS:其中,Φ是x特征向量组成的矩阵,满足ΦTΦ=I,当x都是实数时,Φ是正交矩阵。
2. 为什么说KLT可以去除数据相关性?
用my表示向量y的平均值,y的协方差矩阵记为Σy,通过变换 y=ΦTx,有
写成矩阵形式:
由此可见,做了KLT变换之后呢,Σy成为了对角阵,也就是对于任意i≠j,有cov(yi,yj)=0;i=j有cov(yi,yj)=λi,所以说去除了数据相关性。而且,yi的方差与x协方差矩阵的第i个特征值相等,即
。
3. 如何将KLT用于PCA?
PCA降维可以用于压缩(详见主成分分析的介绍),这里做一个概要:
假设待压缩数据为N维向量x,通过KLT变换压缩成M维信号y(M<N)
找到x的均值Mx和协方差矩阵 Σx
计算 Σx的特征值λi和特征向量φi,并按照λi递减(从大到小)的顺序重新组合,i∈[0,N-1]
根据能量比
>=threshold 进行m个主成分的选择
将M个最大特征值对应的特征向量重新组合成N*M的特征向量矩阵 Φm
做KLT变换 y = ΦmTx,形成压缩向量y
逆KLT变换恢复x,x = Φmy
Reference:
1. http://fourier.eng.hmc.edu/e161/lectures/klt/node4.html
2. http://fourier.eng.hmc.edu/e161/lectures/klt/node3.html
1. KLT是什么变换,KLT的目的是什么?
KLT是对向量x做的一个正交变换y=Φx,目的是变换到y后去除数据相关性。
PS:其中,Φ是x特征向量组成的矩阵,满足ΦTΦ=I,当x都是实数时,Φ是正交矩阵。
2. 为什么说KLT可以去除数据相关性?
用my表示向量y的平均值,y的协方差矩阵记为Σy,通过变换 y=ΦTx,有
写成矩阵形式:
由此可见,做了KLT变换之后呢,Σy成为了对角阵,也就是对于任意i≠j,有cov(yi,yj)=0;i=j有cov(yi,yj)=λi,所以说去除了数据相关性。而且,yi的方差与x协方差矩阵的第i个特征值相等,即
。
3. 如何将KLT用于PCA?
PCA降维可以用于压缩(详见主成分分析的介绍),这里做一个概要:
假设待压缩数据为N维向量x,通过KLT变换压缩成M维信号y(M<N)
找到x的均值Mx和协方差矩阵 Σx
计算 Σx的特征值λi和特征向量φi,并按照λi递减(从大到小)的顺序重新组合,i∈[0,N-1]
根据能量比
>=threshold 进行m个主成分的选择
将M个最大特征值对应的特征向量重新组合成N*M的特征向量矩阵 Φm
做KLT变换 y = ΦmTx,形成压缩向量y
逆KLT变换恢复x,x = Φmy
Reference:
1. http://fourier.eng.hmc.edu/e161/lectures/klt/node4.html
2. http://fourier.eng.hmc.edu/e161/lectures/klt/node3.html
相关文章推荐
- MySQL show
- rpmbuild 简单参数解释
- XEN linux虚拟机配置实例
- linux增加loop设备上限
- 几个帅气的linux命令
- iptables 基本说明
- SELinux管理与配置
- xinetd-ftpd 访问控制例子
- Google开源网页加速工具Page Speed
- Creating your own JavaScript Library
- 记录一个坑爹的问题
- linux tr命令详解
- cpanm perl模块自动安装
- [Linux C]双色球计算程序
- Project Euler 46 solution optimized using C++ meta-programming
- Mac设置截图保存位置
- 希尔排序算法
- 逆向工程破解软件的一些汇编命令
- Java中匿名内部类总结
- tableView的刷新,cell重用失败的问题