DataScience 板


LINE

[关键字]: A/B Testing [重点摘要]: - A/B Testing 的正确做法,是预先决定实验样本数, 并禁止偷看结果、甚至提前结束实验 - 偷看结果会使伪阳性错误率(Type-1 Error)上升 - 在严重的状况,会让你手中看似有统计显着性的决策, 20% 以上是错误的 最近在工作中发现团队会对 A/B Testing 的统计检定有些迷思 常会因为检验出现统计显着性就想提早结束实验 因此整理成一篇文章,与大家一起探讨这样会有什麽问题 我也在文章内附上 Google Colab 的 Python 程式码,透过实作来呈现问题 网志好读版: https://haosquare.com/ab-testing-peeking/ # A/B Testing:「偷看结果」将成为最大的错误 如果你身处该开始推行 A/B Testing 的团队,相信你曾遇到过这样的情境: 「我们的产品隔日回访率一般是 40%,我看了数据,现在执行的 A/B Testing,B 组的新 设计让回访率提升到 42% 了,我们立刻让所有使用者采用 B 组设计吧!」会议中,同事 兴奋地提出这项建议,大家也纷纷同意。 「原本不是设定 A/B Testing 要执行一周吗?现在才执行两天、样本数总共才蒐集两万人 而已,要等一周资料蒐集完整才能做决策吧?」有人提出疑惑。 「可是 A/B 组的 KPI 差异有统计显着性啊!就决定让产品改用新设计的 B 组吧!」主管 看完数据就这麽做出决议。 乍看之下,只要通过统计显着性的检验,就应该是有科学方法的严谨决策。然而,这个 A/ B Testing 情境的问题,是在实验样本蒐集完整之前「偷看结果」。偷看结果最严重的下 场,是让你手中看似有统计显着性的决策,20% 以上是错误的。这篇笔记将说明为何会有 此问题、以及如何避免。 如果你喜欢写 Code 实作,我在 Google Colab 也用 Python 呈现了本文探讨的问题。 https://reurl.cc/yggaNa ## 实验的「预期问题」什麽? 产品在执行 A/B Testing 之前,我们会先决定这个实验所需样本数。现在网路上也有许多 人设计方便的计算机可以使用,不需要统计软体就能算出所需样本数。当然,你不需要知 道所有统计检定的数学推导、也能运用 A/B Testing 改善产品,但是,你至少该知道「所 需样本数」背後的假设是什麽。 例如,APP 在做 A/B Testing 常见的 KPI 之一是「次日留存率」,也就是新进使用者隔 日会再使用此 APP 的比例。如果 APP 目前次日留存率是 40%,团队做了一项新设计,并 期望这项新设计会让次日留存率提高至少 1%,那麽,为此新设计做的 A/B Testing,所需 样本数计算会如下图: https://i.imgur.com/u0FktsW.png 「只要 A/B 两组都各有至少 37,719 个样本,并且 B 组的次日留存率超过 41%,就能拒 绝虚无假设,说明 B 组的设计较好。」这样的解释还不足够,这段叙述忽略了假设检定预 期内会发生的问题,这些预期问题就写在上图计算机的下半部: - Statistical Power 80%:如果 A/B 两组确实有差异,有 80% 的机率,会被统计检定确 实侦测到 - Significance Level 5%:如果 A/B 两组其实并没有差异,有 5% 机率,统计检定会因 为随机性判定成有差异(伪阳性) 换句话说,设定 Significance Level 为 5%,用正确的方法持续做多次 A/B Testing 实 验,每 100 次拒绝虚无假设、并决定采用实验组( B 组)新设计的状况,预期约有 5 次 会是错误的(明明 B 组没有更好我们还是改采用它)。 如果你是决策者,你当然可以觉得 5% 的伪阳性错误率风险太高。以此例而言,同样是现 有次日留存率 40%、期望 B 组提高 1%,如果你想要更保守点,把上图计算机最下方的 Significance Level 从 5% 改成 1%,你就可以让 A/B Testing 预期内的伪阳性错误率( Type-1 Error)下降到 1%,并看到计算机告诉你,为了让统计信心提高,你需要增加更多 所需样本数。 比起 Statistical Power,对 Significance Level 讨论较多,是因为伪阳性错误造成的 成本较高。以疫苗研发为例,如果检验出现伪阳性错误,表示明明没有成效、却生产千万 支疫苗给全台湾人民使用,这会是多大的浪费!在 Significance Level 的假设下,统计 检定控制了对伪阳性错误的预期,但是在 A/B Testing 的情境中,如果决策者偷看了实验 结果,这项控制将失效、伪阳性错误率大大提高。 ## 「偷看」的问题 在前面段落提及范例:APP 目前次日留存率是 40%、期望的留存率差异是 1%,需要每组至 少 37,719 个样本。下图是据此设计、实际商业决策会遇到的 A/B Testing 偷看情境:我 们预先设定每组总共要蒐集 40,000 个样本,但是每蒐集 10,000 个样本我们就偷看一下 结果。然而,此情境刻意设计 A/B 两组母体没有成效差异。 https://i.imgur.com/3QB5737.png 两条线分别是 A/B 两组,随着蒐集样本数量增加、次日留存率的变化状况。 如图所示,这项实验中,当我们在两组各只蒐集 10,000 个样本就急着偷看结果: - 两组 KPI 分别是 41.2% 与 39.5% - 做了卡方检定也观察到显着性(P-value < 0.05) 如果在此就决定 B 组较好并采用,会做出明明 A/B 两组没有差异、却仍改采用实验组的 错误决策。也就是说,偷看 A/B Testing 结果提高了伪阳性错误率。 如果乖乖等到蒐集完预先设定的 40,000 样本数,并不代表决策者可以完美避免掉伪阳性 错误,而是可以把伪阳性错误率控制在预期内的 5%。若偷看结果、并提早结束 A/B Testing,伪阳性错误将会大於 5%,而且偷看越是猴急、错误率会越高。 ### 越急着偷看、问题越严重 实际写 Python Code (见参考资料) 设计实验、观察偷看频率的差异,在 A/B 两组实际上 并没有成效差异(也就是 A/A Testing)的状况下: - 每累积 33.3%(三分之一)所需样本数偷看一次,若有显着差异就提前结束实验,伪阳 性决策错误率还低於 10% - 更猴急点,每累积 5% 所需样本数就偷看一次,若有显着差异就提前结束实验,伪阳性 决策错误率会超过 20%! 也就是说,如果允许无限制偷看 A/B Testing 结果,那你所做出的改变、并且自以为会让 产品更好的决策,至少 20% 是错误的! 这并不是一个夸张的情境,实验者样本蒐集速度缓慢的时候,更容易失去耐心而步入这项 错误。40,000 所需样本数的 5% — 也就是每组各 2,000 人,当你是刚起步、或者仍在测 试阶段的 APP 设计者,要蒐集 2,000 人样本可能需要半个月时间,会害你觉得 A/B Testing 进度太慢,就想急着做统计检定、下结论。 ## 正确做法:预先决定实验样本数,并禁止偷看 解释了这麽多,都是为了呈现问题的严重性,而要解决这个问题也不难:事先决定好实验 所需样本数,并且数据分析师要把关 A/B Testing 流程,未达所需样本数、不可偷看结果 也不可贸然决策。 A/B Testing 所需样本数,来自团队共同决定出的要素: - 数据分析师提出现有 KPI 为何 - 团队讨论出期望提高 KPI 达到多少量,才值得做出决策、并改变产品 - 统计检定需要多少信心、可容许多少伪阳性错误率 A/B Testing 完整蒐集所需样本数才做检定,这些团队共同决定、对实验假设的共识才有 意义。就算样本蒐集缓慢,可以考虑提高 Significance Level,增加预期内伪阳性错误率 、以换取所需样本数下降;而不是用偷看、提早结束实验的方式,加快实验结束的速度、 却让伪阳性错误决策增加到预期外的范围。 注:上述计算机是依照经验法则的公式找出所需实验样本数 https://www.evanmiller.org/how-not-to-run-an-ab-test.html ## 结语 偷看 A/B Testing 结果的问题,除了前述在样本蒐集缓慢的状态下容易发生以外,我个人 认为在热血沸腾的团队工作也很容易发生相同问题。产品设计者有过多的点子,都想透过 A/B Testing 来验证新点子是否有成效,实验刚上线没多久就追着数据分析部门要结果: 「看起来差异显着了耶?可以改了吗?可以执行下一个实验了吗?」 作为资料科学家、或者作为决策者,为了避免团队的热血因为脱缰的伪阳性错误、而变成 徒劳无功,你必须为了团队的产品保持耐心,做好事前的实验设计、并且让实验确实遵守 设计达到所需样本数,再做决策。 参考资料: - Evan Miller: How Not To Run an A/B Test - https://www.evanmiller.org/how-not-to-run-an-ab-test.html - 好豪的 Google Colab: A/B Testing 问题 Python 实作 - https://reurl.cc/yggaNa --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.12.23.135 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1598095615.A.678.html
1F:推 st1009: 推推 感谢分享 08/22 22:32
2F:推 art1: 解释得好清楚 08/22 22:54
3F:推 blackmaninEE: 推 学到新知识 08/23 01:24
4F:推 TreeMan: 推推 08/23 08:11
5F:推 lin8399: 感谢知识分享! 08/24 07:55
6F:推 ce270651: 推 08/25 01:24
7F:推 nickchen0304: 推 08/25 14:17
8F:推 soild47: 推 08/25 21:53
9F:推 sugarkitten: 推 08/27 07:10
10F:推 albertviking: 请问看多久这事要怎麽决定呢 09/01 11:46
需要多少样本数, 取决於你的假设, 包括信心水准与期望差异大小 然後带着假设去按文中的计算机决定样本数 至於要多久时间, 就看你实际收样本的速度了
11F:→ Wengboyu: 偷看 但直到Sample收满再决定 会有差吗? 09/02 17:39
如果偷看能忍住、完全忽略是否显着,当然就没差 可是如果你偷看又不会做决策... 何必偷看? ※ 编辑: AgileSeptor (60.250.32.97 台湾), 09/03/2020 10:51:30
12F:→ Wengboyu: 时间到了,需要报告xD 每次都要写但书 人没收满仅供参考 09/03 18:32
13F:推 bearching: 请问一下 如果用蒙提霍尔问题的观点来看这个问题,偷看 09/15 16:24
14F:→ bearching: 结果再做决策,我想也许比较容易提高成功机率吧 09/15 16:24
15F:→ bearching: ? 如果把偷看当作主持人开门看到山羊的话,也许可以多 09/15 16:25
16F:→ bearching: 做些讨论? 09/15 16:25







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP