1. SVD 是什么
奇异值分解就是以一种方便的方式将矩阵分解成更简单且有直观意义的矩阵的乘积。
2. 预备知识
2.1 向量正交
点积为0的两个向量。
2.2 正交变换
正交变换$ T : V \rightarrow V$是保持内积的线性变换。即是说,对两个向量,它们的内积等于它们在函数$T$下的内积:
这也就是说,正交变换保持向量的长度不变,也保持两个向量之间的角度不变。
2.3 向量点积
两个向量$\vec{a} = [a1, a2, …, an]$和$\vec{b} = [b1, b2, …, bn]$的点积定义为:
这里的Σ指示求和符号。
例如,两个三维向量[1, 3, -5]和[4, -2, -1]的点积是
使用矩阵乘法并把(纵列)向量当作n×1 矩阵,点积还可以写为:
$ \vec{a} \cdot \vec{b} = \vec{a}^T \vec{b}$,
这里的$\vec{a}^T$表示矩阵$\vec{a}$的转置。
使用上面的例子,将一个1×3矩阵(就是行向量)乘以一个3×1向量得到结果(通过矩阵乘法的优势得到1×1矩阵也就是标量):
3. 理论描述
假设M是一个m×n阶矩阵,其中的元素全部属于域K,也就是实数域或复数域。如此则存在一个分解使得
Mv_1 = σ_1u_1 \\
Mv_2 = σ_2u_2
x = (v_1 · x) v_1 + (v_2 · x) v_2
Mx = (v_1 · x) Mv_1 + (v_2 · x) Mv_2 \\
Mx = (v_1 · x) σ_1u_1 + (v_2 · x) σ_2u_2
v · x = v^Tx
Mx = u_1σ_1 v_1^Tx + u_2σ_2 v_2^Tx \\
M = u_1σ_1 v_1^T + u_2σ_2 v_2^T
$$
通常表述成
,
这里U是列向量u1和u2组成的矩阵,Σ是非零项为σ1 和 σ2的对角矩阵,V是列向量v1和v2组成的矩阵。带有上标T的矩阵V是矩阵V的转置。V表示了原始空间中的正交基,U描述了相关空间的正交基,Σ描述了V中的向量变成U中的向量时被拉伸的倍数。
参考文献
We Recommend a Singular Value Decomposition:http://www.ams.org/samplings/feature-column/fcarc-svd
维基百科数量积定义:https://zh.wikipedia.org/zh/%E6%95%B0%E9%87%8F%E7%A7%AF
维基百科奇异值分解定义:https://zh.wikipedia.org/wiki/%E5%A5%87%E5%BC%82%E5%80%BC%E5%88%86%E8%A7%A3
因为我们是朋友,所以你可以使用我的文字,但请注明出处:http://alwa.info