文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
相关文章:
文章目录:
(1)基于流行度的算法
依照一个项目的流行度进行排序,将最流行的项目推荐给用户,比方微博推荐中,将最为流行的大v用户推荐给普通用户。微博每日都有最热门话题榜等。通过简单热度排序就可以。
文章->prodict whom one will follow中推荐好友有一部分采取的策略是item-popularity.通过计算在训练集中项目被接受的次数来得到项目的流行度信息。
文章->a social and popularity-based tag recommender通过结合标签的流行度和意见向用户推荐标签。
缺点:无法提供个性化推荐
长处:算法简单
改进或者新的思路:增加用户分群流行度排序,把热门体育内容先推荐给体育迷。
(2)协同过滤算法
协同过滤算法(CF)是一种经常使用的算法,在电商站点上都实用到,CF算法包含基于用户的CF和基于物品的CF。
2.1)基于用户的CF
1)分析各个用户对item的评价(通过浏览记录,购买记录等);
2)基于用户对item的评价计算得出全部用户之间的类似度
3)选出与当前用户最类似的N个用户
4)将N个用户评价最高而当前用户又没有浏览过的Item推荐给当前用户
首先以
2.2) 基于物品的CF
计算方式大致相同,仅仅关联矩阵是item与item之间的关系,若用户同一时刻同时访问item1和item2,然后基于这种理论推给用户。
(3) 基于内容的模型
基于内容的推荐系统会挖掘用户曾经喜欢的物品,从而去推荐类似的物品。本质上就是利用用户已知偏好,兴趣等特征和物品的特征相匹配,以此为用户推荐新的感兴趣的商品,这种算法主要是要提取推荐对象的特征。
优点:
- 简单、有效、结果易于理解且算法比较成熟
- 只需要从当前用户构建兴趣模型、不需要像CF一样找近邻
- 在冷启动情况下都适用
- 没有稀疏问题
缺点:
- 依赖于提取出来的特征,提取特征的能力会限制算法的效果、可分析内容有限
- 新颖性不如其他算法,无法发现令人惊喜的推荐
- 算法需要有足够和真实的用户数据
(4) 基于知识的推荐算法
基于知识的推荐系统大致工作流程是用户指定需求,然后系统设法给出解决方案。如果找不到解决方案,用户需要修改需求(再次说明基于知识推荐系统的交互性很强)。此外,系统还要给出推荐物品的解释。基于知识推荐系统主要包括两种类型,基于约束推荐和基于实例推荐,它们的区别在于如何使用所提供的知识:基于实例的推荐系统着重于根据不同的相似度衡量方法检索出相似的物品(也就是根据相似度衡量标准检索哪些与特定用户需求相似的物品),基于约束的推荐系统以来明确定义的推荐规则集合(在符合推荐规则的所有物品集合中搜索得出要推荐的物品集合)。
协同过滤和基于内容的推荐在很多情况下无法发挥作用,例如:1)有些物品我们并不会频繁购买,比如房屋,纯粹的协同过滤系统会由于评分数据很少而效果不好;2)时间跨度因素的作用很重要,多年前对物品的评分对基于内容推荐来说就不太合适,因为用户偏好会随着生活方式或家庭情况的变化而改变;3)在一些复杂的产品领域,用户希望明确定义他们的需求,例如“汽车的最高价是x,颜色是黑色”,这种需求的形式化处理并不是纯粹协同过滤和基于内容推荐所擅长的(关于这个第三条,在以前对于推荐系统的概念中,没有把这种明确需求的形式认为是推荐系统的一种,而是认为这是一种检索系统,后面的讨论中会在做说明)。
基于知识的推荐系统可以解决上述问题:1)由于不需要评分数据就能推荐,也就不存在启动问题;2)推荐结果不依赖单个用户评分,要么是以用户需求与产品之间的相似度的形式,要么是根据明确的推荐规则;3)关于推荐系统是什么,传统解释一般强调信息过滤这一方面,即过滤出某个用户可能感兴趣的商品,而基于知识的推荐交互性很强,使得推荐系统不在仅仅被看做一种推荐系统,而是“以一种个性化方法引导用户在大量潜在候选项中找到感兴趣或有用物品,或者将这些物品作为输出结果”的系统。
(5) 混合算法
混合推荐即将上面的4种算法组合应用,充分利用该算法优点解决现实存在的问题。