矩阵分解方法概述

矩阵分解概述

  • 1 为什么要学习矩阵分解
  • 2 矩阵低秩结构的意义
  • 3 矩阵分解与矩阵填充的区别
    • 3.1 矩阵分解与矩阵填充的定义
    • 3.2 矩阵分解与矩阵填充的差别
    • 3.3 推荐系统举例
  • 4 经典的矩阵分解方法
    • 4.1 特征值分解
    • 4.2 SVD分解(奇异值分解)
    • 4.3 MF模型(matrix factorization model)
  • 5 参考文献

声明:本文中的图为了方便均从别的博客中截取,相关博客已在参考文献中列出。

1 为什么要学习矩阵分解

2 矩阵低秩结构的意义

  简单来讲矩阵结构的低秩性,表示矩阵包含信息的冗余度,矩阵包含信息的冗余度越大,矩阵的秩越低。
  从物理意义上讲,矩阵的秩能够度量矩阵的行列之间的相关性。如果矩阵的各行或列是线性无关的,矩阵就是满秩的,也就是秩等于行数。回到上面线性方程组来说吧,因为线性方程组可以用矩阵描述嘛。秩就表示了有多少个有用的方程了。上面的方程组有3个方程,实际上只有2个是有用的,一个是多余的,所以对应的矩阵的秩就是2了。
既然秩可以度量相关性,而矩阵的相关性实际上有带有了矩阵的结构信息。如果矩阵之间各行的相关性很强,那么就表示这个矩阵实际可以投影到更低维的线性子空间,也就是用几个向量就可以完全表达了,它就是低秩的。所以我们总结的一点就是:如果矩阵表达的是结构性信息,例如图像、用户-推荐表等等,那么这个矩阵各行之间存在这一定的相关性,那这个矩阵一般就是低秩的。
稍微数学化的表达:如果 X X X 是一个 m m m n n n 列的数值矩阵, r a n k ( X ) rank(X) rank(X) X X X 的秩,假如 r a n k ( X ) rank (X) rank(X) 远小于 m m m n n n,则我们称 X X X是低秩矩阵。低秩矩阵每行或每列都可以用其他的行或列线性表出,可见它包含大量的冗余信息。利用这种冗余信息,可以对缺失数据进行恢复,也可以对数据进行特征提取。
举个例子:

可以理解为,草原是由很多草组成的,而草是相似的,所以如果全是草,那么这张图所包含的信息量是很少的的,因为可以理解为草是草的复制品。而上图的蒙古包,人,马之类的则可以理解为图片所包含的信息,实际上,相对于只有草的草原图片和有草和蒙古包的草原图片,后者的秩是较高的。也就是说,图片中比较突兀的成分,比如蒙古包,比如人像照片中的红眼亮点,会增加图像矩阵的秩。而现实生活中一张不错的图片的秩其实是比较低的,如果图像的秩比较高,往往是因为图像中的噪声比较严重。比如拍照的时候ISO感光度设置过高造成噪点太过泛滥之类的。所以,额,图像处理的低秩性其实可以拿来去除照片中的噪点,电影中的雨丝也可以通过低秩表达的方式来去除。

更为详细的解释可以参考文献[4][5][7]

3 矩阵分解与矩阵填充的区别

3.1 矩阵分解与矩阵填充的定义

已知一个部分可观察的矩阵 M M M

  • 矩阵补全(Matrix Completion)目的是为了估计矩阵中缺失的部分(不可观察的部分),可以看做是用矩阵 X X X近似矩阵 M M M,然后用 X X X中的元素作为矩阵 M M M中不可观察部分的元素的估计。
  • 矩阵分解(Matrix Factorization)是指用 A × B A \times B A×B 来近似矩阵 M M M,那么 A × B A \times B A×B 的元素就可以用于估计 M M M中对应不可见位置的元素值,而 A × B A \times B A×B可以看做是 M M M的分解,所以称作Matrix Factorization。

3.2 矩阵分解与矩阵填充的差别

显然,通过以上描述可知,矩阵分解可以用于矩阵补全任务。此外,做矩阵分解也可以用于分解一个完全观察的矩阵,比如通过分解来对一个完全观察的矩阵做有损压缩和低维表示等等。而且,矩阵补全也并不总是采用分解的方法。

  总的来讲,矩阵填充是一个任务,矩阵分解是一类操作。

3.3 推荐系统举例

矩阵分解方法概述_第1张图片

  如在推荐系统中,有评分矩阵 M M M,其中的每个元素 ( i , j ) (i, j) (i,j) 可存在可缺失,代表用户 i i i 对商品 j j j 的评分,那么当我们基于协同过滤来推荐时,这个推荐问题可以较好地归约到矩阵填充这个任务上来。这是因为协同过滤本质上是考虑大量用户的偏好信息(协同),来对某一用户的偏好做出预测(过滤),那么当我们把这样的偏好用评分矩阵M表达后,这即等价于用M其他行的已知值(每一行包含一个用户对所有商品的已知评分),来估计并填充某一行的缺失值。若要对所有用户进行预测,便是填充整个矩阵,这是所谓“协同过滤本质是矩阵填充”。
  那么,这里的矩阵填充如何来做呢?矩阵分解是一种主流方法。这是因为,协同过滤有一个隐含的重要假设,可简单表述为:如果用户 A A A 和用户 B B B 同时偏好商品 X X X ,那么用户 A A A 和用户 B B B 对其他商品的偏好性有更大的几率相似。这个假设反映在矩阵 M M M上即是矩阵的低秩。极端情况之一是若所有用户对不同商品的偏好保持一致,那么填充完的 M M M每行应两两相等,即秩为1。所以这时我们可以对矩阵 M M M进行低秩矩阵分解,用 U × V U \times V U×V来逼近 M M M,以用于填充——对于用户数为 m m m,商品数为 n n n的情况, M M M m × n m \times n m×n 的矩阵, U U U m × r m \times r m×r V V V r × n r \times n r×n,其中 r r r 是人工指定的参数。这里利用 M M M 的低秩性,以秩为 r r r 的矩阵 M ′ = U × V M'=U \times V M=U×V来近似 M M M,用 M ′ M' M 上的元素值来填充 M M M 上的缺失值,达到预测效果。
  之所以说矩阵分解是一类operation,是因为上述的低秩矩阵分解只是矩阵分解的一种,为人熟知的矩阵分解还有LU-矩阵分解,QR-矩阵分解,特征值分解等等。之所以在协同过滤中经常把重点放在矩阵分解上,是因为在如今推荐系统问题的庞大数据规模下,矩阵分解这样的方法表现出了优秀的性能,是亮点。

4 经典的矩阵分解方法

4.1 特征值分解

4.2 SVD分解(奇异值分解)

4.3 MF模型(matrix factorization model)

5 参考文献

[1]推荐系统使用到的矩阵分解SVD、SVD++、ALS、FM这些方法各有什么优缺点?
[2]矩阵填充与矩阵分解的区别是什么?
[3]矩阵低秩的意义?
[4]机器学习中的范数规则化之(二)核范数与规则项参数选择
[5]矩阵低秩分解理论及其应用分析
[6]矩阵低秩的意义
[7]推荐系统之—如何理解低秩矩阵?

你可能感兴趣的:(智能计算数学基础,矩阵,推荐算法,线性代数)