【推荐算法工程师技术栈系列】推荐系统--数据效果与评估
推荐系统上线的基本条件
一个新的推荐算法最终上线,需要完成上面所说的3个实验:
(1)首先,需要通过离线实验证明它在很多离线指标上优于现有的算法;
(2)然后,需要通过用户调查(或内部人工评测)确定它的用户满意度不低于现有的算法;
(3)最后,通过在线等AB测试确定它在我们关心的指标上优于现有的算法。
AB实验
(1)AB test 的好处是显而易见的,可以公平获得不同算法实际在线时的性能指标;
(2)AB test 和用户调查一样,同样需要考虑到分布的随机,尽量要将与最终指标有相关性的因素都列出来,总而言之就是切分流量是AB test 的关键;
(3)AB test 的一个重要缺点就是实验周期长,这样才能得到可靠的结果,因此AB test 不应该测试所有的算法,而是只测试在离线实验和用户调查中表现很好的算法;
(4)如果有用户标签库的话,会极大的帮助在线实验。
功能列表
功能 | 描述 |
---|---|
分流 | 支持召回排序等指定方式分流,比如尾号哈希,或分层哈希 |
白名单 | 实验开始前预置一些用户白名单到实验组 |
实验管理 | 支持实验创建,实验列表,实验修改等 |
指标管理 | 指标计算定义 |
效果图表 | diff,AAdiff;以及对应图表 |
可信度分析 | 根据实验组的置信区间(95%置信区间)和p值(当p值小于等于0.05时,实验结果是显著的)判定实验是否可信 |
数据指标
这里对应到推荐的指标集一般包括点击率(ctr),关注率,观看时长,MAU/DAU等;
而线下一般采用(特征/召回)覆盖率,AUC,gAUC,相关性&准确率(人工评测)等指标;
覆盖率
其中特征覆盖率coverage=N1N;其中N1是特征i中非空个数,N是总样本数;对应到召回覆盖率,N1是有召回结果的用户数(或召回的内容数),N是总用户数(或可推荐的内容数)
不得不提的是在项亮的《推荐系统实践》中推荐系统的覆盖率是度量一个推荐系统挖掘长尾商品的能力(曝光内容分散程度,越集中头部效应/马太效应越严重):
在度量推荐系统覆盖率更科学的一个指标是基尼系数(Gini Index),因为其考虑了每个物品被推荐次数是否平均,系数越大,表示越不均等,系数越小,表示越均等。gini系数最开始是被用来量度贫富悬殊程度,具体推导见附录洛伦茨曲线和基尼系数:
1905年,统计学家洛伦茨提出了洛伦茨曲线,如图一。将社会总人口按收入由低到高的顺序平均分为10个等级组,每个等级组均占10%的人口,再计算每个组的收入占总收入的比重。然后以人口累计百分比为横轴,以收入累计百分比为纵轴,绘出一条反映居民收入分配差距状况的曲线,即为洛伦茨曲线。
AUC及gAUC
AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积;进一步说其实就是随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。
ROC曲线的横轴为假正率(False Positive Rate,FPR);纵轴为“真正率”(True Positive Rate,TPR)
AUC反映的是整体样本间的一个排序能力,而实际用户的结果是个性化的,我们更关注的是同一个用户对不同物品间的排序能力,gAUC(group auc)实际是计算每个用户的auc,然后加权平均,最后得到group auc,这样就能减少不同用户间的排序结果不太好比较这一影响。
实际处理时权重一般可以设为每个用户view的次数,或click的次数,而且一般计算时,会过滤掉单个用户全是正样本或负样本的情况。
但是实际上一般还是主要看auc这个指标,但是当发现auc不能很好的反映模型的好坏(比如auc增加了很多,实际效果却变差了),这时候可以看一下gauc这个指标。
指标展示
这方面一般由数据平台的产品进行支持,简单的也可以自己写SQL跑数据;在此就不详细展开了。
指标监控
这方面一般依托监控报警平台和数据平台;业务方也可以自己写脚本监控;在此就不详细展开了。
人工评测
数据指标和真实的用户体验存在差异,Bad case的反馈是优化推荐系统的一大途径
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具