矩阵奇异值分解(SVD)及应用

举报
aqhs 发表于 2023/01/01 09:43:00 2023/01/01
【摘要】 奇异值分解(SVD)将一个实数矩阵分解成两个正交矩阵和一个对角矩阵的乘积,A=U*S*V’,U称为左奇异矩阵,V称为右奇异矩阵,S是对角矩阵(称为奇异矩阵)。奇异值分解(SVD)是线性代数中的经典问题,在数值分析、控制理论、信号与图像处理、系统辨识、机器学习等领域有着重要的应用,是很多算法的基石。介绍了SVD算法在数据压缩与降维、信号处理与分析方面的应用并给出了实例。

矩阵奇异值分解(SVD)及应用

【摘要】奇异值分解(Singular Value Decomposition,SVD)将一个实数矩阵分解成两个正交矩阵和一个对角矩阵的乘积,A=U*S*V’,U称为左奇异矩阵,V称为右奇异矩阵,S是对角矩阵(称为奇异矩阵)。奇异值分解(SVD)是线性代数中的经典问题,在数值分析、控制理论、信号与图像处理、系统辨识、机器学习等领域有着重要的应用,是很多算法的基石。最后介绍了SVD算法在数据压缩与降维、信号处理与分析方面的应用,给出了使用SVD算法实施信号去噪和MUSIC (multiple signal classification)频谱分析的实例。

1、奇异值分解

设A是m×n维实数矩阵,A的行数为m,列数为n,将矩阵A分解成三个矩阵U、S、V的乘积,

   

U是m×m维正交矩阵,其列向量称为左奇异向量。V是n×n维正交矩阵,其列向量称为右奇异向量。S是m×n维对角矩阵,称为奇异矩阵,对角线上的值为奇异值(非负、降序),奇异值是R1=AA’矩阵或者R2=A’A矩阵的特征值的平方根,R1和R2具有相同的特征值。U和V不具有唯一解,UU’=I(单位矩阵),VV’=I(单位矩阵)。矩阵U的列由AA’矩阵的特征向量组成,矩阵V的列由A’A矩阵的特征向量组成。A’、U’、V’分别是矩阵A、U、V的转置矩阵。

矩阵A的秩为r,r≤min(m,n),可以被认为是由矩阵表示的独特信息量多少的代表,秩越高,信息越高。这里S矩阵对角线上不为零的奇异值个数就等于矩阵A的秩。当矩阵A是实对称矩阵时,则U=V,其列是A的特征向量,S对角元素是矩阵A的特征值。

矩阵奇异值分解(SVD)是线性代数中的经典问题,人们发现SVD在数值分析、控制理论、信号与图像处理、系统辨识等领域有着重要的应用。矩阵奇异值分解(SVD)也是机器学习领域广泛运用的算法,它不仅可以用在降维算法中的特征值分解,还可以用于推荐系统、自然语言处理等领域。可以说SVD是很多算法的基石。

参考文献:

[1] 胡广书 编著. 数字信号处理--理论、算法与实现[M]. 北京 清华大学出版社,2003年8月第2版,第441-445页.
[2] 蒋长锦 编著. 科学计算和C程序集[M]. 合肥 中国科学技术大学出版社,1998年9月第1版,第217-219页.
[3] 徐士良 编. C常用算法程序集[M]. 北京 清华大学出版社,1995年1月第1版,第169-185页.
[4] 周志华 著. 机器学习[M]. 北京 清华大学出版社,2016年1月第1版,第229-232页.
[5] 余辉里. 奇异值分解(SVD)及其在时间序列分析中的应用—算法与问题研究[J]. 信息与控制,1990年第2期,第30-38页.
[6] 徐勇,荆涛 等译. 神经网络模式识别及其实现[M]. 北京 电子工业出版社,1999年6月第1版,153-160页.
      [美]Abhijit S.Pandya, Robert B.Macy 著. Pattern Recognition with Neural Networks in C++. 1996 by CRC Press, Inc.

2、奇异值分解计算例子

例1:给定4×4的方阵,分别用MATLAB和本软件计算SVD结果:

本软件SVD计算结果:

MATLAB的SVD计算结果:

上述两个软件计算结果均满足U’*U=I(单位矩阵),V’*V=I(单位矩阵),U’*A*V=S。但是两个方法计算的U和V不同,存在符号差异,这也说明U和V不是唯一的。

例2:给定4×3矩阵A,计算SVD

本软件SVD计算结果:

MATLAB计算结果:

上述两个软件计算结果均满足U’*U=I(单位矩阵),V’*V=I(单位矩阵),U’*A*V=S。但是两个方法计算的U和V不同,存在符号差异,这也说明U和V不是唯一的。

例3:4×4实对称矩阵SVD分解

A=

实对称矩阵的SVD分解是一个特例,其左奇异向量和右奇异向量矩阵相同,其列由实对称矩阵A的特征向量组成,奇异值等于实对称矩阵A的特征值。多变量的协方差矩阵是实对称矩阵,直接求特征值和特征向量可减少运算量。

参考资料:主成分分析(K-L变换)与信号的分解与合成(滤波)

3、奇异值分解应用举例

(1)SVD应用:时间序列去噪

