几种不同的推荐引擎比较
以前也用了一些推荐算法写过一些应用,最近用上了网易云音乐,于是便想写篇推荐引擎的文章。
一.推荐引擎
主动发现用户当前或潜在需求,并主动推送信息给用户的信息网络。挖掘用户的喜好和需求,主动向用户推荐其感兴趣或者需要的对象。
二.推荐引擎的分类
1.基于人口统计学的推荐
根据用户的基本信息发现用户的相关程度,然后把相似用户喜爱的其他物品推荐给当前用户。
过程描述:A用户喜欢A物品,用户A和用户C都是女性,且年龄相似,于是认为C用户也喜欢A物品,便将A物品推荐给C用户。
优点:1.不需要当前用户对物品喜欢的历史数据,对新用户没有”冷启动”问题
2.不依赖物品本身
缺点:1.需要收集到用户信息,包括一些敏感数据,年龄等。
2.对用户分类方法粗糙,无法用于高品味领域(电影,音乐等)。
3.用户的生活习惯会改变(例如:结婚前后购物表现不同)
2.基于内容的推荐
根据物品的元数据发现物品的相关程度,然后把与用户喜欢物品相似的物品推荐给当前用户。
过程描述:用户A喜欢电影A,电影A和电影C类型相似,于是认为他也会喜欢电影C,便推荐给他
优点:能很好的建模用户口味
缺点:1.需要对物品分析建模,推荐的质量依赖于对物品模型的完整和全面程度
2.物品相似度分析仅仅依赖于物品本身特征,没有考虑人对物品的态度
3.对新用户有“冷启动”问题。
3.基于用户的协同过滤推荐
基于用户对物品的偏好,发现与当前用户偏好相似的“邻居”用户群,然后根据邻居的历史偏好信息,为当前用户推荐物品。
过程描述:用户A和用户C的购物习惯相似,所以将物品D推荐给用户A
优点:对用户分类更准确,能提供更精确的推荐
缺点:1.对于新用户有“冷启动”问题
2.假设喜欢物品的用户可能有相同的口味和偏好
3.用户数量一般很大,并且用户对物品的喜好会发生变化,计算复杂,需要更新
4.基于项目的协同过滤推荐
使用所有用户对物品的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给当前用户。
过程描述:买了物品A的用户都买了物品C,用户C买了物品A,所以给他推荐物品C
优点:基于项目的协同过滤推荐基质实在基于用户的机制上改良的一种策略,因为在大部分的Web站点中,物品的个数远远小于用户数量,而且物品的个数和相似度相对比较稳定,同时基于项目的机制比基于用户的实时性更好一些。
缺点:不是所有的场景都能适应,例如新闻推荐系统,新闻的个数远大于用户个数,新闻的更新速度很快,所以它的相似度依然不稳定。
三.总结
综上看来,基于项目的协同过滤推荐是最易使用的,它不需要对用户信息或物品内容建模,相似度也相对稳定。