隐语义模型是经过隐含特征,联系用户和物品,基于用户的特征对物品进行自动聚类,而后在用户感兴趣的类中选择物品推荐给用户。算法
对于推荐系统,经常使用的算法:函数
USER-CF:给用户推荐和他兴趣类似的用户喜欢的物品学习
ITEM-CF:给用户推荐他们感兴趣物品的类似物品spa
LFM:获得用户感兴趣的分类,从该分类中挑选物品推荐给用户3d
对于LFM,要作的工做有:blog
1.对物品进行分类,这里是模糊分类,也就是得出每一个物品在每一个类中的权重,并非说一个物品就是属于一个类排序
2.肯定用户感兴趣的类,这里要计算用户对全部类的兴趣度im
3.从类中挑选物品给用户推荐,根据1,2结果相乘,得出用户对全部物品的兴趣度,进行排序,得出结果d3
公式:统计
其中R是用户u对物品i的兴趣度组成的矩阵
P是用户u对第k个类的兴趣度组成的矩阵
Q是物品i在第k个类中的权重
一图胜千言:
能够看出,协同过滤是基于统计的,不须要有学习过程,能够实时得出。而隐语义模型是基于建模的,根据训练集,计算出上图中的所有参数,有训练过程,没法实时给出结果。
损失函数:
其中后两项为L2正则化项,防止过拟合
求解能够用梯度降低:
梯度:
迭代求解:
隐语义模型中负样本的选择
1)对每一个用户,要保证正负样本的数目相近
2)对每一个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品。(更表明用户对该物品不感兴
趣)
参数:
1.隐特征个数,也就是类个数f
2.学习率∂
3.正则化参数λ
相对CF,LFM的空间复杂度更低