想象你是一位餐厅老板,雇了一位新厨师。他通过了理论考试,也在后厨做过模拟菜,成绩漂亮。但真正开业后,你怎么知道他能不能扛住真实客流?顾客口味会不会变?出菜速度跟不跟得上?这些问题,模拟考试永远给不了答案——只有让他在真实餐厅里真刀真枪地做菜,你才能知道。这就是今天要讲的在线评估:模型上线后,在真实流量里持续观察它表现的过程。它用 A/B 测试让新旧模型公平对决,用影子流量让新模型先偷偷练手,用灰度发布把新模型一点点放量,还要随时盯住“顾客口味漂移”(数据漂移)和“新店没历史记录”(冷启动)两大难题。学会了这套思路,你就不只是会训练模型的工程师,而是能对模型“负责到底”的从业者——从训练到上线,从监控到迭代,每个环节心里都有数。
学会在线评估,你就能在模型上线后第一时间发现效果衰减和数据漂移,用数据驱动的方式持续迭代模型——这是 MLOps 与模型生命周期管理的核心竞争力,直接决定业务指标能否长期稳定达标。
可视化演示
动态演示模型上线后的在线评估怎么做的核心机制,通过入门/进阶/实战/优化四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
模型上线后的在线评估怎么做:一在线评 一、在线评估与离线评估的区别 二、实时指标监控体系 核心机制可视化 模型上线后的在线评估怎么做整体架构与关键组件
在线评估概述
新厨师拿到厨师证后,你作为餐厅老板会做什么?你不会只看证书——那是培训班发的,证明他会考试;你也不会只让他在后厨做一道菜给同事尝——那是模拟考。你会让他真正站上灶台,接真实订单,然后每天翻看台率、好评率、出菜速度这些数据。持续看着他在真实顾客面前的表现如何——这就是在线评估。
在线评估(Online Evaluation)指模型部署到生产环境后,用真实流量持续监控其效果的过程。它和离线评估最本质的区别在于:离线评估面对的是固定的测试集,答案早已写在本子上;在线评估面对的是源源不断的真实请求,每一条都带着真实的用户反馈。你的模型能不能在双11大促的洪峰下保持稳定?新用户第一次访问时推荐是否精准?这些只有线上数据能回答。
在线评估不是一次性的“考试”,而是模型生命周期管理的一部分。一个模型从需求分析、训练、离线评估,到上线、监控、发现问题、迭代更新,最终被新模型替代——这条链路就是 MLOps 的日常。在线评估正处于“上线之后、迭代之前”这个承上启下的关键环节。用一个最简单的公式来说明在线评估的“好评率”概念:每收到 N 个请求,有 P 个获得正反馈(点击、成交、通过等),那么好评率 R 为:
回到餐厅的比喻:好评率是你最直接判断新厨师行不行的指标,但它只是一个起点。接下来我们要看,为什么模拟考(离线评估)不够,以及真正的在线评估还要盯哪些更细致的指标。
- 分子 P记录所有正反馈样本数,例如推荐被点击、广告被转化、风控通过且无欺诈,相当于顾客吃完后竖大拇指的人数。
- 分母 N累计接收到的真实请求总数,相当于一天内进店消费的客人数。
- 整体比值正反馈数占总请求数的比例,R 越接近 1,代表模型在线表现越好。
离线评估局限
厨师在培训班考试拿了满分,你就能放心让他掌勺吗?培训班用的食材是标准化的,顾客口味是模拟的,出菜时间也没人催。但真实餐厅里,客人可能突然流行吃辣,某个食材突然断货,高峰期后厨乱成一团——这些变化,模拟考都考不到。离线评估的局限,本质上就是“模拟考与真实考场”的差距。
离线评估最大的隐藏前提是同分布假设:它假设线上真实数据的分布和训练集、测试集一致。可现实世界中,用户行为、商品库存、季节偏好都在不断变化。训练时模型见到的是“冬天的菜单”,上线后顾客却开始点“夏天的凉菜”,分布一漂移,离线测试的准确率就变成了画饼。其次,离线评估没有真实反馈回路——训练时我们只能用历史标签模拟“用户是否满意”,但真正的满意是用户在线上用脚投票投出来的。最后是指标乐观偏差:模型在测试集上反复调参,很容易无意中“记住”了测试集答案,导致离线指标虚高,上线后大幅缩水。
为了量化分布漂移的程度,我们可以用 KL 散度来度量“线上数据分布 Q 相对离线训练分布 P 的偏离程度”:
所以,仅靠离线评估就像仅靠厨师证,无法保证真实生意兴隆。为了及时发现“顾客口味变了”,我们需要引入在线评估的监控体系。
- 求和符号对所有可能的取值 x 进行累加,相当于把每种口味逐一对比。
- P(x)离线训练集中取值 x 的占比,也就是老菜谱里某种调料的用量。
- 对数项P 与 Q 的比值取对数,衡量两者相对偏差的方向与幅度。
- 整体含义加权累积后得到分布差异总量,DKL 越大,说明线上环境偏离离线假设越远。
核心监控指标
餐厅老板每天下班都会看三张表:营业额、翻台率、差评数。对应到在线评估,我们也需要一套“经营仪表盘”,把模型健康度拆成三类指标来盯。
第一类是业务效果指标,直接反映模型是否帮业务赚钱。推荐系统看点击率(CTR)、转化率(CVR);广告系统看千次展示收益(RPM);风控系统看坏账率、误杀率。这些指标就像餐厅的营业额和好评率,是最直观的“顾客满意度”。第二类是性能指标,包括响应延迟、吞吐量(QPS)。试想,顾客点菜后 10 分钟才上菜,就算菜再好吃,客人也会走。线上模型如果推理延迟过高,用户早就流失了。第三类是稳定性指标:模型服务的可用性、错误率、超时率,对应餐厅后厨是否经常停水停电、打翻盘子。
在性能指标中,p95 延迟是比平均值更可靠的监控指标。平均值容易被极端值掩盖——比如 99% 的请求 30ms 返回,但 1% 的请求 5 秒超时,平均延迟依然好看,可真实用户体验已经崩溃。p95 延迟的含义是:95% 的请求延迟都小于等于这个值。它的数学定义是累积分布函数的反函数在 0.95 处的取值:
老板的仪表盘上,业务、性能、稳定性三表缺一不可。指标是仪表盘上的数字,而 A/B 测试则是让你能“安全地换菜谱”的决策工具。
- inf(下确界)找到最小的 x 值,表示“至少要在 x 秒内完成 95% 的请求”。
- F(x) 分布函数F(x) 表示延迟小于等于 x 的请求占比,例如 F(100ms)=0.9 表示 90% 的请求在 100ms 内完成。
- 阈值条件找到让 F(x) 首次达到 0.95 的 x,这个 x 就是 p95 延迟。
A/B测试实战
餐厅想上一道新菜,最稳妥的办法是什么?让一半顾客吃新菜,另一半顾客吃老菜,然后比较两边的满意度和复购率。A/B 测试就是这个思路:把真实流量随机切成两组,一组走旧模型(对照组 A),一组走新模型(实验组 B),在相同的时间窗口内比较指标差异。
A/B 测试的第一个关键是流量随机分割。随机性保证了 A、B 两组用户的特征分布近似一致,这样指标差异才能归因于模型本身,而不是用户群体的天然差异。第二个关键是显著性检验。两组的指标差异可能是随机波动造成的,需要统计检验来判断差异是否“显著”。设两组样本量分别为 n_A、n_B,两组观测到的点击率分别为 \hat{p}_A 和 \hat{p}_B,合并点击率为 \hat{p},则检验统计量 z 为:
还需要注意实验时长:不能只看几天的数据就下结论。用户行为有周期性(工作日 vs 周末),流量有波动,样本量不足的“显著差异”往往会在更长周期内翻盘。一般建议至少覆盖一个完整的业务周期(如 7–14 天),并提前用功效分析计算所需样本量。双厨对决,必须让两位厨师在同一段日子里公平竞争,而不是只比一个中午。
- 分子差B 组点击率减去 A 组点击率,差值越大说明新模型可能越好。
- 合并方差把两组的波动合并考虑,样本量越大,这个波动越小。
- 开方归一将差值换算成“几个标准误差”,方便对照正态分布判断显著性。
- 整体判定z 的绝对值超过 1.96,则差异在 95% 置信水平下显著。
影子流量与灰度发布
新厨师刚来,你不敢直接让他给客人上菜,怎么办?先让他做一份菜,不给客人,只给后厨主管试吃和记录。影子流量(Shadow Traffic) 就是这个逻辑:把线上真实请求复制一份,同时送给新模型跑一遍,但新模型的输出不参与真实决策,只记录日志、评估效果。这样既能观察新模型在真实数据上的表现,又不影响线上用户体验。
影子流量验证通过后,进入灰度发布(Canary Release)——像煤矿里的金丝雀一样,先放一小部分真实用户试水。灰度发布按比例逐步放量,从小流量到大流量,每走一步都观察指标。设初始流量比例为 E_0,每次放量按比例 r 增长,第 t 阶段的流量为:
灰度发布的最后一道保险是回滚机制。一旦监控发现新模型指标下降、报错率飙升,立即把流量切回旧模型,这就好比新厨师把菜做砸了,老板马上让他歇着,换回老厨师救场。回滚要提前准备:保留旧模型版本、配置一键切换开关、告警联动自动回滚。影子流量和灰度发布层层设防,让新模型在上线路上“先观察、再小步走、随时撤”。
- 初始流量 E_0灰度第一期放出的流量比例,例如 5% 的用户。
- 放量倍率 r每期放大的比例,r>1 表示阶梯式增长,如 r=2 则每期翻倍。
- 累计效果第 t 阶段的总流量为初始比例乘以倍率的 t 次幂,最终趋近 100%。
数据漂移与冷启动
餐厅开久了,老板突然发现顾客点菜的口味变了——以前最受欢迎的糖醋里脊,最近几乎没人点;反而麻辣香锅天天卖断货。这就是数据漂移(Data Drift) 在现实中的样子:模型上线时所学到的数据分布,和当前真实数据的分布已经不一样了。漂移一旦发生,模型预测的准确率会肉眼可见地下降。
检测漂移的常用工具是PSI(Population Stability Index,群体稳定性指数)。它把两个分布分别切成 n 个桶,逐个桶比较占比差异。设第 i 个桶中基线分布占比为 Q_i,当前分布占比为 P_i,则 PSI 为:
与漂移相伴的另一个难题是冷启动。新店开张没有历史数据,新用户没有行为记录,模型“巧妇难为无米之炊”。解决冷启动有几种策略:用规则或热门内容兜底(给新用户先推荐最热门的菜);用内容特征而非行为特征(根据菜的品类推荐);用强化学习边探索边学习(先随机上几道菜试试反应)。应对漂移则需要定期用线上数据重训模型、做特征监控、自动触发告警。总之,口味变了要改菜单,新客来了要会试探——这两件事不做,线上模型迟早翻车。
- 分桶占比差第 i 个桶当前占比减去基线占比,差的绝对值越大,该桶漂移越明显。
- 对数比当前占比除以基线占比取对数,放大小幅漂移的敏感度。
- 逐桶累加把所有桶的差异加权求和,得到整体漂移指数。
监控告警与持续迭代
餐厅老板不能天天靠人肉看报表,他要设一套自动报警系统:翻台率连续三天下降就提醒,差评率突然飙升马上调查。模型的在线监控也一样。实时告警机制基于指标阈值或趋势异常触发:准确率跌过红线、p95 延迟超时、PSI 超过 0.25、错误率升高——任何一条触达阈值,监控平台就通知值班工程师。
为了让告警不被随机抖动淹没,常用指数加权移动平均(EWMA) 来平滑指标。EWMA 给最近的观测值更高权重,让趋势变化更快暴露。设 t 时刻观测值为 x_t,平滑系数为 α(0<α≤1),上一时刻平滑值为 S_{t-1},则当前平滑值为:
有了告警机制,就能形成闭环迭代循环:监控发现指标异常 → 定位原因(漂移?bug?外部环境变化?)→ 改进模型或特征 → 重新走离线评估 → A/B 测试验证 → 灰度上线 → 继续监控。这个循环是 MLOps 的核心实践:模型不是“训练完就丢”,而是像餐厅菜单一样,要根据顾客反馈不断调整、迭代、上新。懂得持续迭代的团队,才能真正让 AI 在业务中长期稳定地创造价值。
- 当前观测 x_t最新一个时间窗口内采集到的指标值,比如今日点击率。
- 平滑系数 α控制新的观测值对平滑结果的影响程度,α 越大反应越快。
- 历史记忆项上一时刻的平滑值按 (1−α) 衰减保留,体现历史趋势的惯性。
- 重新组合新信息与历史记忆按比例混合,既平滑噪音又保留趋势突变信号。
AI 应用场景
推荐系统:信息流 A/B 测试
阶段:在线评估(A/B 测试)
解决的问题:推荐算法不能只凭离线 AUC 就全量上线。离线评估无法还原用户实时点击、完播、分享等真实反馈,也无法探测“新算法是否适合当前热点内容”。通过 A/B 测试,把一小部分真实用户流量分给新模型,用统计检验判断 CTR、平均播放时长是否显著提升。
具体案例:某短视频 App 想上线一个新的召回模型,先将 10% 的用户随机分流到实验组,与对照组并行运行 7 天。期间监控点击率、人均观看时长和 p95 延迟,第 5 天发现实验组 CTR 提升 2.1%,z 分数为 2.4(p<0.05),随后逐步灰度放量至 30%、50%、100%。
风控系统:反欺诈模型的持续监控
阶段:在线评估(持续监控 + 影子流量)
解决的问题:欺诈手法在真实世界中快速变异,训练时见过的欺诈模式很快失效。银行风控无法离线模拟真实欺诈流量,且模型误杀会导致用户投诉。利用影子流量将新模型与现有模型并行跑真实交易,比较召回率与误杀率,同时用 PSI 监控交易特征漂移。
具体案例:某银行的交易反欺诈模型上线后,MLOps 平台每小时计算一次特征分布的 PSI。某个周五 PSI 突然从 0.08 飙升到 0.31,告警触发后,数据分析师发现是因为“跨境消费”比例突增——年末购物季来了。团队随即用最近两周数据重训模型,并调整了漂移阈值策略。
广告投放:点击率预估模型的灰度发布
阶段:在线评估(灰度发布 + 回滚机制)
解决的问题:广告模型迭代频繁,全量上线风险高——一旦新模型导致广告收入下滑,损失以分钟计。灰度发布让新模型在 5% 流量上小步试水,监控 RPM、CPM 和点击率,异常时一键回滚。
具体案例:某电商广告团队上线新 CTR 模型,灰度 5% 流量 3 天,RPM 较对照组提升 1.8%,无延迟退化;第 4 天扩到 20%,第 7 天扩到 50%,第 10 天全量。全程监控 EWMA 平滑后的 RPM 曲线,未触发告警,一次平稳迭代完成。
Python 演示
"""在线评估监控器:模拟一个推荐模型上线后的持续监控"""import mathimport random class OnlineMonitor: def __init__(self, baseline): self.requests = 0 self.hits = 0 self.latency_list = [] # 延迟样本 self.pred_list = [] # 模型输出分值 self.baseline = baseline # 上线前采集的基准分布 def feed(self, pred, truth, latency_ms): self.requests += 1 self.pred_list.append(pred) if (pred > 0.5) == bool(truth): self.hits += 1 self.latency_list.append(latency_ms) def accuracy(self): return self.hits / max(self.requests, 1) def p95_latency(self): if not self.latency_list: return 0.0 s = sorted(self.latency_list) return s[min(int(len(s) * 0.95), len(s) - 1)] def drift_psi(self): """与基线相比,输出分布 PSI 漂移指数""" if len(self.pred_list) < 50: return 0.0 eps = 1e-6 bins = 10 psi = 0.0 for i in range(bins): lo = i / bins hi = (i + 1) / bins b_count = sum(1 for x in self.baseline if lo <= x < hi) p_count = sum(1 for x in self.pred_list if lo <= x < hi) b_ratio = b_count / max(len(self.baseline), 1) p_ratio = p_count / max(len(self.pred_list), 1) psi += (p_ratio - b_ratio) * math.log((p_ratio + eps) / (b_ratio + eps)) return psi def report(self): return { 'requests': self.requests, 'accuracy': round(self.accuracy(), 4), 'p95_latency_ms': round(self.p95_latency(), 1), 'psi_drift': round(self.drift_psi(), 4), } def run_monitor(days=7, day_requests=1000): baseline = [random.random() for _ in range(2000)] monitor = OnlineMonitor(baseline) print('天数 请求数 准确率 p95延迟 PSI漂移') for day in range(1, days + 1): # 第4天起模拟数据漂移,第5天起模拟延迟退化 shift = 0.25 if day >= 4 else 0.0 latency_extra = 10.0 if day >= 5 else 0.0 for _ in range(day_requests): pred = min(1.0, max(0.0, random.random() + shift)) truth = random.random() > 0.4 lat = max(1.0, random.gauss(45, 12) + latency_extra) monitor.feed(pred, truth, lat) r = monitor.report() print(f"{day:4d} {r['requests']:7d} {r['accuracy']:8.4f} " f"{r['p95_latency_ms']:8.1f} {r['psi_drift']:9.4f}") if __name__ == '__main__': run_monitor(days=7)
class OnlineMonitor:定义在线监控器类,相当于给餐厅装了一套“营业数据自动记录仪”。self.pred_list.append(pred)把每个请求的模型输出分值存起来,供后续 PSI 漂移计算使用。if (pred > 0.5) == bool(truth):判断模型预测与真实结果是否一致,一致则命中数加一。def p95_latency(self):计算 p95 延迟:延迟排序后取第 95% 分位的值,而不是用平均值掩盖极端情况。psi += (p_ratio - b_ratio) * math.log((p_ratio + eps) / (b_ratio + eps))逐桶累加分布偏差,得到 PSI 漂移指数。baseline = [random.random() for _ in range(2000)]模拟上线前采集的 2000 条基准特征分布,当作“老菜谱配料比例表”。shift = 0.25 if day >= 4 else 0.0第 4 天开始给预测分值加入偏移量,模拟真实环境出现数据漂移。latency_extra = 10.0 if day >= 5 else 0.0第 5 天起延迟增加 10ms,模拟线上服务性能退化。
常见误区
误区训练集和测试集上 AUC 已经 0.95 了,模型上线后应该不会出问题吧?我记得测试集就是用来模拟真实环境的。
正解离线评估依赖同分布假设——它假设线上数据和测试集来自同一个分布。但真实流量会随时间漂移,用户偏好会变、商品池会换、外部环境会突变。此外,离线评估没有真实用户反馈回路。就像一个厨师在培训班炒了 100 次同样的菜拿了满分,但真实顾客的口味和培训班模拟的根本不一样。所以离线指标只能作为“面试成绩”,不能替代“试用期表现”。
为何常见:初学机器学习时最熟悉的是 train/test 划分,很容易把“测试集准确率”当成模型效果的最终裁判,忽略了从离线到在线之间的环境差异。
误区实验组 B 的点击率比对照组 A 高了 0.5%,已经跑了 3 天,看起来挺稳定的,直接全量上线吧。
正解3 天的差异可能只是随机波动。A/B 测试要求样本量足够大、覆盖完整业务周期(如包含周末),并且用显著性检验判断差异是否真实。样本量不足时,即使差异看起来“明显”,也可能是运气。正确做法是先用功效分析确定最少实验天数,跑完再看 z 分数和 p 值。好比两位厨师各做三天菜,第三天 B 厨师好评稍高,不能说明他一定更好——可能只是那天 A 厨师遇到了一桌难伺候的客人。
为何常见:业务方催得急,希望尽快看到新模型带来收益,容易为了“进度”而忽略统计严谨性。
误区CTR 和转化率都涨了 1%,模型升级肯定成功了,不用管那些延迟指标吧?
正解业务指标上升可能是暂时的——如果 p95 延迟从 80ms 涨到 300ms,用户加载变慢,长期来看跳出率会上升、满意度会下降。更危险的是模型服务可用性下降、超时率飙升,直接引发线上事故。在线评估必须同时看业务指标、性能指标、稳定性指标。就像餐厅虽然菜品评分高了,但上菜速度变成原来的三倍,客人等不起,餐厅迟早要关门。
为何常见:业务指标直观且和 KPI 挂钩,性能指标需要额外埋点观测,后厨的“出菜速度”往往在生意好的时候才被想起来。
误区影子流量只是把请求复制一份给新模型跑,又不会真实影响用户,所以不需要对它做告警监控吧?
正解影子流量虽然不做决策,但新模型可能在影子模式下暴露严重 bug——输出非法值、内存溢出、特征解析崩溃等。如果不在影子阶段就监控输出质量,这些问题会被带到灰度阶段,届时影响的就是真实用户。影子流量像新厨师在后台试做的菜,虽然没端上桌,但如果菜里出现了异物,说明他连基本功都不过关,必须尽早发现,而不是等他真正掌勺时再出丑。
为何常见:“不影响线上”带来的安全感,容易让人放松对影子流量自身输出质量的检查。
面试题
Q1. 下列哪个描述最符合“在线评估”的含义?
- A.在训练集上评估模型拟合程度
- B.用真实流量持续监控模型表现← 正确答案
- C.在测试集上计算模型准确率
- D.在实验室中调整模型超参数
答案:B。在线评估是模型上线后使用真实流量持续监控效果。A 和 C 都属于离线评估,D 是调参过程。好比厨师证和模拟考代表过去,真实餐厅的营业数据才能代表现在。
Q2. 离线评估的“同分布假设”指的是什么?
- A.训练集和测试集大小一致
- B.模型输入和输出维度相同
- C.线上真实数据分布与历史数据保持一致← 正确答案
- D.所有样本的预测概率相等
答案:C。同分布假设指离线评估假定线上流量分布和训练/测试数据一致。但真实环境的数据分布会随时间漂移,顾客口味会变,这正是离线评估无法覆盖线上问题的根本原因。
Q3. 以下哪些是常用的在线评估手段?
- A.A/B 测试← 正确答案
- B.影子流量← 正确答案
- C.灰度发布← 正确答案
- D.交叉验证
答案:ABC。A/B 测试、影子流量、灰度发布都是模型上线后用于在线验证和监控的技术。交叉验证是离线评估阶段的方法,在训练集上切分验证,不属于在线评估手段。
Q4. 在 A/B 测试中,流量随机分割最重要的原因是?
- A.让用户均匀消耗服务器资源
- B.保证两组用户特征可比,差异可归因于模型← 正确答案
- C.加快模型推理速度
- D.避免测试数据被模型记住
答案:B。随机分流让对照组和实验组在用户特征上统计等价,这样观察到的指标差异才能归因于新旧模型本身,而不是用户差异。就像两位厨师必须接同样风格的客人,才能公平比较手艺。
Q5. p95 延迟为 200ms 的含义是什么?
- A.平均每个请求延迟 200 毫秒
- B.95% 的请求延迟不超过 200 毫秒← 正确答案
- C.延迟超过 200 毫秒的请求占 95%
- D.每秒最多处理 95 个请求
答案:B。p95 延迟表示 95% 的请求延迟小于等于该值,是比平均值更能反映尾部体验的指标。相当于把出菜时间排序后,第 95% 位客人的等待时间。
Q6. 模型上线后可能出现的典型问题有哪些?
- A.数据漂移导致预测分布偏移← 正确答案
- B.冷启动阶段缺乏用户行为数据← 正确答案
- C.p95 延迟升高影响用户体验← 正确答案
- D.模型在测试集上过拟合
答案:ABC。数据漂移、冷启动、性能退化都是上线后在线评估要重点监控的问题。D 的过拟合在离线评估阶段已经存在,不是“上线后才出现”的问题。
Q7. PSI 大于多少通常被认为发生显著数据漂移?
- A.0.05
- B.0.10
- C.0.25← 正确答案
- D.0.50
答案:C。行业经验约定:PSI < 0.1 表示分布稳定,0.1–0.25 表示需要关注,> 0.25 表示发生显著漂移。超过 0.25 时模型基于旧分布学到的规律可能已失效,应立即排查。PSI 就像“菜单口味雷同度”,差异太大说明顾客已经不爱吃老菜了。
Q8. 影子流量与灰度发布的核心区别是什么?
- A.影子流量直接对用户生效,灰度发布不对用户生效
- B.影子流量只记录模型输出不参与决策,灰度发布按比例对真实用户放量← 正确答案
- C.两者完全相同,只是叫法不同
- D.灰度发布只作用于训练数据,影子流量作用于测试数据
答案:B。影子流量把真实请求复制给新模型跑,但不让输出影响用户,相当于“后台试做菜”;灰度发布则让新模型真实服务一小部分用户,逐步扩大,相当于“先让几桌客人试菜”。影子在前、灰度在后,共同构成安全上线路径。
Q9. 关于 A/B 测试,下列说法正确的是?
- A.需要足够的样本量和实验时长← 正确答案
- B.显著性检验可以降低随机波动造成的误判← 正确答案
- C.只看一天的数据就可以提前结束实验
- D.流量需要随机分配以保持两组可比← 正确答案
答案:ABD。A/B 测试必须保证样本量充足、周期覆盖业务波动(如周末),并通过显著性检验排除随机因素。C 明显错误——提前结束实验会引入时间偏差,就像只比一个中午就判定厨师手艺高低。
Q10. 某 A/B 测试跑完 30 天后 p 值为 0.04(α=0.05),但实验组 p95 延迟比对照组高 45%,最佳决策是?
- A.立即全量上线,因为业务指标显著提升
- B.结合性能代价综合评估,必要时延长观察或调整优化← 正确答案
- C.拒绝实验结果,直接下线新模型
- D.忽略延迟差异,只关注业务指标
答案:B。p<0.05 说明业务指标差异在统计上显著,但不能忽视性能代价。延迟大幅升高可能导致长期用户流失,收益可能被抵消。正确做法是综合评估收益与成本,或继续优化后再实验。好比一道菜虽然好评率显著更高,但上菜慢了 45%,是否值得,得看长期账本。