机器学习的 A/B 测试

2025年6月17日 | 阅读14分钟

在机器学习领域,A/B 测试(或称分割测试)指的是确定任意模型、算法或系统的两个比较版本中哪个工作得更好的方法。它广泛用于广告定位、推荐系统和改善用户体验。它基于统计分析,使数据科学家和工程师能够基于事实而非猜测来得出结论。

在机器学习 A/B 测试实验中,会部署模型的两个版本;A 作为对照组,B 作为变异模型。它涉及收集准确性、精确率、召回率等性能指标以及转化率和用户参与度等业务 KPI。结果会被分析以确定新模型是否在统计上优于旧模型。A/B 测试能够实现数据驱动的决策,并为机器学习模型的有效调整提供途径,降低未经测试的修改带来的风险。

通过 A/B 测试,现在会进行随机研究,以便不同用户群体会看到一个变量的不同变体,例如广告横幅或网页。这样,他们就能找出哪个对业务指标影响最大。此分析的主要目标是了解广告活动的方向,广告在其中可能扮演的角色等等。观众被视为实验组,以进行A/B 测试,而一个较小的对照组则在同一位置看到 PSA 或什么都没有。结果:此数据集中的信息使研究人员能够确定广告的效率,预测广告收入,并查看各组之间是否存在统计学上的显著差异。

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

分类变量的模式和频率表

分类数据可以通过频率表来理解,该表组织了每个类别中的计数和百分比。它很容易通过不同类别出现的频率来显示趋势。模式(mode)告诉我们数据中最常见的特征,而出现次数最多的类别则被指示为占主导地位的类别。所有这些结合起来提供了一种简单而重要的分析方法,用于理解趋势,获得更好的见解并做出明智的数据决策。

代码

输出

A/B Testing for Machine Learning

连续变量的高级统计

更详细的指标提供了更深入的见解,而均值和标准差的简单统计则提供了连续变量分布情况的 ধারণা。偏度(Skewness)表示分布的不对称性;长右尾表示正偏,长左尾表示负偏。峰度(Kurtosis)尝试衡量分布的峰度或尾部平坦程度;较高的峰度值表示峰度较高。这些高级度量比基础知识更深入,能够更全面地理解数据分布。

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning
A/B Testing for Machine Learning

数据显示,用户看到广告的天数越多,他们进行某种形式的购买或采取行动的可能性就越高,这之间存在明确的相关性。在一周内,转化率因天而异,周一达到峰值 19.25%,周六降至 11.58%。一项统计检验证实,这种差异并非仅仅是随机噪声;也就是说,它显示了明确的趋势,即某些天对用户转化的可能性有很大影响。经过进一步调查,已清楚周一的转化次数比预期的要多,而周六的转化次数则较少。这表明同一天观看广告会使转化概率比不看广告高约 1.5 倍。这些结果有力地强调了日期访问时间对最大化广告活动成功的重要性。

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning
A/B Testing for Machine Learning

该分析探讨了广告曝光时间对转化率的影响。一个列联表显示,转化率在下午(40.86%)达到顶峰,在晚上(15.20%)最低。卡方检验(chi-sq = 199.10, p < \(10^{-43}\))证实了这种显著关系,表明广告时间在转化中起作用。残差分析显示,早上的非转化率高于预期,而下午的转化率高于预期。然而,赔率比(1.03,CI: 0.96-1.10)表明时间段对转化可能性影响很小。虽然下午略微更有效,但总体而言,时间对转化的影响仍然有限。

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning
A/B Testing for Machine Learning

分析程序证实,此卡方检验是有效且可靠的,因为所有预期计数都大于 5。残差分析表明,“psa”组比预期多约 174 次转化,而“ad”组比预期少 174 次转化,这表明广告的表现不如公共服务公告。由于赔率比显示“ad”组的转化率比“psa”组低 31%,因此该广告活动可能不算成功。似乎需要通过进一步测试和/或修改来考虑替代广告策略以提高绩效。

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

统计检验显示,已转化用户和未转化用户的广告曝光方差和平均值均存在显著差异。Levene 检验(统计量 = 9121.20,p = 0.0)拒绝了两个组的方差相等的零假设。此外,独立 t 检验(t 值为 -84.18,p 值为 0.0)表明,未转化用户的平均广告曝光量显著大于已转化用户。这些结果表明,更多的广告曝光并不转化为更高的转化率,这暗示着广告效果存在一个最佳点。

代码

输出

A/B Testing for Machine Learning

代码

输出

 
Cohen's d: -1.4201314076150362

A/B 测试

假设检验将比较两组的转化率。H₀ 假设转化率没有差异,而 H₁ 假设测试组和对照组之间存在差异。在控制错误方面,选择了显著性水平 α = 0.05,以及 II 型错误的概率 β = 0.2。根据转化数据,广告组的平均值为 2.55%,PSA 组的平均值为 1.79%。这些是生成本研究所需样本量的基线值,选择的显著性水平为 0.05,功效为 80%,以确保可靠的统计结论。

代码

输出

A/B Testing for Machine Learning

代码

输出

 
Required sample size per group: 5631

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

由于 p 值为 0.0033,低于 0.05 的显著性阈值,因此拒绝了零假设。这表明广告组和 PSA 组之间的转化率存在统计学上的显著差异。观察到的比例差异(2.66% vs. 1.90%)不太可能由随机变异引起。

代码

输出

A/B Testing for Machine Learning

代码

输出

A/B Testing for Machine Learning

代码

输出

 
Odds Ratio: 0.71   95% Confidence Interval: 0.55, 0.91

赔率比 0.71 表明,广告组转化的可能性比 PSA 组低 29%。由于置信区间(0.55 至 0.91)不包含 1,因此结果具有统计学意义。这意味着我们可以有 95% 的信心认为真实的赔率比落在这个范围内,证实了两组转化赔率的差异。

代码

输出

A/B Testing for Machine Learning

广告组和 PSA 组之间的转化率显示出统计学上的显著差异。尽管广告组的转化率(2.66%)略高于 PSA 组(1.90%),但赔率比 0.71 表明,接触广告的用户转化的可能性低于看到 PSA 的用户。这表明,尽管广告组的原始转化百分比较高,但从赔率而非直接比例来看,PSA 组的用户转化的相对机会更大。