不管是电商网站,还是新闻资讯类网站,推荐系统都扮演着十分重要的角色。一个优秀的推荐系统能够推荐出让人满意的物品,但这不仅是推荐算法的功劳,整个推荐架构所扮演的角色也举足轻重。


转载请注明出处:https://thinkgamer.blog.csdn.net/article/details/96265282
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
公众号:搜索与推荐Wiki
个人网站:http://thinkgamer.github.io


学术界往往更加关注推荐算法的各项评估指标。从基本的协同过滤到点击率预估算法,从深度学习到强化学习,学术界都始终走在最前列。一个推荐算法从出现到在业界得到广泛应用是一个长期的过程,因为在实际的生产系统中,首先需要保证的是稳定、实时地向用户提供推荐服务,在这个前提下才能追求推荐系统的效果。

在生产系统中,不管是用户维度、物品维度还是用户和物品的交互维度,数据都是极其丰富的,学术界对算法的使用方法不能照搬到工业界。当一个用户访问推荐模块时,系统不可能针对该用户对所有的物品进行排序,那么推荐系统是怎么解决的呢?对应的商品众多,如何决定将哪些商品展示给用户?对于排序好的商品,如何合理地展示给用户?

架构介绍

图14-1所示是业界推荐系统通用架构图,主要包括:底层基础数据、数据加工存储、召回内容、计算排序、过滤和展示、业务应用。
底层基础数据是推荐系统的基石,只有数据量足够多,才能从中挖掘出更多有价值的信息,进而更好地为推荐系统服务。底层基础数据包括用户和物品本身数据、用户行为数据、用户系统上报数据等。

图14-2~图14-4所示为用户本身数据、物品本身数据和用户行为数据。

得到底层基础数据之后,就要对数据进行加工处理和分析了,如结合用户属性信息和行为信息构建用户画像,结合物品属性信息和用户对物品的行为信息构建物品画像。基于用户对物品的行为数据构建特征工程,同时进行相关的数据分析。
数据在处理之后存储到相应的位置(业务推荐系统使用的数据一般存储在redis中),供推荐系统实时调用。

召回内容

电商网站、内容网站、视频网站中数据量很大,并不能直接把所有的物品数据全部输送到推荐系统进行排序,那么如何对物品进行筛选就成了很关键的问题。
第4章中介绍了一些常用的数据挖掘算法和应用场景,在进行物品召回时可以基于一些常用的机器学习算法构建用户偏好模型、用户兴趣模型、物品相似模型、物品互补模型等。在进行内容召回时,只召回和用户有偏好关系、和用户有直接关联、和用户有直接关系的相关物品,输入排序模型,进行打分排序。
例如,在某新闻类网站中,根据用户对新闻的相关行为信息构建用户对新闻标签的兴趣模型,在为用户推荐时就可以推荐用户偏好标签下的新闻数据,如图14-5所示。

在物品召回过程中,重点是如何构建合适的用户偏好模型,只有保证偏好模型的准确性才能确保用户召回物品的准确性。

计算排序

特征工程

“数据决定了机器学习的上限,而算法只是尽可能逼近这个上限”,这里的数据指的就是经过特征工程得到的数据。特征工程指的是把原始数据转变为模型的训练数据的过程,目的就是获取更好的训练数据特征,使得机器学习模型逼近这个上限。特征工程能使模型的性能得到提升,有时甚至在简单的模型上也能取得不错的效果。

特征工程在机器学习中起着非常重要的作用,一般认为包括特征构建、特征提取、特征选择三部分。 特征提取与特征选择都是为了从原始特征中找出最有效的特征。它们之间的区别是:

  • 特征提取强调通过特征转换的方式得到一组具有明显物理意义或统计意义的特征;
  • 特征选择是从特征集合中挑选一组具有明显物理意义或统计意义的特征子集。

