编者按: A/B 测试目的是选取一个最好的方案. 它一般会为同一个目标制定两个方案 A/B, 分别让两组近似的用户群使用方案 A 和方案 B, 经过一定的测试时间, 根据收集到的两方案样本的观测数据, 根据显著性检验结果选取一个最好的方案. 听起来很不错的测试项目为什么总在执行中这么不靠谱呢? 本文译自 CONVERSION UPLIFT 中作者 Neal Cole 原标题为 "Why Are Most A/B Test Results A Lie?" 的文章.
在一份关于 A/B 测试的报告中, Qubit 的 Martin Goodson 认为: 大多数 A/B 测试的结果都不太准确. web Arts 的 Andre Morys 甚至断论:"这些测试结果 90% 都是假的." 如果真的是这样, 那么很多决策的制定都基于这些无效的实验, 这也是之所以很多非首席风险官经理对 A/B 测试结果的可持续性持怀疑态度的原因.
那么到底为什么有些 A/B 测试的结果无效呢? 我们又可以对此做些什么呢?
1. 证实偏差
证实偏差是指, 遇到一个命题时, 人们会倾向于寻找支持这个命题的证据, 而忽略否定这个命题的证据.
Andre Morys 认为, 证实偏差导致了大量的误报率. 在 A/B 测试中, 这些做优化的人员会自然地将他们的测试假设和设计建立在他们自己的态度和观点上而忽略了与这些想法互相矛盾的信息, 即不去测试和设计那些与自己意见不一致的想法. 这就导致了一旦测试软件表现出符合他们预先设想的测试情况时, 他们自然就会觉得此前的设计是非常正确的, 得到的结果也是之前设想的, 因为得到了自己理想的结果, 所以也就不再继续试验.
就如之前提到的, 一旦他们对这个统计有了足够的信心而停止了试验, 可能会造成高度的误导性, 因为它不适用于较长的业务周期, 也会忽略重要的流量来源和当前的营销活动. 如果可能的话, 应该至少运行两个业务周期的测试, 以便调解日常波动并改变周末行为. 因此, 测试应至少运行 2 至 4 周, 具体时长取决于测试设计和业务周期.
2. 幸存偏差
幸存偏差是指我们会倾向于关注最终幸存下来的人(比如回访用户或 VIP 客户), 而忽视了他们在某一过程已经被影响. 即便是回头客, 也不能代表他们从未遇到消极的用户体验. VIP 客户可能是最赚钱的用户, 但是他们并非固定群体, 并且他们的预期往往高于普通用户.
因此, 假如在登陆页面的 A/B 测试中加入回访用户, 则他们的行为与从未访问过该网站的新用户行为截然不同, 若偏执于幸存者就会变得十分危险. 因为 A/B 测试是基于相似度比较高并且普遍的两个群体进行测试, 所以在针对现有用户的相关测试中, 应该排除这些 "幸存者", 即一些回头客和 VIP 客户, 因为他们的行为和别的普通截然不同. 排除异常值可以减少 VIP 客户对测试结果的影响, 因为 VIP 客户完全不能代表普通用户, 所以应该考虑将他们完全从你的 A/B 测试中排除.
3. 统计功效
统计功效指的是在试验中, 识别两种经验之间真正差异的概率, 即在假设检验中, 我们拒绝掉原假设以后, 接受的替换假设为正确的概率. 为了达到高水平的统计功效, 我们必须建立足够的样本量. 但是, 在商业公司中, 人们通常急于求快, 直接进入下一个测试. 不幸的是, 这种做法很多时候会破坏测试过程.
在开始测试之前, 你应该先估计达到高水平统计功效 (通常为 90%) 所需要的样本量, 即要达到在原假设为假的情况下还依然接受这个原假设的概率应该小于 10%(100%-90%). 换句话说, 这意味着 10 个真正测试差异中你应该能识别出 9 个. 鉴于样本观察和自然的随机变化, 我们知道测试本身也会产生假的阳性结果, 相当于测试本身也有可能进行误报, 即在现实中是正确的但在统计中被误报为错误的. 按惯例, 这个误报的比例通常设置为 5%.
根据 covert.com 进行的一项关于 1700 次 A/B 测试的分析, 只有约 10% 的测试达到了统计学上的显著提升. 这意味着, 如果我们进行 100 次测试, 大概其中只有 10 个测试产生真正的提升, 即只有 10 个测试真正地在 A/B 测试中选出了真正有提升效果的更好的方案. 但是, 鉴于每个站点的当前流量水平, 我们估计每个测试需要运行 2 个月才能达到 80% 的统计功效. 这又意味着, 理论上我们应该可以识别出 90% 的提升或 9 个测试. 使用 5% 的 P 值(即前面所说的误报率), 我们预计会得到 5 个误报结果(即是成功的结果但是统计时被识别为失败的结果). 因此, 我们的测试一共可产生 14 个成功的测试.
这种做法的危险之处在于, 人们往往没有耐心等待测试运行完两个月时间, 直到测试显示出任何提升, 他们往往在两周之后便停止了测试. 这样会使过小的样本降低了测试的统计功效, 很可能从 90% 减少到 30% 或者更低. 在这种情况下, 我们会得到 3 个真正的提升, 以及 5 个误报结果. 也就是说, 你测试结果的 63% 并不是真正的提升.
在运行测试之前, 最好使用一个样本量计算器, 并预估获得你需要的统计功效的时间. 如果你真的决定缩短测试时间, 这样做可以让你知道时间缩短对测试带来的影响. 如果你提前结束测试, 你有极大的风险会得到假的阳性结果.
4. 辛普森悖论
开始测试后, 一定不要更改设置, 变量或对照的设计, 并且不要在实验过程中更改已经分配到变量的流量. 在测试期间调整变量的流量分配可能会破坏测试的结果, 这是由于一个被称为 "辛普森悖论" 的现象所致. 当两组数据合并时, 不同数据组中的趋势消失时, 便会产生此现象.
微软的实验人员曾遇到过这个问题. 当某个周五, 他们为测试中的变量仅分配了 1% 流量, 到周六那天, 又将流量增加到 50%, 这时辛普森悖论出现了. 该网站每天有一百万访客. 虽然在周五和周六这两天, 变量的转换率都高于对照, 但是当数据被汇总时, 变量得到总体转换率似乎变低了.
发生这种现象的原因在于我们会使用到加权平均数. 周六的转换率更低, 并且随着当天变量分配到的流量是周五的 50 倍, 周六的转换率对整体结果的影响更大. 如若采样不均匀, 就会发生辛普森悖论. 因此避免使用汇总数据对子组合 (比如不同的流量源或设备类型) 做决定. 这表明了定向测试的好处, 比如, 只关注单个流量来源或设备类型.
当你需要为多个流量来源或用户部分运行测试时, 最好也避免使用汇总数据, 并且将每个来源 / 页面做为单独的测试变量进行处理. 然后, 你可以为每个变量运行测试, 直到你得到想要的统计结果.
在测试期间更改流量分配也会使得结果偏离你的预期, 因为它会改变你回访用户的抽样. 由于流量分配只会影响到新用户, 流量份额的变化将不会因为初始流量分配引起的回访客户数量差异而发生改变.
5. 未验证你的 A/B 测试软件
有时候, 公司还没有进行适当的验证, 即准确评估所有用户测试的关键指标, 就急于开始使用 A/B 测试软件. 由于平台, 注册和注销分别由不同的团队管理, 测试软件在开始测试之前未得到统一整合的现象十分常见.
在整合的过程中, 也务必仔细检查所有不同的用户使用是否被纳入, 因为人们总是倾向于将他们认为是最重要的路径放在首位. 然而, 用户行为却很少符合这种所倾向的 "快乐路径".
整合一旦完成后, 接着就需要验证整合的结果, 可以通过运行 A/A 测试或使用网络分析来确认指标是否正确评估. 当然, 最保险的做法就是同时检查软件测试和网络分析是否都与你的数据仓库保持一致. 如果存在任何差异, 在测试前发现总比在向高级管理层提交测试结果时要好得多.
6. 均值回归
测试运行几天后, 如果你发现测试结果中出现大的提升 (或下降) 后立即告诉你的老板或其他团队成员, 其实是一种相当不负责任的行为. 每个人听到这样的好消息势必会燃起希望或期待, 接着他们会要求你尽早结束测试, 以从提升中获益或减少损失. 但是, 往往这种显著的早期提升在之后的几天或几周的测试中会逐渐消失.
所以千万别掉入这个陷阱, 因为此时你看到的不过是均值回归. 也就是说, 如果某一指标在第一次评估时出现极端结果, 在后续的观察中, 该指标会逐渐趋向于平均值移动. 小样本尤其容易生产极端结果, 因此, 务必小心不要在测试刚开始生产数据时就将所得到的任何结果解读成你的转换率.
7. 基于会话指标的谬误
大多数 A/B 测试软件使用标准统计测试来确定变量的表现是否显著区别与对照组.
但是, 如果你使用会话级别的指标, 比如每个会话的转化, 你便会遇到问题. A/B 测试软件会将用户分配到 A 组或 B 组, 来防止相同的访客看到两个变量, 并确保用户一致. 而由于用户可以拥有多个会话, 因此会话并不独立.
Skyscanner 的分析表明, 假如访客有多个会话的话, 他们的转化可能性更高. 另一方面, 如果用户为多会话用户, 则其生成的单个会话的转换可能比较低. 随着 Skyscanner 模拟这一现象会如何影响他们的转换率预测时, 这种独立性的缺乏值得关注. 他们发现, 当他们随机选择用户而非会话时, A/B 测试过程中显示, 方差要大于显著性计算中假定的方差.
Skyscanner 发现, 由于平均会话次数较高, 该影响在长期实验中更明显. 这意味着, 基于会话转换率 (即用户随机化) 且持续一个月时长的测试出现的误报率是正常预期的三倍. 但是, 假如测试基于用户 (即随机化的会话而不考虑用户) 时, 方差符合通过显著性计算所预测的方差.
此外, 每当你使用未经过随机化定义的概率指标时, 也会出现上述问题. 因此, 如果你采用用户随机化方式, 则每页浏览, 每次点击或点击率指标等都会受到上述相同问题的影响. Skyscanner 的团队给了三种方式以避免测试结果受此统计现象的误导:
1) 在随机化用户时, 务必遵守用户级别指标, 这样你可以避免误报率上升;
2) 当你不得不使用将会增加误报倾向的指标时, 有一些方法可以预测真实方差并计算准确的 p 值.
3)如若计算真实方差和准确的 p 值不仅计算复杂且十分耗时, 你就只能接受更高的误报率. 但是你可以使用 AA 测试来预测统计学现象对指标方差的夸大程度.
结论
如果你试图避免上述 A/B 测试的陷阱, 关键在于整个测试的开发和运行要有一个严谨的过程, 因为严谨的框架可以确保假设基于证据而非直觉, 并且测试参数已经预先得到认同. 但一定要确保你已经计算过所需的样本大小, 并测试过至少要运行多久才能够获得所需的统计功效.
完整运行测试其实是存在机会成本的, 因此有时你可能会希望提前结束测试. 如果你能接受较低的统计置信度和潜在增长的误报风险的话, 提前结束测试也不会有大问题. 但实际上, 只要持续运行测试, 就可以在很大程序上弥补误报率的增加.
来源: http://www.mzh.ren/why-are-most-ab-test-results-a-lie.html