第 4 章 算法融合与数据血统
关联规则算法
, 由于限制较大, 所以相关性较强, 但覆盖率较低;
协同过滤算法
, 覆盖率更高, 相关性较差;
以上两者基于行为, 有冷启动问题, 所以需要内容相关性算法
来托底;
三种算法的融合得出最终的结果;
数据血统
: 对数据的来源进行记录与分析的相关数据和过程;
线性加权融合
scorei=∑j(wj×scorej,i)scorei=∑j(wj×scorej,i)
- w, 对该推荐物品使用的推荐算法的权重;
- score, 在该推荐算法下该物品的得分;
如果推荐算法下没有直接给出得分(score), 只有一个排序, 则可以选择平均点击率作为拟合目标:
ctri=wi×orderi+bctri=wi×orderi+b
- ctr_i, 该算法在该位置的平均点击率, 作为该算法下该物品的分数;
- order_i, 位置编号;
- b, 偏置项;
存在两个问题:
- 平均点击率和编号之间未必是线性关系;
- 编号相同, 得分就会相同, 不合理;
wjwj 可根据不同算法的 CTR, CVR 等客观指标来分配权重,
wj=ctrj∑kctrkwj=ctrj∑kctrk
平均点击率必须是不同算法在同一位置上的平均点击率;
或者采用网格搜索
;
优先级融合/交叉融合
使用一组规则将来自不同推荐算法的结果进行融合, 规则的核心要素:
- 推荐算法之间的相对优先级;
- 每种算法要占到的比例;
优先级高的算法一般具有以下特点:
- 准确率高
- 覆盖率低
- 实时性好
基于机器学习的排序融合
线性加权融合和优先级融合, 均是粗粒度的算法级融合, 不是细粒度的物品级融合; 模型结构简单, 优化空间小; 融合方法没有结合用户反馈;
机器学习的排序融合, 在某个衡量指标(CTR)的指引下, 基于物品本身的特征, 当前场景的特征以及物品和场景的组合特征, 为当前场景下的每个参与排序的候选物品计算该指标(CTR), 并使用该估计值进行排序;
融合策略的选择
- 优先级融合方法, 适合使用者对算法的效果, 覆盖率等方面相对熟悉, 不同算法之间有明确的效果差异时使用; 系统建立初期;
- 线性加权融合方法, 适合不同算法之间没有那么大的效果差异, 主要用来提高覆盖率和多样性;
- 机器学习模型排序方法, 第一优先级的方法, 需要具备条件: 1. 已有一些推荐算法, 有一定比例的优质覆盖率; 2. 有数量足够准确的样本数据;
- 混合的融合方法
融合时机的选择
- 实时融合
- 离线融合, 计算能力强, 可以处理复杂逻辑和大量数据;
- 近实时融合, 分离用户对推荐数据的请求和推荐数据的计算生成, 二者通过数据存储服务进行交互, 实现解耦;
时效性要求不高, 策略多样复杂, 召回数据量大的情况时, 并不一定需要实时融合;
数据血统
- 每个推荐物品来源于哪种算法;
- 每个推荐物品在该算法中的得分和排序;
融合策略正确性验证
计算每种策略在结果中的占比分布, 每种策略平均能贡献多少个结果, 以及这些结果的平均分数如何;
系统效果监控
- 不同策略在请求, 曝光, 点击等多个维度上的绝对数量和数量占比;
- 分策略的点击率, 转化率;
- 分策略的平均排序位置;
策略效果分析
- 统计在 topN 结果中, 不同策略的曝光, 点击, 下单数据占比, 以此确定主要起作用的是哪些策略;
- 统计不同策略的点击率和转化率, 以此确定策略的效果好坏; 统计不同策略的排序位置分布;
- 分析在每种策略的被点击/下单的结果中, 策略的打分和排序的分布如何;
- 对以上两种数据进行交叉分析, 即分析效果好的策略和效果不好的策略在结果中的占比;
文章作者:Memento
博客地址:http://www.cnblogs.com/Memento/
版权声明:Memento所有文章遵循创作共用版权协议,要求署名、非商业、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。
博客地址:http://www.cnblogs.com/Memento/
版权声明:Memento所有文章遵循创作共用版权协议,要求署名、非商业、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 千万级的大表,如何做性能调优?
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· .NET周刊【1月第1期 2025-01-05】