两者都能帮助减少特征维度、数据冗余,特征提取有时能发现更有意义的特征属性,特征选择的过程经常能表示出每个特征对于模型构建的重要性。
特征工程的标准化流程主要分为以下几步:
(1)基于业务理解,找到对因变量有影响的所有自变量,即特征。
(2)评估特征的可用性、覆盖率、准确率等。
(3)特征处理:包括特征清洗、特征预处理(特征预处理可参考第4章“数据预处理”部分)、特征选择。
(4)特征监控:特征对算法模型的影响很大,微小的浮动都会带来模型效果的很大波动,因此做好重要特征的监控可防止特征异常变动带来线上事故。

特征分类

在工业界的推荐系统中,典型的特征主要分为以下四类。

  • 相关性特征:评估内容的属性与用户是否匹配。显性的匹配包括关键词匹配、分类匹配、来源匹配、主题匹配等。
  • 环境特征:包括地理位置、时间。这些既是偏差特征,又能以此构建一些匹配特征。
  • 热度特征:包括全局热度、分类热度、主题热度及关键词热度等。内容热度信息在大的推荐系统中特别是在用户冷启动时非常有效。
  • 协同特征:可以在一定程度上帮助解决所谓算法越推越窄的问题。协同特征并不考虑用户已有历史,而是通过用户行为分析不同用户间的相似性,如点击相似、兴趣分类相似、主题相似、兴趣词相似,甚至向量相似,从而扩展模型的探索能力。

    排序算法

    在得到召回的物品之后,就要考虑如何对这些物品进行正确的排序。目前业界在机器学习领域最普遍的做法是将排序推荐模型作为二分类模型来训练,即在构造样本集的过程中对应的标签为0或1(未点击或点击)。常用的排序算法包括但不局限于GBDT、LR、XGBoost等,当然也有很多把GBDT和LR结合起来使用的,但是模型融合后的效果在不同的业务场景中带来的提升并不是很大。

物品过滤和展示

过滤和展示直接影响用户体验,因此在做推荐系统时一定要注意相关的过滤和展示规则。

物品过滤

经常会听到人们说“电商网站经常给我推荐我已经买过的东西”。其实在做推荐系统的过程中会有相关的过滤规则,在电商推荐系统中,最常用的过滤规则是:用户购买过滤,即在进行商品召回时过滤掉用户过去一段时间内已经购买过的商品和相似商品。例如,用户昨天买了一个机械键盘,今天的推荐系统就不会再给该用户推荐机械键盘了。
同时也会有一些其他过滤规则如:

  • 项目指定的一些敏感词汇或敏感商品等过滤。
  • 刷单商品过滤。
  • 曝光商品过滤(有时会认为那些曝光过的商品是用户不感兴趣的,即看到了没有进行点击)。
  • 无货商品过滤。

至于为什么推荐系统会给用户推荐已经购买过的商品,是因为在用户购买该商品之后,又对该类型的商品产生了新的行为,所以推荐系统会再次进行推荐。

物品展示

展示即用户看到的推荐结果。不同类型的推荐系统中展示的规则不一样,但基本原则是:品类隔离展示,即同类型的商品不能出现在相邻的位置。例如推荐系统返回的推荐结果集中有两个手机,这两个手机就不能在相邻的位置展示。

有的推荐系统会要求第一屏内不能出现同类型的商品,如推荐系统给用户的第一屏展示了8个商品,那么这8个商品中就不能出现同类型的商品(如不能出现两个手机)。

效果评估

无论是推荐架构最开始的召回内容、计算排序,还是最后的过滤和展示,每次新上一个方案之后都要进行效果统计,生产系统中最常用的效果评估方法就是ABTest,更多关于ABTest的使用介绍可以参考第10章。
在生产系统中,进行ABtest之后,往往会将不好的方案下线,保留效果更好的一方,同时也会不断上线新的召回、排序特征等,迭代优化模型,提升线上效果。


打开微信扫一扫,关注微信公众号【搜索与推荐Wiki】

注:《推荐系统开发实战》是小编近期要上的一本图书,预计本月(7月末)可在京东,当当上线,感兴趣的朋友可以进行关注!