SVD

奇异值分解

Posted by ZhengYang on 2016-09-02

SVD的通俗解释

SVD

从最简单的二维上来说,
原始正交基 $v_1,v_2$,通过乘以一个矩阵M,在原空间线性变换,得到一组新的正交积$u_1,u_2$,$\sigma_1,\sigma_2$是表示变化后长度的标量
$\sigma_1u_1=Mv_1$
$\sigma_2u_2=Mv_2$
原空间的向量$x$可以表示为,$x=v_1^Txv_1+v_2^Txv_2$
两边同时左乘M,得,
$Mx=Mv_1^Txv_1+Mv_2^Txv_2$
$Mx=Mv_1(v_1^Tx)+Mv_2(v_2^Tx)$
$Mx=\sigma_1u_1(v_1^Tx)+\sigma_2u_2(v_2^Tx)$
$M=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T$
$M=U\Sigma V^T$

为什么$u_1,u_2$正交?

$(\sigma_1u_1)^T\sigma_2u_2=(Mv_1)^TMv_2=v_1^TM^TMv_2$
如果M满秩,那么 $v_1^TM^TMv_2=\lambda v_1^Tv_2=0$
所以$(\sigma_1u_1)^T\sigma_2u_2=\sigma_1\sigma_2u_1^Tu_2=0$
故,变换后的基也是正交的。

SVD在推荐中的应用

矩阵乘法的含义是变换,伸缩,切变,旋转
svd可以把user-item评分矩阵分解为user-factor,factor-factor,factor-item矩阵
$$M=U\Sigma V^T$$
$M$为user-item原始评分矩阵
$U$为user-factor左奇异向量的集合
$\Sigma$为factor-factor,主对角线上为从大到小排列的特征值,其余为0。
$V$为factor-item右奇异向量的集合,注意这里在式中需要转置

分解的目的是去掉$\Sigma$的小特征值,和$U$与$V$中对应的factor列。

特征值分解 的特征向量为什么正交?

PCA中的协方差矩阵是实对称矩阵,考虑两个特征值与特征向量,如下,
$Au_1=\lambda_1u_1$
$Au_2=\lambda_2u_2$

分别左乘$u_1, u_2$,得,
$u_2^TAu_1=\lambda_1u_2^Tu_1$
$u_1^TAu_2=\lambda_2u_1^Tu_2$

两式相减,注意$A^T=A$,得,
$0=\lambda_1u_2^Tu_1-\lambda_2u_1^Tu_2$
$0=\lambda_1u_1^Tu_2-\lambda_2u_1^Tu_2$
$0=(\lambda_1-\lambda_2)u_1^Tu_2$

因为$\lambda_1-\lambda_2\neq 0$,所以$u_1,u_2$正交

PCA 与 SVD

相同

  1. 都是要求得到最大特征值,与对应的向量

不同

  1. PCA只是对方阵,且对阵的协方差矩阵分解
  2. SVD可以对任意的矩阵进行分解
  3. PCA得到的特征值,特征向量
  4. SVD会得到奇异值,左奇异向量,右奇异向量

SVD的定义解释

奇异值分解 (Singular Value Decomposition)

假设M是一个$m\times n$阶矩阵,其中的元素全部属于实数域或复数域。则存在一个分解使得
$$M=U\Sigma V^*$$
其中$U$是$m\times m$阶酉矩阵;是$m\times n$阶非负实数对角矩阵;而$V^*$是$V$的共轭转置,是$n\times n$阶酉矩阵。这样的分解就称作$M$的奇异值分解。$\Sigma$对角线上的元素$\Sigma_i$为$M$的奇异值。常见的做法是将奇异值由大而小排列,如此$\Sigma$便能由M唯一确定了。(虽然$U$和$V$仍然不能确定。)

酉矩阵(Unitary Matrix)

如果一个复数方阵$U$的共轭转置$U^*$ 等于 $U$的逆矩阵$U^{-1}$,则称$U$是酉矩阵。
$U^{*}U=UU^{*}=I$
In physics, especially in quantum mechanics, the Hermitian conjugate of a matrix is denoted by a dagger (†) and the equation above becomes
$U^{\dagger }U=UU^{\dagger }=I$
在实数域中,酉矩阵等同于正交矩阵
$U^{T}U=UU^{T}=I$
因此,酉矩阵是正交矩阵在复数域上的推广。

共轭转秩 (Conjugate Transpose)

矩阵A的共轭转置$A^*$ (又称埃尔米特共轭、埃尔米特转置或伴随矩阵)定义为:
$$(A^*)_{i,j}=\overline{A_{j,i}}$$
其中$(\cdot)_{i,j}$表示矩阵 i行 j列上的元素,${\overline {(\cdot )}}$表示标量的复共轭。
其实就是转置后,每个元素取复共轭。

共轭复数 (Complex Conjugate)

在数学中,复数 ($z$)的复共轭 ($\overline z$)是对虚部变号的运算。
$z=a+bi$的复共轭为$\overline z=a-bi$
$z=2+3i$的复共轭为$\overline z=2-3i$
$z=7$的复共轭为$\overline z=7$
将复数理解为复平面,则复共轭是对实轴的反射。复数$z$的复共轭有时也表为$z^{*}$。

Reference

http://blog.sciencenet.cn/blog-696950-699432.html
http://www.ams.org/samplings/feature-column/fcarc-svd
http://zhidao.baidu.com/question/1732051979137036227.html?qbl=relate_question_0&word=%CC%D8%D5%F7%D6%B5%BA%CD%CC%D8%D5%F7%CF%F2%C1%BF%20%D5%FD%BD%BB
https://en.wikipedia.org/wiki/Singular_value_decomposition
https://en.wikipedia.org/wiki/Unitary_matrix
https://en.wikipedia.org/wiki/Conjugate_transpose
https://en.wikipedia.org/wiki/Complex_conjugate