推荐系统中的矩阵分解详解
0.前言
推荐系统最常见的两种场景为评分预测与排序。评分预测的典型场景为豆瓣上一个用户对电影的评分,淘宝上对某个商品的评分。排序的场景更为普遍,比如信息流业务中,从海量的内容中挑选出最合适的topN内容给用户展示,就是一个典型的排序问题。
推荐系统中非常经典的技术之一就是矩阵分解(Matrix Factorization)。矩阵分解具有优秀的可扩展性,而且实现起来也不困难,因此在实际中使用非常广泛。下面我们针对推荐系统中的矩阵分解相关内容做一个详细梳理。
1.特征值分解
说到矩阵分解,一般先会提到特征值分解(Eigen decomposition),或者说谱分解(Spectral decomposition)。
首先我们明确一点,矩阵乘法,其实对应的是一个变换,是把任意的一个向量变成另外一个方向或者长度的新向量。如果矩阵对某些向量只发生伸缩变换,不产生旋转效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。
比如矩阵
因此,矩阵A乘以一个向量 (x,y)的结果是:沿X轴拉伸三倍,沿Y轴拉伸一倍。
(以上例子来自网络)
对于一个矩阵A(A为方阵),一定有
此时为特征向量对应的特征值。而特征值分解为
其中,Q是A的特征向量组成的矩阵。
输入公式比较麻烦,大家参考一下手写的特征值分解过程。是不是有上大学时候学线性代数的感觉。
2.奇异值分解
上面特征值分解比较麻烦的一点,在于要求矩阵A为方阵。