推荐系统
目前推荐技术的应用已经非常较普及了,新闻、商品、问答、音乐,几乎都会用到推荐算法来呈现内容。下面是淘宝、知乎、微博三个 app 首页,可以看到推荐都处于非常重要的位置。
在介绍推荐算法评测之前,先简单介绍一下推荐系统的流程。推荐一般包含以下步骤:
召回 --> 打分排序 --> 输出
召回
召回阶段通常的手段是协同过滤比较场景,也有使用 embedding 的方式通过向量之间的距离进行召回。假如现在推荐一个商品,那么就得基于用户感兴趣的物品 。而这些感兴趣的物品其实就是用户有过历史行为的物品,例如最近一段时间内的点击、加购、收藏、购买的物品。将这些商品做为 trigger 进行召回,按照协同过滤算法算出商品之间的相似分值,然后按照一定数量进行过滤。因为过滤也是依靠分数来进行的,所以这一步也称粗排。
打分
召回完商品后,我们需要对这些商品进行精排,也就是用模型来预估 ctr。一般情况下 LR、GBDT、FM 用的比较多,深度网络相对用的少。主要为了考虑到性能,尤其是 rt,因为绝大部分的精排都是需要实时预测的,所以对耗时有一定的要求。
模型
模型预测的步骤如下:首先针对召回的商品进行特征的补充,例如该商品的一级类目、叶子类目(一级类目代表比较,叶子类目代表最细分的类目)、被多少用户购买等;然后再加入人的特征,例如性别、年龄、收入、对类目的偏好等;最后将这些物品和用户的信息做为 feature,根据模型预测的结果进行排序输出。
打分过程中的模型需要提前训练和部署。其中训练集包括label和feature,label 是用户的历史行为(点击、购买等),feature 是用户的特征(性别、年龄)和商品的特征(类别、价格)。
质量方案
由于推荐系统最终对用户需要提供实时化的服务,因此需要有工程端的技术配合。质量保证主要分为两个方面,一是工程端的质量保证,二是算法侧的质量保证。