隐语义模型LFM(Latent Factor Model)

隐语义模型LFM(Latent Factor Model)是主题模型中的一种,跟其他主题模型一样,LFM也需要定义若干“主题”,来表示个中隐含的关系,这些“主题”是模糊而不是明确的,通过统计用户行为的方式聚类计算得出。在LFM的推荐例子中,“主题”就可以认为代表item的分类,而分类的个数,需要事先定义。

更直观地理解,假设我们定义隐因子的个数是30个,则在item候选集中,每一个item都会根据这30个分类去分配相关度(取值为0~1),比如说这个item是“午夜凶铃”,那么会被分配到“惊悚”分类0.98,“剧情”分类0.62,“喜剧”分类0.005等等(当然这个只是随便举的例子,而且分类也并不会那么不重叠),这表示的是物品与分类的关系得分,需要注意的是这里每个分类的分数是独立的,加起来不等于1。如果某个分类的值是1,则可以认为这个物品就是为这个分类而生的,就是这个分类的代名词。

有了物品与“主题”的关系得分,那么我们只需要再计算用于对于分类的偏好程度就可以用这两者计算用户对于某个item的偏好得分了。这种推荐的方式相当于是基于兴趣爱好的推荐。除此之外,基于兴趣推荐的方式可以通过找到有共同爱好的人(User-CF),或者用户喜欢的item相近的其他item(Item-CF),基于物品标签推荐(Tag-Based)等等多种方式,这里不展开,下面重点讲下公式原理。

loss=\sum_{(u,i)\epsilon D)}(p(u,i)-p^{LFM}(u,i))^{2}+\alpha \left | p_{u} \right |^{2}+\alpha \left | q_{i} \right |^{2}

上面就是LFM的损失函数,其中D为user与item之间行为的集合,p(u,i)为行为的label,举个例子,有过点击行为的为p(u,i)为1,只有曝光没有点击行为的为0,p^{^{LFM}}(u,i)为通过隐因子计算出来的得分,介乎0~1之间,通常情况下,p^{^{LFM}}(u,i)表示的是用隐因子计算出来的用户与物品之间的cosine距离,公式如下:

cosine=\frac{vec_{uf}*vec_{fi}}{\sqrt{\left |vec_{uf} \right |*\left |vec_{fi} \right |}}

分子当中,每个f维的向量中,我们会初始化0~1之间的值,表示用户(物品)对于某个分类的偏好程度(相关程度),0表示毫不相关,1表示完全相关,因此分子相乘后得到的是正数;分母计算后,由于模计算后都是正数,因此cosine距离,也就是用以表示的p^{^{LFM}}(u,i)也是一个正数。此外,我们回想cosine距离物理含义,表示的是两个向量之间的余弦夹角,夹角越小,代表两者越接近,最大夹角是当两个向量方向相反时候,也就是180°夹角,因此在0到π之间,cosine值也只会在0~1之间。回到损失函数,则其定义的是真实的label与计算出来的cosine距离用以衡量模型的拟合程度,最后加上两个向量的正则项用以惩罚复杂度。

默认我们运用梯度下降法来迭代向量值,由于用户向量p_{uf}与物品向量q_{if}是同理,因此下面只分析p_{uf}的求导。我们知道梯度下降的原理是自身减去自身求偏导,不停迭代下去知道满足条件,则

p_{uf}=p_{uf}-\beta \frac{\partial loss}{\partial p_{uf}}

\frac{\partial loss}{\partial p_{uf}}=-2(p(u,i)-p^{LFM}(u,i))q_{if}+2\alpha p_{uf}

其中1式为梯度下降迭代用户向量,2式为求偏导的过程,α为正则项,β为学习率

这样,在经过若干次的迭代后,达到了某个停止迭代的条件,则最终的我们能够获得每个user对于每个分类的”相关系数“(user向量),以及每个item对于每个分类的”相关系数“(item向量),我们最后通过计算user向量与item向量之间的cosine距离,则会得到用户与item之间的偏好分数,从而进行下一步的推荐动作。

按照经验,我们在构造样本训练数据的时候,一般会按正负样本1:1构造(经验所谈,保证样本平衡性),另外负样本要选取一些有充分曝光但是没有过点击行为的物品,这样可以避免选取了一些过于冷门导致根本不会有点击行为的商品。另外随着负样本/正样本比例逐渐增大,准确率和召回率都在增大,但是覆盖率却逐渐降低。说明1:1的样本比例有助于挖掘长尾兴趣。另外,在隐因子数量选择上,经验上为10到30,因具体数据而已。在十分稀疏的数据上,LFM效果会大幅下降甚至不如User-CF/Item-CF。

我们知道基础的基于物品的协同过滤(Item-CF)和基于用户的协同过滤(User CF)是一种传统的基于邻域的统计方法,有效地在海量的用户和物品群中发现近似的人群或物品群,LFM则是提出一种类似于基于兴趣爱好的召回方法,是对User-CF和Item-CF的有效补充。他们之间的比较有如下几点:

1.LFM有学习迭代的过程,有较好的理论基础;而User-CF/Item-CF是基于统计的方法,没有学习过程

2.LFM在空间复杂度上更小,假设用户物品矩阵为M*N,则空间复杂度只有O(F*(M+N));而User-CF需要O(M*M),Item-CF需要O(N*N),在M和N很大的时候,能有效节省空间。

3.LFM不适合在线预测,因为其需要通过迭代得到的user向量和item向量计算用户与物品之间的偏好得分,在线的动作加入后,如果重新迭代计算用户向量和物品向量,则会消耗大量时间,不适合在线预测;而User-CF和Item-CF则因为把预先计算的相关矩阵存在内存中,当用户有新的行为(例如点击了某个物品),则可以实时获取该物品所对应的相似物品来在线更新推荐列表。

4.LFM因为其中的隐因子(分类)通常来讲会含糊不清,因此不能有很好的解释性;而User-CF和Item-CF由于是基于统计的方法,因此有相对较好的解释性。

参考文献:

推荐系统实践,项亮 2012
慕课网 - BAT大牛亲授 个性化推荐算法实战
https://www.cnblogs.com/earendil/p/8194875.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值