推荐系统概述和主流模型介绍

Hello,大家好,欢迎来到“自由技艺”的知识小馆,今天我们来聊一聊推荐算法 。
在广告、电商、信息流分发等业务场景中,推荐算法发挥着至关重要的作用,好的推荐算法能够把用户牢牢抓住,让用户的时间消耗在你推荐的内容上 。当然,所推荐的内容有多少价值一般不是App所关注的,APP推荐的目的仅仅是留住用户 。腾讯副总裁孙忠怀曾在公开场合说过:“现在短视频平台的个性化分发实在是太强大了,你喜欢‘猪食’,你看到的就全是‘猪食’” 。
经典的推荐算法主要指协同过滤(CF),在深度学习火起来之后,基于神经网络的推荐模型层出不穷,比如 google Play 的 Wide & Deep、Youtube 的超大规模分类模型等 。本文首先简单介绍下一个完整的推荐系统组成及算法流程,接着重点介绍下主流推荐模型的一些实现细节 。
0 如何搭建一个完整的推荐系统
(1)推荐系统组成
标签系统:为了实现内容的精准推荐,首先需要用户画像 。所谓用户画像,就是给用户贴上各式各样的标签,比如年龄、性别、兴趣、浏览历史等等,这些标签可以分为事实标签、模型标签、预测标签等,另一方面,又可以按它表示的范围分为一级标签、二级标签、三级标签等 。这些标签需要从原子数据集中提取,然后再量化 。原子数据集又是什么?它指的是用户浏览 APP 的痕迹以及一些注册信息等,通过消息中间件、存储模块(比如 kafka、Hbase)收集、存储 。

推荐系统概述和主流模型介绍

文章插图
自动化标签系统
算法库:标签系统生成了多维度、较丰富、较全面的用户标签,也就是特征,这些特征就是各种推荐算法或模型的输入数据 。
离线训练:有了输入数据和推荐模型还不够,只有通过训练,才能获得最优的模型参数 。为什么不用在线训练呢?一是没必要,二是会造成很大的性能开销 。
A/B 测试:推荐模型训练好了之后,怎么评估推荐效果呢?这就用到了 A/B 测试,A/B 测试是一种常用的在线评估算法效果的方法 。简单来说,就是按一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种评测指标,比如点击率、浏览率、购买率等,从而比较不同算法的好坏 。
实时推荐:一旦选中了最好的推荐算法,就可以部署到线上了 。
冷启动:推荐系统总体上来说,还是一种有监督的学习方法 。有监督学习必然需要样本和标签,而在产品上线初期,系统对用户了解很少,这时只能通过专家知识进行推荐 。当系统积累了一定量的数据或者拿到用户足够多的反馈后,就可以训练机器学习模型了 。
(2)推荐算法流程
推荐服务的流程主要有 3 步:获取用户特征 -> (召回) -> 调用推荐模型 -> (粗排、精排) 。
在实际应用中,物品列表规模很大,如果对所有的物品都调用模型打分,在性能上是不可接受的,因为计算耗时过长从而影响用户体验 。
所以,一种常见的做法是将推荐列表生成分为召回和排序两步 。召回的作用是从大量的候选物品中(例如上百万)筛选出一批用户较可能喜欢的候选集 (一般是几百) 。排序又分为粗排和精排,粗排就是选出打分最高的那一部分物品 。更进一步,对粗排得到的物品列表,可能需要人工调整,这就是精排 。
1 CF(Collaborative Filtering,协同过滤)
好了,到这里我们已经对推荐系统有了宏观上的了解了 。接下来就来看看推荐算法是怎么筛选出用户感兴趣的物品的,最经典的就是协同过滤算法,分为 UserCF 和 ItemCF,简单理解就是一句话:人以类聚,物以群分 。这方面的文章很多了,这里就不展开讲了,下图给出了 UserCF 和 ItemCF 的优劣势对比的结果 。
推荐系统概述和主流模型介绍

文章插图
UserCF 和 ItemCF 对比
2 MF(Matrix Factorization,矩阵分解)
现在来考虑一个给用户推荐电影的简单场景:假设有 m 个用户,总的电影种类为 n. 例如,用户 1 看过电影 1 和电影 n,并给出了评分 1.0 和 0.5,如果用户看完电影没给评分,也没关系,可以用一个默认值代替 。用户 2 看过电影 2,并打出了 3.7 分 。推荐的目的就是把这个 m * n 的矩阵中(用 


    推荐阅读