推荐算法主要分为基于内容的算法和协同过滤. 协同过滤的两种基本方法是基于邻居的方法(基于内容/物品的协同过滤)和隐语义模型. 矩阵分解乃是实现隐语义模型的基石.
矩阵分解根据用户对物品的评分, 推断出用户和物品的隐语义向量, 然后根据用户和物品的隐语义向量来进行推荐.
推荐系统用到的数据可以有显式评分和隐式评分. 显式评分时用户对物品的打分, 显式评分矩阵通常非常稀疏. 隐式评分是指用户的浏览, 购买, 搜索等历史记录, 表示的是用户行为的有无, 所以是一个密集矩阵.
1. 基本矩阵分解
矩阵分解方法会将用户和物品映射到
2. 学习算法
两种常用的求解上式的算法为随机梯度下降(SGD)和ALS(Alternating Least Square).
2.1 随机梯度下降
对于每个用户-物品评分, 计算预测误差
2.2 ALS(Alternating Least Square)
因为
3. 添加偏置项
矩阵分解方法的一个好处就是可以灵活的添加许多面向应用的要求. 比如, 通常来说, 不同用户的评分倾向不同, 用的用户的打分普遍较高, 有的普遍较低, 物品亦然. 所以仅仅使用用户和物品之间的交互
4. 其他的输入源
当解决冷启动问题时, 用户的评分信息很少, 这时候就需要使用用户的其他输入信息, 比如用户隐式反馈(浏览, 购买历史等). 令
5. 时间因素
到现在为止, 模型是静态的, 但是实际中物品的流行程度会随着时间变化, 用户的评分倾向也会变化, 用户的隐向量也会随时间变化. 所以可以将这些变量表示成时间的函数来更好地描述这些现象:
6. 不同可信度的输入源
)
参考文献:
[1]. Yuhuda Koren, Robert Bell and Chris Volinsky. Matrix Factorization Techniques for Recommender Systems.