第 284 题:设计AB测试的分流算法,正交分层与互斥实验。
题目
设计AB测试的分流算法,正交分层与互斥实验。
完整讲解
一、AB 测试与分流
- AB 测试:将流量按一定规则分流到不同实验组(如策略 A/B),比较各组的指标,推断策略效果。分流算法需保证:同一用户/请求尽量稳定在同一组(一致性)、各实验正交或互斥可配置、支持多实验并行。
二、正交分层
- 分层:将流量按层划分(如层1=召回策略、层2=排序模型、层3=UI);每层内再分桶(如 100 个桶)。正交即不同层使用独立的 hash 或随机种子,这样「层1 的桶 i」与「层2 的桶 j」独立,层1 实验与层2 实验可同时进行、结论不互相干扰。
- 实现:user_id(或 request_id)→ hash( user_id, layer_id ) % 100 得到该层桶号;每层内再按桶号划分实验组(如桶 0~49 为 A,50~99 为 B)。分层内可再划分子域(如按地域)做互斥。
三、互斥实验
- 互斥:同一业务域或同一入口下,某些实验不能同时生效(如两个排序模型不能同时改同一位置)。做法:同层内一个桶只能属于一个实验;或设「实验组」为互斥集合,分流时先选互斥组再选组内策略。
- 分流算法:user_id → hash → 桶号;桶号 → 查配置表 → 实验 id 或策略 id。配置表记录「桶区间 → 实验」的映射;互斥实验占用不重叠的桶区间。可支持按比例扩缩(如某实验从 10% 扩到 20% 则桶区间扩大)。
四、实现要点
- 稳定性:同一 user 同一层同一桶,避免频繁切换组;白名单与强制命中可覆盖 hash;记录分流结果用于日志与分析。
面试要点
- 能说清 AB 分流中正交分层的目的(多实验并行、结论不互相干扰)及实现(每层独立 hash 得桶号)。
- 能说明互斥实验的含义与实现(同层桶不重叠、或互斥组内选一);能简述分流算法流程(hash→桶→配置→实验)。
记忆要点
- AB 分流:正交=分层+每层独立 hash 得桶,多实验并行;互斥=同层/同域桶不重叠。
- 分流:user_id → hash(layer) → 桶号 → 配置表 → 实验;需稳定、可白名单。