SVD分解示例

帮助到你了就点个赞吧!

Powered By Longer-站在巨人的肩膀上


对矩阵A进行SVD分解的公式:A_{m*n}=U\Sigma V^T。其中A可以不是方阵,U_{m*m}是左奇异矩阵,V_{n*n}是右奇异矩阵。其中V是A^TA的特征向量(注意公式中V有个转置操作),U是AA^T的特征向量。\Sigma_{m*n}是对角阵,对角元素是U、V的共同特征值,例如有三个特征值时:\Sigma =[[\lambda_{1},0,0],[0,\lambda_{2},0],[0,0,\lambda_{3}]]

举个简单的例子,对矩阵A进行SVD分解:

A=\begin{bmatrix} 0&1\\ 1&1 \\ 1&0 \end{bmatrix}

A^TA=\begin{bmatrix} 0&1&1\\ 1&1&0 \end{bmatrix}*\begin{bmatrix}1&0\\1&1\\0&1\end{bmatrix}=\begin{bmatrix}2&1\\1&2\end{bmatrix}

AA^T = \begin{bmatrix}1&0\\1&1\\0&1\end{bmatrix} * \begin{bmatrix}0&1&1\\1&1&0\end{bmatrix} = \begin{bmatrix}1&1&0\\1&2&1\\0&1&1\end{bmatrix}

从而得到A^TA的特征值和特征向量(v_{1},v_{2}),右奇异矩阵V=[v_{1},v_{2}]V^T=[v_{1},v_{2}]^T

\lambda_{1}=3;v_{1}=\begin{bmatrix}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\end{bmatrix}; \lambda_{2}=1;v_{2}=\begin{bmatrix}-\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\end{bmatrix}

同时得到AA^T的特征值和特征向量(u_{1},u_{2},u_{3}),左奇异矩阵U=[u_{1},u_{2},u_{3}]

\lambda_{1}=3;u_{1}=\begin{bmatrix}\frac{1}{\sqrt{6}}\\\frac{2}{\sqrt{6}}\\\frac{1}{\sqrt{6}}\end{bmatrix}; \lambda_{2}=1;u_{2}=\begin{bmatrix}\frac{1}{\sqrt{2}}\\0\\-\frac{1}{\sqrt{2}}\end{bmatrix}; \lambda_{3}=1;u_{3}=\begin{bmatrix}\frac{1}{\sqrt{3}}\\-\frac{1}{\sqrt{3}}\\\frac{1}{\sqrt{3}}\end{bmatrix};

因此奇异值:\alpha_{1}=\sqrt{\lambda_{1}}=\sqrt{3};\alpha_{2}=\sqrt{\lambda_{2}}=1

所以对角阵\Sigma_{m*n}= \begin{bmatrix}\sigma_{1}&0\\0&\sigma_{2}\\0&0\end{bmatrix}= \begin{bmatrix}\sqrt{3}&0\\0&1\\0&0\end{bmatrix}

至此左奇异矩阵 U_{m*m},右奇异矩阵V_{n*n}和对角阵\Sigma_{m*n}都凑齐了,A_{m*n}=U\Sigma V^T即为: 

A_{m*n}=U\Sigma V^T=\begin{bmatrix}\frac{1}{\sqrt{6}}&\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{3}}\\ \frac{2}{\sqrt{6}}&0&-\frac{1}{\sqrt{3}}\\ \frac{1}{\sqrt{6}}&-\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{3}}\end{bmatrix} \begin{bmatrix}\sqrt{3}&0\\0&1\\0&0\end{bmatrix} \begin{bmatrix}\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\-\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\end{bmatrix}

另外:生成多元具有相关性的随机变量时,也可以使用SVD分解法,详见:多元相关随机变量的生成。


帮助到你了就点个赞吧!

Powered By Longer-站在巨人的肩膀上

你可能感兴趣的:(线代,矩阵,线性代数,算法)