算法构建
推荐算法流程
实际上是一种信息处理逻辑,当获取了用户与内容的信息之后,按照一定的逻辑处理信息后,产生推荐结果。热度排行榜就是最简单的一种推荐方法,依赖的逻辑是当一个内容被大多数用户喜欢,那么大概率其他用户也喜欢。
推荐算法主要分为以下几步:
- 召回:当用户以及内容量比较大的时候,先通过召回策略,将百万量级的内容先缩小到百量级
- 过滤:对于内容不可重复消费的领域,例如实时性比较强的新闻等,在用户已经曝光和点击后不会再推送到用户面前
- 精排:对召回并过滤后的内容进行排序,将百量级的内容排序并按照顺序推送
- 混排:为避免内容越推越窄,将精排后的推荐结果进行一定修改,例如控制某一类型的频次
- 强规则:根据业务规则进行修改,例如在活动时将某些文章置顶
召回策略
- 召回的目的:当用户与内容的量级比较大,例如对百万量级的用户与内容计算概率,运算其实是笛卡尔积,会产生百万*百万量级的计算量。但是其实,真正的精品只是少数,对所有内容进行一次计算非常低效,会浪费大量的资源和时间。因此采用召回策略,例如热销召回,召回一段时间内最热门的100个内容,只需进行一次计算动作,就可以对所有用户应用。
- 召回的重要性:召回模型是一个推荐系统的天花板,决定了后续可排序的空间
- 召回方法:对算法的精度、范围、性能都有较高要求。当前业界常采用离线排序+打分或离线训练达到向量表达+向量检索的方式。(对比精排为了提高准确度,使用离线+实时打分,或在线学习的方式)
- 召回层与业务场景的结合
例如在飞猪业务场景中 https://www.infoq.cn/article/qfl1NxCxHuXV723iMb7v ,存在几类行业特点:订单类型较多(涉及到交通、酒店、景区、周边游),且业务之间具有一定的相关性和搭配性;用户存在周期性复购情况;用户订单的稀疏性较大。采用的解决方案:
- 相关性&搭配性问题:
- 协同往往只能召回相似的商品,而考虑到推荐目标的替代性和互补性,更多挖掘反应搭配关系的行为集合
- 数据稀疏且噪音较大,仅仅基于数据构建图,bad case较多,所以要用行业的知识图谱
- 结合行为序列:行为序列挖掘 - > 构件图(通过知识图谱来增加约束)-> 序列采样(降低噪音 抑制热门问题)->训练
- 周期性复购问题:部分用户存在固定的购买模式,利用Possion-Gamma分布的统计建模,计算在某个时间点购买某个商品的概率 ,在正确的时间点给用户推出合适的复购商品
粗排策略
- 目的:为后续链路提供集合
- 特点:打分量高于精排,但有严格的延迟约束
- 方法,主要是2种路线:
- 集合选择:以集合为建模目标,选出满足后链路需求集合。其可控性较弱,算力消耗较小(多通道、listwise、序列生成)
- 精准预估:以值为建模目标,直接对系统目标进行值预估。可控性较高,算力消耗较大
- 发展历史:质量分->LR等传统机器学习->向量内内卷积(双塔模型)->COLD全链路(阿里)
精排策略
多目标融合原则:
- 用户的效用需要通过多个指标反馈:例如用户对视频的喜好,会通过停留时长、完播、点赞等多个动作反应
- 产品的目标需要通过多个指标衡量:例如短视频产品不仅要考虑用户效用,也要考虑作者效用、平台目标与生态影响
实例:
以短视频行业为例,推荐目标主要由几个方面组成
- 对用户价值
- 对作者价值,包括给作者的流量、互动、收入等
- 对内容生态价值,包括品牌价值、内容安全、平台收入
- 间接价值,非直接由视频产生,例如用户的评论提醒,会改善用户的留存率
重排层策略
EE问题
MBA问题:所有的选择都要同时考虑寻找最优解以及累计收益最大的问题
解决方案:Bandit算法,衡量臂的平均收益,收益越大越容易被选择,以及臂的方差,方差越大越容易被选择
常用算法:汤普森采样算法,UCB算法,Epsilon贪婪算法,LinUCB算法,与协同过滤结合的COFIBA
多样性问题
问题:
- 多样性过差:用户探索不够,兴趣过窄,系统泛化能力以及可持续性变差;流量过于集中在少数item上,系统缺乏活力。
- 多样性过强:用户兴趣聚焦程度弱;item流量分配平均,对优质item激励不足。
解法: - 根据内容相关性以及相似性打散
- 保持用户以及内容探索比例
- 人工规则控制
上下文问题
pointwise排序中,仅考虑item与user之间的相关性,而较少考虑前序item对后续item的影响,主要的解决方案有两种。
- listwise排序
Pointwise考虑单点目标/Pairwise考虑一个pair/Listwise考虑整个集合的指标。
Listwise 对视频组合进行transformer建模,刻画视频间的相互影响,前序视频对后续视频观看有影响,前后组合决定总收益。
2.强化学习
考虑序列决策,从前向后依次贪心的选择动作概率最大的视频。
Reward = f(相关性,多样性,约束)
冷启动
用户冷启动
加强特征与信息的补充,EE问题平衡,实时化加强
信息补充:
- side information补充:例如商品类目、领域知识图谱、第三方公司数据的补充
- Cross domain:利用共同的用户在不同的地方的数据进行冷启动
- 用户填写兴趣
- 元学习:利用多任务间具有泛化能力的模型,进行少样本学习 few-shot learning
快速收敛: - 主动学习、在线学习、强化学习:快速收集数据,且反馈到特征与模型中。
- 增强模型实时化以及收敛能力。
内容冷启动
以短视频推荐为例,平台常常采用大小池逻辑,对内容进行不同流量的探索,并根据实际的反馈数据来决定内容可以进入的推荐范围。其中表现优质的内容将不断的进入更大的流量池中,最终进入推荐池,形成精品召回池。
算法衡量标准
指标选择
- 硬指标:对于大多数的平台而言,最重要的作用是提升一些硬指标。例如新闻推荐中的点击率。但是如果单纯以提升点击率为目标,最后容易成为一些低俗内容,标题党的天下
- 软指标:需要很多软指标以及反向指标来衡量除了点击等之外的价值,好的推荐系统能够扩展用户的视野,发现那些他们感兴趣的内容,但是不会主动获取内容;同时,推荐系统还可以帮助平台挖掘被埋没的优质长尾内容,介绍给感兴趣的用户
推荐效果
分为离线实验、用户调查和在线实验三种方法
- 离线效果:通过反复在数据样本进行实验来获得算法的效果。通常这种方法比较简单、明确。但是因为数据是离线的,基于过去的历史数据,不能够真实的反应线上效果。同时需要通过时间窗口的滚动来保证模型的客观性和普适性。
- 白板测试:当在离线实验阶段得到了一个比较不错的预测结果之后,就需要将推荐的结果拿到更加真实的环境中进行测评,如果这个时候将算法直接上线,会面临较高的风险。因为推荐结果的好坏不能仅仅从离线的数字指标衡量,更要关注用户体验,所以可以通过小范围的反复白板测试,获得自己和周围的人对于推荐结果的直观反馈,进行优化
- 在线测试:AB test ,实践是检验真理的唯一标准,在推荐系统的优化过程中,在线测试是最贴近现实、最重要的反馈方式。通过AB测试的方式,可以衡量算法与其他方法、算法与算法之间的效果差异。
从零开始了解推荐系统全貌