Java教程

协同过滤算法

本文主要是介绍协同过滤算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

协同算法

转载:学习视频链接

User CF

  • 建立并计算用户相似度矩阵,给用户推荐和他相似的K个用户喜欢的物品
  • 适用于用户比较稳定,用户更新慢于item的场景,比如新闻网站
  • 优点:推荐有惊喜
  • 缺点:基于用户的协同过滤很难对推荐结果做出解释
  • 基于用户的协同过滤算法主要包括两个步骤
    • 找到和目标用户兴趣相似的用户集合
    • 找到集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
  • 冷启动:UserCF算法对物品冷启动的问题并不敏感,因为,UserCF在给用户进行推荐时,会首先找到和用户兴趣相似的一群用户,然后给用户推荐这一群用户喜欢的物品。
用户/物品物品A物品B物品C物品D
用户AVV推荐
用户BV
用户CVVV

`
这里介绍以下协同算法中的基于用户的协同过滤,基于用户的协同过滤是目的是什么呢?就是建立并计算用户相似度矩阵,从而给用户推荐和他相似的K个用户喜欢的物品,比如,我喜欢看完美世界漫画,你也喜欢看这个漫画。我还喜欢看斗罗大陆漫画,那么算法分析后可能就会觉得你可能也会喜欢看斗罗大陆这个漫画。但是也可能出现偏个性化的推荐,例如你喜欢的某些花里胡哨的东西,我可能并不感兴趣,这样的话,如果只依据某一个人的喜好来推荐,可能召回率就相当的低了。所以要经过AB测试,通过测试K个用户来发现,在根据N个用户的洗好来推荐给我喜好的时候达到最高的召回率。
当然,这种推荐算法是有惊喜的。我们因为共同爱好漫画而被划分为相似用户,你的其他洗好也可能会推荐给我,这样的话,我可能就会发现有些喜好是我之前不太感兴趣的,但是现在有兴趣了解他。
正如推荐有惊喜,可能推荐的也不是惊喜。有可能你的某些偏好,我非常不感兴趣。这也就是很难对基于用户的系统过滤做出解释。优点与缺点并存。

Item CF

  • 基于物品的协同过滤

  • 通过分析用户的行为记录物品之间的相似度,并不利用物品的内容属性计算物品之间的相似度,中间的桥梁也是用户

  • 适用于电商类的推荐系统

  • 优点:可以利用用户的历史行为给推荐结果提供推荐解释

  • 基于物品的协同过滤算法主要分为两部:

    • 计算物品之间的相似度
    • 根据物品的相似度和用户历史行为给用户生成推荐列表
  • 冷启动:对于ItemCF算法来说,物品冷启动就是一个严重的问题。因为ItemCF算法的原理是给用户推荐和他之前喜欢物品相似的物品。ItemCF算法会每隔一段时间利用用户行为计算物品相似度表(一般一天计算一次),在线服务时ItemCF算法会将之前计算好的物品相关度矩阵放在内存中。

    • 当新物品加入时,内存中的物品相关表不会存在这个物品,从而Item CF算法无法推荐新的物品。解决这一问题的办法是频繁更新物品相似度表,但基于用户行为计算物品相似度是非常耗时的,主要原因是用户行为日志非常庞大,而且,新物品如果不展示给用户,用户就无法对他产生行为,通过行为日志计算是计算不出包含新物品的相关矩阵的。
    • 为此,我们只能利用物品的内容信息计算物品相关表,并且频繁的更新 相关表(如半小时计算一次)
  • 用户/物品物品A物品B物品C
    用户AVV
    用户BVVV
    用户CV推荐
这篇关于协同过滤算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!