天天看点

推荐系统实战-出租公寓项目4-协同过滤算法推荐协同过滤算法如何使用协同过滤算法优缺点对比

https://github.com/worry1613/gongyu-recommend

代码已经托管到github上,有任何的疑问可以直接看代码,或者直接给我发邮件[email protected],看到我会及时回复。

协同过滤算法

协同过滤是推荐系统中最常用到的算法,最基础的算法。 在协同过滤的基础上,衍生出了很多高级的算法,新的算法。协同过滤分为2种,基于用户的协同过滤,基于物品的协同过滤。

基于用户的协同过滤(userCF)

基于用户的协同过滤算法包括2个步骤:

1.找到和目标用户兴趣相似的用户集合

2.找到这个集合中用户喜欢的,且目标用户没有看过的物品推荐给用户

推荐那些和他有共同兴趣爱好的用户喜欢的物品

简单点一句话,‘看过A的用户还看过哪些物品’。在物品详情页中,几乎都能见到。

推荐系统实战-出租公寓项目4-协同过滤算法推荐协同过滤算法如何使用协同过滤算法优缺点对比

具体实现请看https://github.com/worry1613/gongyu-recommend/usercf.py

类userCF经典算法,类userCFIIF改进版算法,对热门商品进行了适当的降权,使推荐数据更多样性。

基于物品的协同过滤(itemCF)

基于用户的协同过滤算法包括2个步骤:

1.计算物品之间的相似度

2.根据物品的相似度和用户的历史行为给用户生成推荐列表

推荐那些和他之前喜欢的物品类似的物品

简单点一句话,‘找到和看过的物品类似的物品’

具体实现请看https://github.com/worry1613/gongyu-recommend/itemcf.py

类itemCF经典算法,类itemCFIUF改进版算法,对热门商品进行了适当的降权,使推荐数据更多样性。

如何使用协同过滤算法

什么情况下用基于用户的协同过滤?什么情况下用基于物品的协同过滤?

1.用户和物品哪个数据少,就用基于哪个的算法,为什么?计算量小啊,很快就能出结果。临时可以用一用可以,长久不行。

2.时效性强的推荐使用基于用户的协同过滤,例如,新闻推荐。

3.个性化强的推荐使用基于物品的协同过滤,例如,论文,歌,图片,商品 推荐。

UserCF是某个群体内的物品热门程度

ItemCF是反应本人的兴趣爱好,更加个性化

优缺点对比

项目 UserCF ItemCF
性能 适用于用户较少的场合,如果用户过多,计算用户相似度矩阵的代价交大 适用于物品数明显小于用户数的场合,如果物品很多,计算物品相似度矩阵的代价交大
领域 实效性要求高,用户个性化兴趣要求不高 长尾物品丰富,用户个性化需求强烈
实时性 用户有新行为,不一定需要推荐结果立即变化 用户有新行为,一定会导致推荐结果的实时变化
冷启动

在新用户对少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度是离线计算的 

新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给其他用户

新用户只要对一个物品产生行为,就能推荐相关物品给他,但无法在不离线更新物品相似度表的情况下将新物品推荐给用户
推荐理由 很难提供 可以根据用户历史行为归纳推荐理由

多看代码,理解算法,这个算法很简单,简单,单。

继续阅读