3 矩阵分解算法-协同过滤的进化
- 隐向量的提出:矩阵分解算法提出的一个概念是为每个用户和物品都生成一个隐向量,将用户和物品定位到隐向量的表示空间上,计算在该空间上用户和物品之间的距离来进行推荐。
- 如何寻找隐向量:通过分解协同过滤生成的共现矩阵(用户对物品评分的表,类比上方表格下的矩阵)得到用户和物品的隐向量
- 矩阵分解的过程:
-
矩阵分解算法将m×n维的共现矩阵分解成m×k维的用户矩阵U,和k×n维的物品矩阵V相乘的形式,其中m是用户数量,n是物品数量,k是隐向量的维度,k的大小决定了隐向量表达能力的强弱,因为k取值太小,所能包含的信息太少,泛化能力强,k值越大,包含的信息天多,泛化能力弱
-
基于用户矩阵U和物品矩阵V,用户u对物品i的预估评分用公式表达:
- 其中Pu是用户u在用户矩阵U中对应的行向量,qi是物品i在物品矩阵V中对应的列向量 如何矩阵分解?
1 特征值分解(只能应用于非零方阵)
注:如果一个非零向量v是方阵A的特征向量,将一定可以表示成下面形式,而λ是特征向量v对应的特征值:特征值分解是将一个矩阵分解成下面的形式(-1表示矩阵的逆矩阵):
其中Q是这个矩阵甲的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。一个矩阵的一组特征向量是一组正交向量。(高数中求解矩阵的特征值与特征向量的问题)
特征值与特征向量:矩阵特征值_百度百科 (baidu.com)
-
补充:1 只有方阵才有特征向量 2 特征值是非零列向量,对应统一特征值的特征向量有无穷多个
-
关于第二种方法SVD奇异值分解,下一篇章再详细介绍