推荐系统_LFM和基于邻域(如UserCFItemCF)的方法的比较

Posted 漠小浅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统_LFM和基于邻域(如UserCFItemCF)的方法的比较相关的知识,希望对你有一定的参考价值。

        LFM是一种基于机器学习的方法,具有比较好的理论基础。这个方法和基于邻域的方法(比如UserCF、ItemCF)相比,各有优缺点。下面将从不同的方面对比LFM和基于邻域的方法。

       理论基础     LFM具有比较好的理论基础,他是一种学习方法,通过优化一个设定的指标建立最优的模型。基于邻域的方法更多是一种基于统计的方法,并没有学习过程。

       离线计算的空间复杂度      基于邻域的方法需要维护一张离线的相关表。在离线计算相关表的过程中,如果用户/物品数很多,将会占用很大的内存。假如有M个用户和N个物品,在计算相关表的过程中,我们可能会获得一张比较稠密的临时相关表(尽管最终我们队每个物品只保留K个最相关的物品,但在计算过程中稠密的相关表是不可避免的),LFM则节省了大量的内存。

       离线计算的时间复杂度       一般情况下,LFM的时间复杂度要稍微高于UserCF和ItemCF,这主要是因为该算法需要多次迭代。但总体上,这两种算法在时间复杂度上面没有本质的差别。

       在线实时推荐     UserCF和ItemCF在线服务算法需要将相关表缓存在内存中,然后可以在线进行实时的预测。以ItemCF算法为例,一旦用户喜欢了新的物品,就可以通过查询内存中的相关表将和该物品相似的其他物品推荐给用户。因此,一旦用户有了新的行为,而且该行为被实时地记录到后台的数据库系统中,他的推荐列表就会发生变化。而从LFM的预测公式可以看到,LFM在给用户生成推荐列表时,需要计算用户对所有物品的兴趣权重,然后排名,返回全中最大的N个物品。那么,在物品数很多时,这一过程的时间复杂度非常高,因此,LFM不太适合用户物品数非常庞大的系统。另一方面,LFM在生成一个用户推荐列表时速度太慢,因此不鞥呢在线实时计算,而需要离线将所有用户的推荐结果事先计算好存储在数据库中。因此,LFM不鞥呢进行在线试试推荐,也就是说,当用户有了新的行为后,他的推荐列表不会发生变化。

       推荐解释   ItemCF算法支持很好的推荐解释,它可以利用用户的历史行为解释推荐结果。但LFM无法提供这样的解释,它计算出的隐类虽然在语义上却是代表了一类兴趣和物品,却很难用自然语言描述并生成解释展示给用户。

以上是关于推荐系统_LFM和基于邻域(如UserCFItemCF)的方法的比较的主要内容,如果未能解决你的问题,请参考以下文章

BAT大牛亲授-个性化推荐算法实战

BAT大牛亲授 个性化推荐算法实战

BAT大牛亲授-个性化推荐算法实战

BAT大牛亲授--个性化推荐算法实战完整资源

svdpp分解推荐,java实现

推荐算法之隐语义模型(LFM)矩阵分解梯度下降算法实现