LFM前世今生
源于SVD(奇异值分解)方法的改进,传统svd是线性代数典型问题;
SVD可用于矩阵评分矩阵的补全,但由于计算量过大,实际上只适用于规模很小的系统
Simon Funk 改进SVD(Funk-SVD),后来被称为LFM
LFM
关键公式
LFM通过如下公式计算用户u对i的兴趣
这个公式中 p_uk 和 q_ik 是模型的参数,其中p_uk度量了用户u的兴趣和第k个隐类的关系,而q_ik度量了第k个隐类和物品i之间的关系。那么,下面的问题就是如何计算这两个参数。
选择一个训练集,用适当的数学计算出上述公式里待确定的权重。
隐语义模型的适用性
LFM可以很好的解决人工分类产生的问题
不能存在编辑的主观评判或专业因素限制,所有的分类和权重都来自于算法对用户数据的客观统计分析,只存在这模型适用性的问题。
关于训练集
对负样本采样时应该遵循以下原则:
对每个用户,要保证正负样本的平衡(数目相似)
对每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品
Q:p_u1,p_u2…,q_i1,q_i2都是未知,如何求出?
常见的求解方法
1:最大似然(类似于训练贝叶斯信念网络和EM算法)
2:转化为求解损失函数极小值的问题
r_ui,lamda 已知 p_uk,q_ik未知 p_u,q_i向量
LFM重要参数
模型中隐特征个数
梯度下降法中选取学习速率
损失函数中的惩罚系数lambda
训练集的负样本/正样本比例ratio