矩阵白化原理及推导

news/2024/11/7 13:36:18/

在看CSP算法时,发现用到了矩阵白化,所以在这里记录一下。
以下内容来自:【数学】矩阵白化原理及推导; 矩阵白化

矩阵白化

  • 矩阵白化目的
  • 矩阵白化推导
  • 示意代码
  • 秩亏缺矩阵的白化
  • 白化与PCA
  • 参考文章

矩阵白化目的

如对于任意一个矩阵 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×n1/2V1H

白化后的信号:

Y = P X Y=PX Y=PX

此时白化后信号的协方差矩阵:

在这里插入图片描述

至此,完成白化。这也容易理解,有效信号占一个子空间,对子空间白化,就是对有效信号进行白化。

白化与PCA

PCA前文有分析,给出PCA步骤:

步骤一: 数据中心化——去均值;

步骤二: 求解协方差矩阵;

步骤三: 利用特征值分解/奇异值分解 求解特征值以及特征向量;

步骤四: 利用特征向量构造投影矩阵;

步骤五: 利用投影矩阵,得出降维的数据。

以上文二维数据为例:
在这里插入图片描述

  • 中心化: 白化的中心化,PCA也需要中心化;
  • 旋转: 白化步骤中的旋转,即旋转后的坐标就是PCA对应的第一、第二投影方向,如图中红线、绿线所示;
  • 拉伸: 不同维度的特征值通常差别较大,在PCA中就是对特征值进行归一化。如果将不同维度的数据看作不同特征,白化步骤的拉伸本质也是特征的归一化

参考文章

【数学】矩阵白化原理及推导

矩阵白化


http://www.ppmy.cn/news/665847.html

相关文章

图像白化处理

1.白化处理的作用 图像白化(whitening)可用于对过度曝光或低曝光的图片进行处理,减少光线对数据的动态影响,下图所示,左图是过分曝光,右图是白化后的结果; 2.白化处理的原理 处理的方式就是将图…

matlab 矩阵白化,白化(预处理步骤)【转】

介绍 我们已经了解了如何使用PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的…

白化滤波器 matlab,白化滤波器-matlab-程序.doc

随机信号分析实验 PAGE 3 - 白化滤波器 原理 在统计信号处理中,往往会遇到等待处理的随机信号是非白色的,例如云雨、海浪、地物反射的杂乱回波等,它们的功率谱即使在信号通带内也非均匀分布。这样会给问题的解决带来困难。克服这一困难的措施之一是对色噪声进行白化处理。主…

PCA白化

直接上代码! % pca和白化 function features_pca_white pca_and_whiting(feature,a)featureszscore(feature);[~,score,~] pca(features);features_pca score(:,1:a);xfeatures_pca;sigma(x*x)/size(x,2);[u,s,~]svd(sigma);xRot zeros(size(x));xRotu*x;epsi…

白化操作

白化whitening 原文地址: http://blog.csdn.net/hjimce/article/details/50864602 一、相关理论 白化这个词,可能在深度学习领域比较常遇到,挺起来就是高大上的名词,然而其实白化是一个比PCA稍微高级一点的算法而已,所以如果熟悉PCA,那么其实会发现这是一个非常简单…

matlab矩阵的白化,白化原理及Matlab实现

白化的原理: 随机向量的“零均值化”和“空间解相关”(也叫白化)是最常用的两个预处理过程,其中“零均值化”比较简单,而“空间解相关”涉及一些矩阵的知识。 设有均值为零的随机信号向量 x ,其自相关矩阵为 Rx=E[xxT] ≠ I 很明显, Rx 是对称矩阵,且是非负定的(所有特征…

matlab白化代码,[支持m_map白化] MATLAB对地图进行白化

function maskMap(shapefile, masktype, varargin) % 对所绘制图形进行白化 % 输入参数: % shapefile : shapefile文件。 字符串型或元胞型 % 为元胞数组时可通过指定多个省份的shp文件进行白化。 % 比如要白化江苏省,江西省,黑龙江省。…

Sufer白化实现

swpu 物探 杨连刚 2018/4/13 二维坐标系下,不规则网格(已知坐标x,y及对应位置值val)绘制等值线云图,能解决这个问题,特别感谢长安大学 王琦同学热心帮助。 步骤 1根据起伏边界,按照逆时针建立边界白化…