【数学基础】第十七课:奇异值分解

1.奇异值分解

奇异值分解(Singular Value Decomposition,简称SVD):对于任何一个矩阵 B m × n B_{m\times n} Bm×n,存在正交矩阵 P m × m , Q n × n P_{m\times m},Q_{n\times n} Pm×m,Qn×n,使得 B = P D Q T B=PDQ^T B=PDQT。其中, D m × n D_{m\times n} Dm×n是一个只有对角元素不为零的矩阵。

矩阵 P = ( p 1 ⃗ , p 2 ⃗ , . . . , p m ⃗ ) P=(\vec{p_1},\vec{p_2},...,\vec{p_m}) P=(p1 ,p2 ,...,pm )的大小为 m × m m\times m m×m,列向量 p 1 ⃗ , p 2 ⃗ , . . . , p m ⃗ \vec{p_1},\vec{p_2},...,\vec{p_m} p1 ,p2 ,...,pm B B T BB^T BBT的特征向量,也被称为矩阵 B B B左奇异向量(left singular vector)

矩阵 Q = ( q 1 ⃗ , q 2 ⃗ , . . . , q m ⃗ ) Q=(\vec{q_1},\vec{q_2},...,\vec{q_m}) Q=(q1 ,q2 ,...,qm )的大小为 n × n n\times n n×n,列向量 q 1 ⃗ , q 2 ⃗ , . . . , q m ⃗ \vec{q_1},\vec{q_2},...,\vec{q_m} q1 ,q2 ,...,qm B T B B^TB BTB的特征向量,也被称为矩阵 B B B右奇异向量(right singular vector)

矩阵 D D D主对角线上的元素称为奇异值

D m × n D_{m\times n} Dm×n的形式举例如下( a m m ≠ 0 a_{mm}\neq 0 amm=0):

[ a 11 0 0 0 0 0 a 22 0 0 0 0 0 a 33 0 0 ] \begin{bmatrix} a_{11} & 0 & 0 & 0 & 0 \\ 0 & a_{22} & 0 & 0 & 0 \\ 0 & 0 & a_{33} & 0 & 0 \end{bmatrix} a11000a22000a33000000

2.如何计算SVD

  1. 计算 B B T BB^T BBT B T B B^TB BTB
  2. 分别计算 B B T BB^T BBT B T B B^TB BTB的特征向量及其特征值。
  3. B B T BB^T BBT的特征向量组成 P P P;而 B T B B^TB BTB的特征向量组成 Q Q Q
  4. B B T BB^T BBT B T B B^TB BTB的非零特征值求平方根,对应上述特征向量的位置,填入 D D D的对角元。

举个例子,假设我们有矩阵 B B B

B = [ 1 1 1 1 0 0 ] B=\begin{bmatrix} 1 & 1 \\ 1 & 1 \\ 0 & 0 \\ \end{bmatrix} B= 110110

计算 B B T BB^T BBT

B B T = [ 1 1 1 1 0 0 ] [ 1 1 0 1 1 0 ] = [ 2 2 0 2 2 0 0 0 0 ] BB^T=\begin{bmatrix} 1 & 1 \\ 1 & 1 \\ 0 & 0 \\ \end{bmatrix} \begin{bmatrix} 1 & 1 & 0 \\ 1 & 1 & 0 \\ \end{bmatrix}=\begin{bmatrix} 2 & 2 & 0 \\ 2 & 2 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} BBT= 110110 [111100]= 220220000

对其进行特征分解,分别得到特征值 λ 1 , λ 2 , λ 3 \lambda_1,\lambda_2,\lambda_3 λ1,λ2,λ3及其特征向量 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3

λ 1 = 4 ; x 1 = [ 1 2 1 2 0 ] \lambda _1 =4;x_1=\begin{bmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ 0 \\ \end{bmatrix} λ1=4;x1= 2 12 10

λ 2 = 0 ; x 2 = [ − 1 2 1 2 0 ] \lambda _2 =0;x_2=\begin{bmatrix} -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ 0 \\ \end{bmatrix} λ2=0;x2= 2 12 10

λ 3 = 0 ; x 3 = [ 0 0 1 ] \lambda _3 =0;x_3=\begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix} λ3=0;x3= 001

特征向量 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3组合起来得到 P P P

P = [ 1 2 − 1 2 0 1 2 1 2 0 0 0 1 ] P=\begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} P= 2 12 102 12 10001

计算 B T B B^TB BTB

B T B = [ 1 1 0 1 1 0 ] [ 1 1 1 1 0 0 ] = [ 2 2 2 2 ] B^TB=\begin{bmatrix} 1 & 1 & 0 \\ 1 & 1 & 0 \\ \end{bmatrix} \begin{bmatrix} 1 & 1 \\ 1 & 1 \\ 0 & 0 \\ \end{bmatrix} =\begin{bmatrix} 2 & 2 \\ 2 & 2 \\ \end{bmatrix} BTB=[111100] 110110 =[2222]

同样的对其进行特征分解,得到特征值 λ 1 , λ 2 \lambda_1,\lambda_2 λ1,λ2和特征向量 x 1 , x 2 x_1,x_2 x1,x2

λ 1 = 4 ; x 1 = [ 1 2 1 2 ] \lambda_1=4;x_1=\begin{bmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ \end{bmatrix} λ1=4;x1=[2 12 1]

λ 2 = 0 ; x 2 = [ − 1 2 1 2 ] \lambda_2=0;x_2=\begin{bmatrix} -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ \end{bmatrix} λ2=0;x2=[2 12 1]

特征向量 x 1 , x 2 x_1,x_2 x1,x2组合起来得到 Q Q Q

Q = [ 1 2 − 1 2 1 2 1 2 ] Q=\begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \end{bmatrix} Q=[2 12 12 12 1]

将矩阵 B B T BB^T BBT或矩阵 B T B B^TB BTB的非零特征值从大到小排列后开根号填入 D D D的对角元:

D = [ 2 0 0 0 0 0 ] D=\begin{bmatrix} 2 & 0 \\ 0 & 0 \\ 0 & 0 \\ \end{bmatrix} D= 200000

最终得到 B B B的奇异值分解:

B = P D Q T = [ 1 2 − 1 2 0 1 2 1 2 0 0 0 1 ] [ 2 0 0 0 0 0 ] [ 1 2 − 1 2 1 2 1 2 ] T = [ 1 1 1 1 0 0 ] B=PDQ^T=\begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 2 & 0 \\ 0 & 0 \\ 0 & 0 \\ \end{bmatrix} \begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \end{bmatrix}^T = \begin{bmatrix} 1 & 1 \\ 1 & 1 \\ 0 & 0 \\ \end{bmatrix} B=PDQT= 2 12 102 12 10001 200000 [2 12 12 12 1]T= 110110

3.SVD的应用

SVD通常用于以下领域:

  1. PCA。
  2. 推荐系统。
  3. 图像压缩。
  4. 潜在语义索引(Lstent Semantic Indexing, LSI)。

4.参考资料

  1. 一步步教你轻松学奇异值分解SVD降维算法
  2. 奇异值分解(SVD)的计算方法

想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️

个人博客网站:https://shichaoxin.com

GitHub:https://github.com/x-jeff


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值