基于用户的协同过滤算法(UserCF)
步骤:(1)找到和目标用户兴趣相似的用户集合
(2)找到这个集合中用户喜欢却没听过的物品推荐
S(u,K)包含用户u兴趣最近的K个用户,N(i)是对物品i有过行为的用户集合,使用户u和v的相似度,使用户v对物品i的兴趣(一般为评分等)
基于物品的协同过滤算法(ItemCF)
步骤:(1)计算物品之间的相似度
(2)根据物品的相似度和用户的历史行为给用户生成推荐列表
S(j,K)包物品j最相似的K个物品集合,N(u)是对物品i有过行为的用户集合,是物品j和i的相似度,使用户u对物品i的兴趣(一般为评分等)
两者优缺点对比
UserCF | ItemCF | |
性能 | 适应于用户较少的场合,如果用户很多,计算用户相似度矩阵代价很大 | 适应于物品数明显小于用户数的场合,如果物品很多(网页),计算物品相似度矩阵代价很大 |
领域 | 时效性较强,用户个性化兴趣不太明显的领域 | 长尾物品丰富,用户个性化需求强烈的领域 |
实时性 | 用户有新行为,不一定造成推荐结果的立即变化 | 用户有新行为,一定会导致推荐结果的实时变化 |
冷启动 | 在新用户对很少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度表是每隔一段时间离线计算的 新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给和对她产生行为的用户兴趣相似的其他用户 | 打没有办法再不离线更新物品相似度表的情况下将新物品推荐给用户 |
推荐理由 | 很难提供令用户信服的推荐解释 | 利用用户的历史行为给用户做推荐解释,可以令用户比较信服 |