本文主要是介绍数据预处理之白化-Whitening,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
理论知识
随机向量的“零均值化”和“空间解相关”是最常用的两个预处理过程,其中“零均值化”比较简单,而“空间解相关”涉及一些矩阵的知识。
设有均值为零的随机信号向量 ,其自相关矩阵为
很明显, 是对称矩阵,且是非负定的(所有特征值都大于或等于0)。
现在,寻找一个线性变换 对 进行变换,即 ,使得
上式的含义是:y的各分量是不相关的,即 。通常将这个过程称为“空间解相关”、“空间白化”或“球化”。 称为空间解相关矩阵(空间白化矩阵、球化矩阵)。
由 的性质可知,其存在特征值分解:
是正交矩阵, 是对角矩阵,其对角元素是 特征值。
令
B=Σ−1/2QT
则有
因此,通过矩阵 线性变换后, 的各个分量变得不相关了。
对于 来说,特征值分解和奇异值分解是等价的,而奇异值分解的数值算法比特征值分解的数值算法具有更好的稳定性,因此一般都用奇异值分解来构造空间解相关矩阵 。
应该注意到,“空间解相关”不能保证各分量信号之间的“独立性”,但它能够简化盲分离算法或改善分离算法的性能。
最为熟知的例子是白噪声。元素 可以是一个时间序列在相继时间点 的值,且在噪声序列中没有时间上得相关性。术语“白”来自于白噪声的能谱在所有频率上是一个常数这一事实,就像含有各种颜色的白光谱一样。白化的本质就是去相关加缩放。
由上式得到的 解相关矩阵 肯定不是唯一的白化矩阵。容易看到,任何矩阵 ( 为正交矩阵)也是白化矩阵。 这是因为对 ,下式成立:
一个重要的例子是矩阵 。这也是一个白化矩阵,因为它是用正交矩阵 左乘式矩阵 得到的。这个矩阵称为 的逆均方根,并用 表示,因为它来自于均方根概念向矩阵的标准推广。
理论知识参考:《盲信号处理》,《Independent Component Analysis》
Matlab代码实现
C = cov(patches);M = mean(patches);[V,D] = eig(C);P = V * diag(sqrt(1./(diag(D) + 0.1))) * V';patches = bsxfun(@minus, patches, M) * P;
代码中patches表示矩阵或图像(灰度),代码中用到的函数均为matlab built-in function.
参考: 数据白化预处理
这篇关于数据预处理之白化-Whitening的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!