算法岗基础 / 04
指标、实验与收益归因
算法岗面试里,“指标怎么设、实验怎么做、收益怎么归因”是高频追问。因为业务算法最终要证明价值,不是只证明模型看起来更高级。
指标分三层
第一层是模型指标,比如 AUC、Logloss、MAE、F1、NDCG。这些指标用于判断模型是否更好地拟合了离线数据。
第二层是策略指标,比如召回覆盖率、排序分布、补贴命中率、调度超时风险、审核通过率。这些指标用于判断模型输出进入策略后是否合理。
第三层是业务指标,比如点击率、转化率、GMV、ROI、留存、准时率、投诉率、资损、成本。业务指标才是最终结果。
很多问题出在这三层不一致:模型指标涨了,策略没变;策略看起来更激进,业务护栏被伤害;业务涨了,但不是算法导致的。
主指标、过程指标和护栏指标
一个实验不能只看一个指标。通常要同时定义:
- 主指标:实验最想提升的指标,例如 GMV、准时率、风险召回。
- 过程指标:解释主指标变化的中间指标,例如点击率、接单率、召回覆盖。
- 护栏指标:不能明显变差的指标,例如投诉率、误伤率、延迟、成本、用户留存。
例如广告出价优化的主指标可能是广告主 ROI,过程指标是 CTR、CVR、消耗速度,护栏指标是用户体验、预算超投率和系统延迟。
为什么离线指标不等于线上收益
离线数据来自历史策略,天然有偏。推荐系统只知道用户看过什么,不知道没曝光的内容会不会点击;补贴系统只知道历史补贴策略下的行为,不知道不补贴会怎样;风控系统只知道拦截后的结果,但不知道放行后是否会产生风险。
因此离线指标只是筛选方案,不能替代线上实验。
常见原因:
- 样本分布和线上流量不一致。
- 标签定义和业务目标不一致。
- 模型提升集中在低价值样本。
- 策略层有规则覆盖,模型变化没有真正生效。
- 多目标权重改变后,护栏指标受损。
A/B 实验基本流程
- 明确假设:为什么这个方案会提升指标。
- 定义实验单元:用户、请求、订单、骑手、城市还是时间片。
- 设计分流:保证实验组和对照组可比。
- 估算样本量:避免样本太小导致结论不稳。
- 设置护栏:防止成本、体验、延迟失控。
- 灰度上线:从小流量开始,逐步放量。
- 分析结果:看显著性、异质性和长期影响。
- 做归因:确认收益来自方案机制,而不是外部因素。
实验单元很重要
不同业务的实验单元不同。
推荐排序常按用户或请求分流;广告可能按用户、广告主或流量分层;物流调度可能按区域、城市或时间片,因为骑手和订单之间有干扰;风控策略可能按账号或交易分流,但要注意风险扩散。
如果实验单元选错,会出现污染。例如物流里同一骑手同时服务实验组和对照组订单,两个组就不独立。
收益归因怎么讲
面试官常问:“这个提升为什么是你的方案带来的?”
回答要按链路拆:
- 方案改变了什么:特征、模型、召回、排序、阈值、优化目标还是策略规则。
- 中间指标是否符合预期:比如候选覆盖提升、接单率提升、误伤下降。
- 主指标是否提升:比如转化、收入、准时率、资损下降。
- 护栏是否稳定:成本、延迟、投诉、留存没有明显恶化。
- 分场景是否一致:高峰、低峰、新用户、老用户、不同城市表现如何。
不要只说“实验涨了 2%”。要解释为什么涨。
Ablation 怎么做
Ablation 是拆解贡献。比如一个排序方案同时加了新特征、新模型和新重排策略,如果整体效果好了,要知道哪部分贡献最大。
常见做法:
- 只加特征,不换模型。
- 只换模型,不改策略。
- 只改排序目标,不动召回。
- 分层看不同人群、场景、流量的效果。
Ablation 可以帮助后续迭代,也能防止把收益错误归因给不重要的模块。
常见面试追问
AUC 提升 0.01 一定有用吗?
不一定。要看提升是否集中在关键样本和关键排序区间。如果 AUC 提升来自大量低价值负样本,线上可能没有收益。还要看模型校准、排序 top 区间和策略使用方式。
实验不显著怎么办?
先检查样本量和实验周期,再看指标波动和分层效果。如果整体不显著但某些场景显著,可以判断是否存在异质性。也要回到方案机制,看中间指标是否按预期变化。
指标涨了但投诉也涨了怎么办?
说明主指标和体验护栏冲突。不能只看主指标上线,要重新调整目标函数或策略边界。业务算法的重点是在约束下优化,不是单指标冲高。
如何避免 p-hacking?
实验前明确主指标、分析周期和分层方案。不要在大量指标里事后挑显著结果。必要时做多重检验校正或复现实验。
一段标准回答
我会把指标分成模型指标、策略指标和业务指标。离线阶段先看模型指标和关键分桶,确认方案有潜力;上线阶段通过 A/B 实验验证主指标,同时设置成本、体验、延迟等护栏。实验后不只看整体涨跌,还会看中间指标、分场景效果和 ablation,确认收益是否符合方案机制,避免把外部波动误认为算法收益。
下一篇建议继续看: