基于模型的CF:模型中包含参数,通过训练来优化参数,是误差目标最小
矩阵分解(隐语义模型),可以用来降维
I1 | I2 | I3 | |
U1 | ? | 3 | 5 |
U2 | 4 | ? | 6 |
U3 | ? | ? | 7 |
U4 | 8 | 8 | ? |
输入矩阵即用户对Item进行打分后的打分矩阵,其中"?"表示待计算的分数,以此进行推荐。
K1 | K2 | |
U1 | 0.4 | 0.3 |
U2 | 0.2 | 0.5 |
U3 | 0.6 | 0.5 |
U4 | 0.4 | 0.8 |
I1 | I2 | I3 | |
K1 | 0.3 | 0.2 | 0.6 |
K2 | 0.4 | 0.5 | 0.4 |
输入矩阵进行矩阵分解得到上面两个 分解后的两个子矩阵,k=2,过渡矩阵为2*2,每个User和Item都对应K1和K2,上面两个矩阵相乘得到下面的输出矩阵,且输出矩阵近似于原矩阵,该近似矩阵可以完成推荐目标。
I1 | I2 | I3 | |
U1 | 6.3 | 2.8 | 4.6 |
U2 | 4.5 | 3.6 | 5.8 |
U3 | 5.8 | 5.7 | 6.8 |
U4 | 7.8 | 7.5 | 6.8 |
- 模型训练的目标,输出矩阵和输入矩阵之间的误差最小。
- 输出矩阵的所有单元格都有值,确实值得填充代表用户评分的预测值。
- 模型训练的输出是用户向量和物品向量,都是k维的,代表k个不同的隐藏兴趣点(例如电影的标签:K1:动作片,K2:科幻片两个兴趣点)。
- 用户*用户,用户*物品,物品*物品分别都可以计算彼此的相似度。
矩阵分解的优点
- 将高维矩阵映射成地位矩阵的乘机,解决了数据稀疏性的问题;
- 预测的精度比较高,高于基于邻域的协同过滤以及基于内容等方法、
矩阵分解的缺点
- 推荐结果无法解释,其隐空间中的维度无法与现实中的概念对应起来。
- 模型训练比较费时,比如只能天粒度离线训练。