推荐系统深度学习读书笔记-5

第五章

多角度审视推荐系统

本章主要内容是以下7点:

  • 推荐工程如何选取和处理特征?
  • 推荐系统召回层的主要策略有哪些?
  • 推荐系统的实时性的重要性体现在哪里?有哪些提高实时性的方法?
  • 如何根据具体场景构建推荐模型的优化目标?
  • 如何基于用户动机改进模型结构?
  • 推荐系统冷启动问题的解决方法有哪些?
  • 什么是”探索与利用”问题?有哪些主流的解决方法?
推荐系统的特征工程

Garbabge in garbabge out

特征的本质其实是对某个行为过程相关信息的抽象表达

从具体行为->抽象特征,必然涉及到信息的损失

推荐系统特征工程的原则:

尽可能地让特征工程抽取出的一组特征能够保留推荐系统环境以及用户行为过程中所有有用的信息,尽量摒弃冗余信息。

常用特征:

  • 用户行为数据(显性反馈行为、隐形反馈行为)

    将代表用户行为的物品id序列转换成multi-hot向量,将其作为特征向量

    预先训练好物品的embedding

  • 用户关系数据

    graphembedding方法生成物品和用户的embedding

  • 属性、标签数据

    multi-hot编码的方式转成特征向量

    重要的属性类标签也可以先转换成embedding

  • 内容类数据

  • 上下文信息

    目的是尽可能的保存推荐行为发生场景的信息

  • 统计类特征

    连续型特征,仅需经过标准化归一化等处理就可以直接输入推荐系统进行训练

  • 组合类特征

    将不同特征进行组合后生成的新特征

常用的特征处理方法:

  • 连续型特征 continuous

    归一化:统一量纲

    离散化:防止连续值带来的过拟合现象以及特征分布不均匀

    加非线性函数:更好的捕捉特征与优化目标之间的非线性关系

  • 类别性特征 categorical

    one-hot

    multi-hot

    embedding

推荐系统召回层的主要策略

排序阶段:复杂模型、多特征进行精准排序

召回阶段:简单模型、少量特征进行候选集的快速筛选,减少精准排序阶段的时间开销

多路召回

推荐系统的实时性

特征的实时性

实时地收集和更新推荐模型的输入特征,使推荐系统总能使用最新的特征进行预测和推荐

  • 客户端实时特征

    如果客户端能够缓存session内部的行为,将其作为与上下文特征同样的实时特征传给推荐服务器,那么推荐系统就能够实时得到session内部的行为特征,进行实时推荐

  • 流计算平台的准实时特征处理

    storm、spark streaming、flink等流计算平台

    将日志以流的形式进行微批处理(mini batch)

    分钟级别的延迟

  • 分布式批处理平台的全量特征处理

    以HDFS为主的分布式存储系统,Spark等分布式批处理计算平台

模型的实时性

  • 全量更新

    模型利用某时间段内的所有训练样本进行训练

  • 增量更新

    仅将新加入的样本喂给模型进行增量训练

    缺点:往往无法找到全局最优点

    工程上来说,增量更新与全局更新结合的方式,在进行了几轮增量更新后,在业务量较小的时间窗口进行全量更新,纠正模型在增量更新中积累的误差

  • 在线学习

    微软的FOBOS、谷歌的FTRL

  • 局部更新

    降低训练效率低的部分的更新频率,提高训练效率高的部分的更新频率

    GBDT+LR

    每天训练一次GBDT模型,固定GBDT模型之后,实时训练LR模型以快速捕捉数据整体的变化

  • 客户端模型实时更新

    探索阶段

推荐系统的优化目标

Youtube以观看时长作为优化目标

电商类的是CVR预估模型

同时优化CTR和CVR目的,阿里巴巴提出ESMM

推荐系统中比模型更重要的?

DIEN有效的前提条件:

应用场景存在兴趣的进化

用户兴趣的进化过程能够被数据完整捕获

推荐系统真正的银弹是对用户行为和应用场景的观察

  • Netflix多图文
  • Roku用户行为
  • DIN改进(只收集与候选物品相关的用户历史行为记录才有价值)
冷启动解决方法

用户冷启动:新用户注册后,没有历史行为数据时的个性化推荐

物品冷启动:系统加入新物品后,没有与用户的交互记录

系统冷启动:推荐系统刚布置,没有任何历史数据

  • 基于规则的冷启动

    领域专家对业务的洞察,根据业务设置规则

  • 丰富冷启动过程中可获得用户和物品特征

    用户注册信息

    第三方DMP提供的用户信息

    物品的内容特征(分类、标签等)

    引导用户输入的冷启动特征

  • 利用主动学习、迁移学习和EE机制

    主动学习

    迁移学习:在某领域知识不足的情况下,迁移其他领域的数据或知识,用于本领域的学习

    EE(探索与利用)机制:探索新数据、利用旧数据

    UCB(upper confidence bound)置信区间上界

    当物品平均回报高时,UCB的得分会高;

    同时,当物品的曝光次数低时,UCB的得分也会高

    使用UCB,系统会倾向于推荐 效果好 或者 冷启动 的物品

探索与利用

三大类方法:

  • 传统的探索与利用方法

    多臂老虎机问题

    Epsilon-Greedy、Thompson Sampling和UCB

    着重解决新物品的探索和利用,方法不考虑用户、上下文等因素,因此是非个性化的探索与利用方法

  • 个性化的探索与利用方法

    考虑用户、上下文等因素

  • 基于模型的探索与利用方法

传统的探索与利用方法

多臂老虎机问题(Multi-Armed Bandit problem)

一排老虎机,外表一模一样,但每个老虎机获得回报的期望不同,N次机会,按什么顺序选择老虎机可以收益最大化

物品就是老虎机,推荐系统如何选择老虎机,才能让收益最大化

Epsilon-Greedy算法

选择一个【0,1】的数epsilon,每次以epsilon的概率在所有老虎机中进行随机选择,以1-epsilon的概率选择截至当前平均收益最大的老虎机,在摇臂后,根据回报值对老虎机的回报期望进行更新。

以epsilon去探索,以1-epsilon去利用

Thompson Sampling

启发式探索与利用算法

beta分布是伯努利分布的共轭先验分布,因为掷硬币的过程是标准的伯努利分布过程

具体可以参考:

https://www.zhihu.com/question/37212823

UCB

经典的启发式探索与利用算法

基于霍夫丁不等式推导而来

https://zhuanlan.zhihu.com/p/45342697

无法解决引入个性化特征的问题,限制了探索与利用方法在个性化推荐场景下的使用

个性化的探索与利用方法

引入个性化信息,基于上下文的多臂老虎机算法(Contextual-Bandit Algorithm)

LinUCB算法

https://zhuanlan.zhihu.com/p/21404922

基于模型的探索与利用方法

DRN

在推荐系统下的应用

  • 物品冷启动
  • 挖掘用户新兴趣
  • 增加结果多样性