构建离线文章特征
由于已经有了画像信息,特征构造就变得简单了。读取文章画像数据,将文章权重最高的 K 个关键词的权重作为文章关键词权重向量,将频道 ID、关键词权重向量、词向量作为文章特征存储到 Hbase 的文章特征表。
构建离线用户特征
读取用户画像数据,将权重最高的 K 个标签的权重作为用户标签权重向量,将用户标签权重向量作为用户特征存储到 Hbase 的用户特征表。
多路召回
基于模型的离线召回
我们可以根据用户的历史点击行为来预测相似用户,并利用相似用户的点击行为来预测对文章的偏好得分,这种召回方式称为 u2u2i。获取用户历史点击行为数据,利用 ALS 模型计算得到用户对文章的偏好得分及文章列表,读取并过滤历史召回结果,防止重复推荐,将过滤后的偏好得分最高的 K 篇文章存入 Hbase 的召回结果表中,列族为 als,表明召回类型为 ALS 模型召回,并记录到 Hbase 的历史召回结果表。
基于内容的离线召回
我们可以根据用户的历史点击行为,向用户推荐其以前喜欢的文章的相似文章,这种方式称为 u2i2i。读取用户历史行为数据,获取用户历史发生过点击、阅读、收藏、分享等行为的文章,接着读取文章相似表,获取与发生行为的每篇文章相似度最高的 K 篇文章,然后读取并过滤历史召回结果,防止重复推荐,最后将过滤后的文章存入 Hbase 的召回结果表中,列族为 content,表明召回类型为内容召回,并记录到 Hbase 的历史召回结果表。
基于 LR 模型的离线训练
读取 Hive 的用户历史行为数据,并切分为训练集和测试集,根据其中的用户 ID 和文章 ID,读取 Hbase 的用户特征数据和文章特征数据,将二者合并作为训练集的输入特征,将用户对文章是否点击作为训练集的标签,将上一次的模型参数作为 LR 模型的初始化参数,进行点击率预估训练,计算得出 AUC 等评分指标并进行推荐效果分析。
基于 LR 模型的在线排序
当推荐中心读取 Hbase 的推荐结果表无数据时,推荐中心将调用在线排序服务来重新获取推荐结果。排序服务首先读取 Hbase 的召回结果作为测试集,读取 Hbase 的用户特征数据和文章特征数据,将二者合并作为测试集的输入特征,使用 LR 模型进行点击率预估,计算得到点击率最高的前 K 个文章,然后读取并过滤历史推荐结果,防止重复推荐,最后将过滤后的文章列表存入 Hbase 的推荐结果表中,key 为 lr,表明排序类型为 LR 排序。
推荐中心
流量切分(ABTest)
我们可以根据用户 ID 进行哈希分桶,将流量切分到多个桶,每个桶对应一种排序策略,从而对比不同排序策略在线上环境的效果。