压缩感知笔记——动态模态分解(DMD)

压缩感知初入门小白,如有错误,欢迎指正交流~

动态模态分解(DMD)

  • 前言
  • 特征值分解
  • 奇异值分解(SVD)
  • 动态模态分解(DMD)
  • 参考

今天在阅读论文时,文中设计到较多动态模态分解的知识,因此学习了一下,记录一哈~

前言

动态模态分解DMD其思想与机器学习中的PCA降维比较类似,而PCA中的核心是奇异值分解SVD,奇异值分解是特征值分解的推广,因此本文从特征值分解开始,延伸到动态模态分解。

特征值分解

首先放上数学表示:
特征值分解
【注】A为方阵!其中Q是A的特征向量组成的矩阵,而∑是一个对角矩阵,对角线元素是A的特征值,由大至小排列。(特征值和特征向量求解:Av=λv,v即特征向量,λ即特征值)

形象解释:
矩阵的本质即对某个向量做线性变换。如已知矩阵矩阵M
这个矩阵与一个向量[x,y]^T相乘,在坐标系上表示如图:
压缩感知笔记——动态模态分解(DMD)_第1张图片
图中蓝色箭头即矩阵M的最主要的变换方向。那么我们想描述一个矩阵,就是要描述它对应的变换,即它的主要的变换方向即可。而特征值分解中,Q中的特征向量即代表矩阵的特征即变化方向。而∑中的特征值表示的便是对应特征的重要程度。继而特征值分解便可表示一个矩阵。

奇异值分解(SVD)

上文所述的特征值分解可以用于近似表示一个矩阵,但存在很多局限,其中很重要的便是被表示矩阵A必须为方阵,为解决这一局限,推广到任意矩阵,引入了奇异值分解SVD的方法。
首先放上数学表示:
SVD
其中A是NxM矩阵;U是NxN矩阵,其中包含的向量正交,称作左奇异向量;∑是NxM矩阵,为一个对角阵,对角元素为奇异值由大至小排列;V^T是NxN矩阵,其中包含向量正交,称作右奇异向量。

奇异值求解:
首先对A做转置,然后求转置与A的相乘的特征值与特征向量。即:特征值求解
其中vi即矩陣V^T中的右奇異向量。此外:压缩感知笔记——动态模态分解(DMD)_第2张图片
σ就是上面说的奇异值,ui就是矩陣U中的左奇异向量。σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,部分奇异值分解定義如下:在这里插入图片描述

动态模态分解(DMD)

解釋過奇異值分解后,下面來説一下動態模態分解,假設對於某個系統(假設是綫性的)
在这里插入图片描述
將其離散化:在这里插入图片描述
我們進一步記錄在这里插入图片描述
可以得到:在这里插入图片描述

至此,也就是説,對於綫性系統(或者近似綫性系統),可以通過状态的“轨迹数据”
[公式]
恢复出该系统。离散化后的动力系统的解如下形式在这里插入图片描述
其中B是係數,Λ是矩陣A的特徵值,Ψ是矩陣A的特徵向量。
那什么是动态模态分解呢?如前言所述,其实就是给线性动力系统降维的一种方法。在很多应用中,数据的维度是非常高的,所以计算特征值特征向量就非常的困难。
这时候,如果我们先去对 X^(n) 做奇异值分解(SVD),并且只保留前r項,再去計算Ar的特徵值特徵向量,計算量速度都要提升很多,(因爲是r近似)。假设 Ar 的特征值特征向量为: Ar=WΛr(W的逆),我们便可以根据Λr中的特征值来对不同的特征向量(即“模态”)进行分类了。

总结一下,就是假设系统是线性的,我们就可以通过观测到的数据 [x0,x1…xn] 来“恢复”该系统(也就是计算出矩阵A)。根据线性系统理论,我们就可以通过计算A的特征值特征向量知道不同空间上的“模态”在时间上“如何传递”(指数形增长、衰退或是震荡)。但是有些系统“状态维度‘较大,计算成本较高,我们可以通过先用“动态模态分解”的“小窍门“对其先降维,然后再去找特征值特征向量就简单得多了。

参考

【1】知乎:动态模态分解(DMD)与数据科学
【2】机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用

你可能感兴趣的:(压缩感知,算法,矩阵)