前言
写今天这篇文章的目的, 是在接触推荐系统时,对推荐系统认识比较重要的部分。这里边的大部分内容(包括截图)都都摘自于项量编著的《推荐系统实践》的第7章-推荐系统实例。
个人认为做推荐系统首先要明白两点:
1.什么是推荐系统?推荐系统于我们其他系统的区别?以及推荐系统在整个复杂系统功能构建中的角色是什么?
2.熟悉自己的业务场景,清楚自己的系统适不适合上推荐模块,即想根据什么依据得到什么推荐结果。
本文内容
1.推荐系统的理解
2.推荐系统常用算法介绍
推荐系统的理解
1.推荐系统的外围结构(红框标明位置)
推荐系统依赖两个条件:用户行为数据 和 页面展示,用户日志是每个系统都应该有的,也是推荐系统的底层数据支持。
2.推荐系统的架构
a)推荐系统是联系用户和物品的媒介,而推荐系统联系用户和物品的方式有3种:
物品相似、用户相似、具有某些固定属性特征。
image.png
b)如果把上面用户喜欢的物品、相似的用户也看做一种特征,那么用户就和物品通过特征相联系,进行抽象,由此产生的基于特征的推荐系统架构。
image.png
c)用户的特征种类非常多,主要包括如下几类。
- 人口统计学特征 包括用户的年龄、性别、国籍、和民族用户在注册时提供的信息。
- 用户行为特征 包括用户浏览过什么物品、收藏过什么物品、给物品打过什么样的分数等用户行为相关特征。同时,用户行为从时间上可以分为近期用户行为和长期用户行为。
- 用户话题特征 根据用户的历史行为利用话题模型(topic model)将电视剧和电影聚合成不同的话题,并且计算出每个用户对什么话题感兴趣。比如用户看了《羞羞的铁拳》、《夏洛特烦恼》、《心花路放》、《缝纫机乐队》,那么可以认为用户对”大陆喜剧电影”这个话题比较感兴趣。
d)但是实际用用中推荐并不是根据一种算法进行的推荐,还有很多任务,比如
- 将最新加入的物品推荐给用户
- 将商业上需要宣传的物品推荐给用户
- 给用户推荐不同种类的物品,比如亚马逊会推荐图书、音像、电子产品和服装等。
- 给用户混合推荐,有时需要将图书和音像制品放到一个推荐列表中展示给用户。
- 对于不同的产品推荐不同新颖度的物品。比如在首页给用户展示比较热门的推荐结果,在推荐系统页面给用户展示长尾中的物品。
- 考虑到用户访问推荐系统的上下文,比如当你在豆瓣音乐找到”李宗盛”时,右侧就会有一个链接告诉你可以在豆瓣电台收听李宗盛。单机这个链接后,豆瓣电台给你推荐的音乐就考虑了”李宗盛”这个上下文。
e)多引擎推荐系统
如果把一个系统上面提到的各种特征和任务都统筹考虑,那么系统将会非常复杂,而且很难通过配置文件方便的配置不同的特征和任务权重。因此推荐系统需要有多个推荐引擎组成,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定的权重或者优先级合并、排序然后返回。
image.png
3.推荐引擎的架构理解
在推荐系统中,推荐引擎是最核心的计算位置,它是你的业务逻辑需求和算法结合最紧密的部分。
推荐引擎架构主要包括3部分:
- 部分A负责从数据库或者缓存中拿到用户行为数据,通过分析不同行为,生成当前用户的特征向量。不过是使用非行为特征,就不需要使用行为提取和分析模块。该模块的输出是用户特征向量。
- 部分B负责将用户的特征向量通过特征-物品相关矩阵转化为初始推荐列表。
-
部分C负责对初始的推荐列表进行过滤、排名等处理,从而生成推荐结果。
image.png
2.常用的推荐算法和应用场景
名称 | 原理简述 | 优点 | 缺点 | 建议应用场景 |
---|---|---|---|---|
基于人口统计学的推荐 | “人以群分”,以相同特征相似度大的人群特征为推荐标准 | 不依赖于喜好历史数据,不依赖与特定项目,领域独立,没有新用户冷启动问题 | 分类粗糙,不适合推荐质量高的网站,用户固定且敏感的信息不好获取,如年龄,收入 | 用户的属性固定,且不敏感,对用户初始推荐要求太高的网站 |
基于内容的推荐(CBR) | 根据推荐物品或内容的元数据,发现物品或者内容的相关性 | 易于实现,不需要用户数据因此不存在稀疏性和冷启动问题,不存在过度推荐热门的问题 | 抽取的特征既要保证准确性又要具有一定的实际意义,否则很难保证推荐结果的相关性 | 推荐系统多用于一些资讯类的应用上,或者被推荐对象有明显特征的网站 |
基于关联规则的推荐 | 在用户历史行为中,挖掘出关联规则,也就是那些同时被很多用户购买的物品集合,这些集合内的物品可以相互进行推荐 | 推荐较准确,转化率较高 | 计算量较大,容易出现冷启动和稀疏性问题以及热门项目过度推荐问题 | 常见于电子商务推荐系统中 |
基于协同过滤的推荐 | “物以类聚,人以群分”的假设,喜欢相同物品的用户更有可能具有相同的兴趣。被划分为两种:基于用户(User-based)的推荐和基于物品(Item-based)的推荐 | 现用户的潜在兴趣,并且针对每个用户生成其个性化的推荐结果 | 计算量较大,基于历史数据,恶意评分影响,容易出现冷启动和稀疏性问题、用户“兴趣漂移”难发现 | 在物品的个数和用户的喜好相对稳定的系统相对比较稳定 |
欢迎大家积极指正,组团交流,谢谢!
网友评论