设观察到的时间序列信号为x(t),x(t)=s(t)+w(t),其中s(t)是有用信号,w(t)是噪声信号。已知信号x(t)的长度为N,即t = 0,1, …, N-1,用x(t)可以构造矩阵,

该矩阵称为汉克尔(Hankel)矩阵。对矩阵X作奇异值分解(SVD),并让较小的奇异值为零,可以重建出减少了噪声的信号x(i), i=0,1,…,N-1,N=M+L-1。


为了处理更长的时间序列,建立如下L×M维矩阵:

对矩阵X作奇异值分解(SVD),并让较小的奇异值为零,可以重建出减少了噪声的信号x(i), i=0,1,…,M*L-1。


SVD去噪软件操作,对于当前信号,建立上述矩阵,使用SVD算法选取足够的主要成分,进行去噪处理。

菜单操作:《处理》→ 奇异值分解(SVD)去噪》,弹出对话框,要求用户输入矩阵行数和列数(范围3-100),以及主要成分的百分比(范围0-100)。主成分比例越大去噪后信号越接近原信号。


Δ一段脉搏波去噪例子

在弹出的奇异值分解(SVD)去噪参数设置对话框(下图左)中,点击“去噪”按钮后,开始对当前通道当前显示段信号进行滤波去噪处理,在完成处理计算后出现对话框(下图右),其中显示在进行去噪处理时使用的主成分个数。矩阵行数×列数(记为N)是处理信号的最大样点数,如果显示信号的样点数大于N则只处理前N点,如果显示信号的样点数小于N则补零到N点后进行处理。行数和列数的取值范围在[3,100]之间。主成分比例(%)是一个百分数,取值范围在(0,100)之间,它决定使用奇异值的个数,主成分比例越小使用的奇异值个数就越少,对数据压缩来说压缩比就越大,对信号去噪来说去噪后信号波形与原波形差异就越大。


Δ一段脑电SVD去噪例子



Δ一段语音SVD去噪例子


(2)SVD应用:数据压缩

对于m×n维矩阵A,可以用较大的k个奇异值和对应的左右奇异向量来近似表示该矩阵,即:

由于k远小于min(m,n),A矩阵近似表示的压缩比r=(m*k+k+k*n)/(m*n)。如果m=n,k=n,那么r=2+1/n,不仅起不到数据压缩的效果,反而增加了。只有当k<<min(m,n)时才能起到压缩的效果。例如m=200,n=100,k=10,则压缩比为r=0.1505;当k=2时,压缩比r=0.0302。如果m=100,n=100,k=1,那么r=0.0201。

如果m=64,n=64,k=1,则压缩比r=0.0301。

设A的近似矩阵为B,

(3)SVD应用:数据降维

设对于n维向量X,有N个观察样本,

利用这些观察样本计算X的n×n维的协方差矩阵R,R是实对称矩阵,计算其特征值和特征向量,特征值按由大到小排列,对应的特征向量组成变换矩阵U的列,取前m(m<n)个特征向量,构成n×m维变换矩阵Q,对输入向量X进行变换达到降维的目的,

Y向量比X向量的维数低,用变换后的m维向量Y作为机器学习的输入,降低了输入维度,也或许抑制了噪声,使得学习算法的复杂性也随之降低。


(4)MUSIC谱估计

多信号分类法(multiple signal classification, MUSIC)估计正弦信号频率。参考文献:

[1] Schmidt R O. Multiple emitter location and signal parameter estimation. IEEE Trans. Antennas Propag., 1986, 33:347-366.
[2] 胡广书 编著. 数字信号处理 理论、算法与实现[M]. 北京 清华大学出版社,2003年8月第2版,第566-570页. 公式(12.10.23).

已知信号序列x(t),t=0,1, …, N-1,计算其自相关函数序列r(i),i=0,1, …, p-1,例如p=50。构建自相关矩阵:

计算该矩阵的特征向量Vi和特征值si,且按特征值由大到小排列。

令e(w)为:

指定m,0<m<p,用以下公式计算MUSIC频谱估计:

以下是两个正弦信号与白噪声叠加的结果:

由此可看出,信号中包含频率为7Hz和10Hz两个正弦信号。这里使用的自相关函数估计值为r(0) ~ r(49),估计结果和成分(这里选择为10~49)的选择有较大关系。


相关文章

多通道信号分析软件系统
多通信号分析软件(MUSIA)功能介绍
多维特征参数机器学习算法
多维特征参数机器学习软件
Kohonen自组织特征映射神经网络(环形和球面形网络)
矩阵的三维图形显示软件
数值矩阵的图形表示
图片浏览软件工具
图像处理基本算法及软件简介
数据分布点纹图
曲线拟合软件
特殊函数计算器
滤波器设计、自适应滤波、匹配滤波方法
离散正交变换及其应用
离散小波变换用于信号滤波
主成分分析(K-L变换)与信号的分解与合成(滤波)
信号的经验模态分解(EMD)
信号的样本熵序列计算
信号功率谱估计
信号的双谱分析
短时傅里叶变换时变功率谱分析
希尔伯特(Hilbert)变换信号瞬时频率计算
给定概率分布的随机变量仿真
信号的特征参数计算
多通道信号数据压缩存储
生物医学信号处理与分析软件系统设计
心电R波检测之差分奇点法和局部极值排除法
信号中的能量包检测


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。