转载:学习视频链接
用户/物品 | 物品A | 物品B | 物品C | 物品D |
---|---|---|---|---|
用户A | V | V | 推荐 | |
用户B | V | |||
用户C | V | V | V |
`
这里介绍以下协同算法中的基于用户的协同过滤,基于用户的协同过滤是目的是什么呢?就是建立并计算用户相似度矩阵,从而给用户推荐和他相似的K个用户喜欢的物品,比如,我喜欢看完美世界漫画,你也喜欢看这个漫画。我还喜欢看斗罗大陆漫画,那么算法分析后可能就会觉得你可能也会喜欢看斗罗大陆这个漫画。但是也可能出现偏个性化的推荐,例如你喜欢的某些花里胡哨的东西,我可能并不感兴趣,这样的话,如果只依据某一个人的喜好来推荐,可能召回率就相当的低了。所以要经过AB测试,通过测试K个用户来发现,在根据N个用户的洗好来推荐给我喜好的时候达到最高的召回率。
当然,这种推荐算法是有惊喜的。我们因为共同爱好漫画而被划分为相似用户,你的其他洗好也可能会推荐给我,这样的话,我可能就会发现有些喜好是我之前不太感兴趣的,但是现在有兴趣了解他。
正如推荐有惊喜,可能推荐的也不是惊喜。有可能你的某些偏好,我非常不感兴趣。这也就是很难对基于用户的系统过滤做出解释。优点与缺点并存。
基于物品的协同过滤
通过分析用户的行为记录物品之间的相似度,并不利用物品的内容属性计算物品之间的相似度,中间的桥梁也是用户
适用于电商类的推荐系统
优点:可以利用用户的历史行为给推荐结果提供推荐解释
基于物品的协同过滤算法主要分为两部:
冷启动:对于ItemCF算法来说,物品冷启动就是一个严重的问题。因为ItemCF算法的原理是给用户推荐和他之前喜欢物品相似的物品。ItemCF算法会每隔一段时间利用用户行为计算物品相似度表(一般一天计算一次),在线服务时ItemCF算法会将之前计算好的物品相关度矩阵放在内存中。
用户/物品 | 物品A | 物品B | 物品C |
---|---|---|---|
用户A | V | V | |
用户B | V | V | V |
用户C | V | 推荐 |