2.2.2. MF(Matrix Factorization,矩阵分解)¶
MF 是协同过滤的一种实现方式,更具体地说,它是一种基于模型的协同过滤技术。它可以说是推荐系统领域影响力最大、最经典的算法之一,尤其在 Netflix Prize 推荐算法竞赛中被广泛应用和验证后而声名大噪。
核心思想:化繁为简¶
想象一个巨大的表格(矩阵),行是用户,列是物品,表格里的值是用户对物品的评分(也可能是点击、购买等隐式反馈)。这个矩阵通常非常稀疏(大部分是空的,因为用户只评价过极少数的物品)。
MF的核心思想就是:把这个又大又稀疏的矩阵,分解成两个又小又稠密的矩阵的乘积,从而发现用户和物品背后隐藏的“特征”。
一个生动的比喻:美食家与食物¶
假设我们想理解一群美食家(用户)对各式菜肴(物品)的偏好。
原始数据(大表格):我们有一个表格,记录着每个美食家对吃过的菜肴的评分。但每个美食家只吃过所有菜肴的一小部分,所以表格大部分是空白的。
矩阵分解(寻找隐藏特质):
我们假设美食家们的偏好可以由一些隐藏的饮食特质来决定,比如:
特质1:甜食偏好度
特质2:辛辣耐受度
特质3:是否注重健康
… (假设有k个特质)
对于每一个美食家,我们都可以用一个向量来表示他/她对这些特质的偏好程度。例如,美食家A的向量可能是
[甜食爱好者: 5.0, 辛辣耐受: 1.5, 健康注重: 3.0, ...]。所有用户的这些向量就组成了用户矩阵。对于每一道菜肴,我们也可以用一个向量来表示它在这些特质上的表现程度。例如,巧克力蛋糕的向量可能是
[甜度: 4.8, 辣度: 0.2, 健康度: 0.5, ...]。所有物品的这些向量就组成了物品矩阵。
预测评分(匹配特质):
现在我们预测美食家A会给巧克力蛋糕打多少分?很简单,将美食家A的偏好向量和巧克力蛋糕的特质向量进行匹配(数学上是求内积)。
预测评分 = (5.0 * 4.8) + (1.5 * 0.2) + (3.0 * 0.5) + ... ≈ 24.0 + 0.3 + 1.5 = 25.8这个计算结果(25.8)就是在我们的“特质空间”里,用户和物品的匹配度,可以看作是预测的评分。
数学表示¶
原始矩阵 (R):维度是
m x n(m个用户,n个物品),是一个稀疏矩阵。用户矩阵 (P):维度是
m x k。每一行代表一个用户,包含k个潜在因子(Latent Factors)。物品矩阵 (Q):维度是
n x k。每一行代表一个物品,包含k个潜在因子。分解目标:让分解后的两个矩阵相乘,尽可能地逼近原始评分矩阵。
公式:
R ≈ P × Qᵀ
MF 是如何工作的?(训练过程)¶
我们如何找到最优的用户矩阵P和物品矩阵Q呢?这个过程叫做模型训练。
初始化:随机初始化矩阵P和Q中的值。
计算预测误差:
对于已知的每一个评分
R_ui(用户u对物品i的实际评分),用当前P和Q计算预测值Ř_ui = P_u · Q_iᵀ。计算预测误差:
e_ui = R_ui - Ř_ui
优化迭代(梯度下降):
目标是最小化所有已知评分上的总预测误差(损失函数)。
根据误差
e_ui来微调(更新)用户u的潜在因子向量P_u和物品i的潜在因子向量Q_i,让下一次的预测更准确。
循环:重复步骤2和3,直到误差收敛到最小(或达到预设的迭代次数)。
训练完成后,我们就可以用公式 Ř_ui = P_u · Q_iᵀ 来预测用户u对任何物品i的评分,并推荐预测评分最高的物品。
MF 的优势¶
处理稀疏性:即使原始矩阵非常稀疏,通过挖掘潜在的隐藏因子,也能做出不错的预测。
灵活性高:可以融入更多信息,发展出更强大的模型,如** BiasSVD (考虑用户和物品的自身偏见)、 SVD++ **(考虑用户的隐式反馈行为)。
计算高效:一旦模型训练完成,预测速度非常快,因为只需要计算两个向量的内积。
揭示深层关系:潜在因子可能对应一些无法直接观察、但确实存在的抽象概念,能挖掘出更深层次的关联。
总结¶
MF(矩阵分解) 是协同过滤的“升级版”,它通过将用户-物品交互矩阵分解为低维的用户潜在因子矩阵和物品潜在因子矩阵,来预测用户对未知物品的偏好。它克服了传统协同过滤的一些缺点,是推荐系统发展史上一个里程碑式的模型,为后续许多更复杂的深度学习推荐模型奠定了基础。





