当前位置:网站首页>矩阵白化原理及推导
矩阵白化原理及推导
2022-08-02 20:38:00 【梁小憨憨】
在看CSP算法时,发现用到了矩阵白化,所以在这里记录一下。
以下内容来自:【数学】矩阵白化原理及推导; 矩阵白化
矩阵白化目的
如对于任意一个矩阵 X X X,对其求协方差,得到的协方差矩阵 c o v ( X ) cov(X) cov(X)并不一定是一个单位阵(对角阵);【注意:协方差矩阵是对称矩阵,但不一定是对角阵】而矩阵白化就是找到一个变换矩阵 P P P,使得 Y = P X Y=PX Y=PX的协方差矩阵 c o v ( Y ) cov(Y) cov(Y)是一个单位阵(对角阵)。
因为通过矩阵白化后,协方差是个对角阵(单位阵),那么就代表着矩阵 Y Y Y的各个向量(向量是列向量还是行向量要根据求协方差时 c o v ( X ) = X X T cov(X)=XX^T cov(X)=XXT还是 X T X X^TX XTX来判断)之间就不相关了。
或者说,矩阵白化的目的就是让被变换的矩阵经过变换后其向量的方差相同(因为是单位阵)。
矩阵白化推导
对于矩阵 X X X,其协方差矩阵 c o v ( X ) = X X T cov(X)=XX^T cov(X)=XXT并不一定为对角矩阵,但是对于实对称的协方差矩阵可以有如下的特征值分解:
c o v ( X ) = Q Λ Q T cov(X)=QΛQ^T cov(X)=QΛQT
其中的 Λ Λ Λ为由特征值组成的对角矩阵, Q Q Q为对应的特征向量,是一个正交矩阵。现在我们要找到线性变换矩阵 P P P,使得 Y = P X Y=PX Y=PX的协方差矩阵可以是单位阵,即
c o v ( Y ) = Y Y T = P X ( P X ) T = P X X T P T = P c o v ( X ) P T = E (单位阵) cov(Y)=YY^T=PX(PX)^T=PXX^TP^T=Pcov(X)P^T=E(单位阵) cov(Y)=YYT=PX(PX)T=PXXTPT=Pcov(X)PT=E(单位阵)
现在令 P = Λ − 1 / 2 Q T P=Λ^{−1/2}Q^T P=Λ−1/2QT(矩阵开根号就是其中的每个元素开根号),那么有

所以说当 P = Λ − 1 / 2 Q T P=Λ^{−1/2}Q^T P=Λ−1/2QT时,可以使得 Y = P X Y=PX Y=PX的协方差矩阵为单位阵(对角阵)。
因此 ,通过矩阵白化后,矩阵Y的各个向量(列向量还是行向量根据上文确定)之间就不相关了。
示意代码
clc, clear;
x = -10:.1:10;
x = x +randn(1,length(x));
y = 0.6*x + randn(1,length(x));
subplot(2,1,1)
plot(x, y, 'o')
axis ([-15 15 -10 10])
data = [x;y];
C = data*data';
[u,s,v] = svd(C);
W = diag(1./sqrt(diag(s)))*v';
b = W*data;
subplot(2,1,2)
plot(b(1,:),b(2,:),'o')
axis ([-15 15 -10 10])


可见白化其实就是让信号尽可能不相关。在分析PCA的时候,我们知道特征值与对应方向的方差有关联,所以白化就是这个思路:首先旋转坐标轴,其次根据对应方向的方差(特征值)进行伸缩,中心化的目的就是为了保证变换前后数据中心对应坐标轴中心,而不至于因为旋转/伸缩而偏离坐标原点太过分:

是不是觉得与PCA相像?后面给出分析。
秩亏缺矩阵的白化
当协方差矩阵为秩亏缺时,可以写为:
此时白化矩阵为:
P = D n × n − 1 / 2 V 1 H P={D_{n×n}}^{−1/2}V_1^H P=Dn×n−1/2V1H
白化后的信号:
Y = P X Y=PX Y=PX
此时白化后信号的协方差矩阵:

至此,完成白化。这也容易理解,有效信号占一个子空间,对子空间白化,就是对有效信号进行白化。
白化与PCA
PCA前文有分析,给出PCA步骤:
步骤一: 数据中心化——去均值;
步骤二: 求解协方差矩阵;
步骤三: 利用特征值分解/奇异值分解 求解特征值以及特征向量;
步骤四: 利用特征向量构造投影矩阵;
步骤五: 利用投影矩阵,得出降维的数据。
以上文二维数据为例:
- 中心化: 白化的中心化,PCA也需要中心化;
- 旋转: 白化步骤中的旋转,即旋转后的坐标就是PCA对应的第一、第二投影方向,如图中红线、绿线所示;
- 拉伸: 不同维度的特征值通常差别较大,在PCA中就是对特征值进行归一化。如果将不同维度的数据看作不同特征,白化步骤的拉伸本质也是特征的归一化。
参考文章
边栏推荐
- Wiring diagrams of switches, motors, circuit breakers, thermocouples, and meters
- js如何获取浏览器缩放比例
- 回文自动机+CodeTON Round 2 C,D
- ACE JET NPOI
- .NET performance optimization - you should set initial size for collection types
- golang 刷leetcode:从栈中取出 K 个硬币的最大面值和
- Bee 事务注解 @Tran 使用实例
- 信息学奥赛一本通(1260:【例9.4】拦截导弹(Noip1999))
- 14、学习MySQL 连接的使用
- golang 刷leetcode:Morris 遍历
猜你喜欢
![Informatics Olympiad All-in-One (1259: [Example 9.3] Find the longest non-descending sequence)](/img/a2/6d548909341a65129db2e69b90e5bf.png)
Informatics Olympiad All-in-One (1259: [Example 9.3] Find the longest non-descending sequence)

李沐动手学深度学习V2-BERT预训练和代码实现

信息学奥赛一本通(1258:【例9.2】数字金字塔)

用户之声 | GBASE南大通用实训有感

汉源高科千兆4光4电工业级网管型智能环网冗余以太网交换机防浪涌防雷导轨式安装

软件成分分析:华为云重磅发布开源软件治理服务

引用类型 ,值类型 ,小坑。

Mysql用户管理

Electrical diagram of power supply system
The time series database has been developed for 5 years. What problem does it need to solve?
随机推荐
解道9-编程技术6
.NET性能优化-你应该为集合类型设置初始大小
JMeter的基本使用
【目标检测】YOLOv5:640与1280分辨率效果对比
包管理工具Chocolate - Win10如何安装Chocolate工具、快速上手、进阶用法
MSTP与STP
李沐动手学深度学习V2-bert和代码实现
软件测试的流程规范有哪些?具体要怎么做?
C primer plus学习笔记 —— 9、联合&枚举&typdef
从零开始配置 vim(5)——本地设置与全局设置
数据库分析与优化
拥抱Cmake小朋友 简单又实用,但是不灵活
信息学奥赛一本通(1258:【例9.2】数字金字塔)
Packages and packages, access modifiers
【SLAM】DM-VIO(ros版)安装和论文解读
快速构建电脑软件系统 、超好用经典的网页推荐汇总
go——垃圾回收机制(GC)
华为设备配置BFD多跳检测
Tencent YunMeng every jie: I experienced by cloud native authors efficiency best practices case
Informatics Olympiad All-in-One (1260: [Example 9.4] Intercepting Missiles (Noip1999))