《推荐系统实践》第十三节
损失函数中的正则化项用于防止过拟合,其系数通过实验获得。
损失函数中的正则化项用于防止过拟合,其系数通过实验获得。优化该函数采用随机梯度下降法:先对用户向量和物品向量分别求偏导数,找到最速下降方向,再沿此方向以学习速率(需反复实验确定)迭代更新参数,书中给出了相应的Python实现。
离线实验方面,在MovieLens数据集上用LFM计算向量后,各隐类中权重最高的电影均属同一类型,说明该算法能依据用户行为对物品聚类。对比实验发现,负样本与正样本的比例对性能影响最大:增加负样本可提高准确率和召回率,但超过一定比例后趋于稳定,同时覆盖率下降、流行度上升,即该参数控制着发掘长尾的能力。在该数据集上LFM各项指标均优于UserCF和ItemCF,但数据非常稀疏时性能会明显下降。
雅虎首页个性化方案以点击率为优化目标,将用户点击过的链接记为正样本、展示未点击的记为负样本,用LFM预测点击行为。由于传统LFM需扫描全部行为记录并多次迭代,训练耗时、只能每日一次,无法应对新闻生命周期短的实时推荐需求,雅虎将方案分为两部分:用链接的内容属性生成内容特征向量,同时实时收集用户行为训练得到隐特征向量,两者结合预测兴趣,新物品经数小时后可获得更准确的预测。
与基于邻域的方法相比,LFM理论基础较好,是一种学习方法;空间上用F个隐类只需存储O(F×(M+N)),远小于相关表的O(M²)或O(N²),Netflix Prize中因内存优势成为主流算法;时间复杂度为O(K×F×S),通常略高于UserCF和ItemCF但无质的差别。在线服务方面,邻域方法可缓存相关表实时响应新行为,而LFM需对所有物品计算权重,复杂度高,只能离线预计算,无法实时更新推荐列表;此外LFM也无法像ItemCF那样用用户历史行为解释推荐结果。