1 什么是AB实验?
假如你是一名推荐算法工程师,需要上线一个提升公司商品成交金额(GMV)的算法模型。你觉得,你的模型是有效的,比原有模型提升了100%的成交金额。但是老板说,我要我觉得,不要你觉得 -- 你得给出证明。
你想了想,不妨设计一个对照实验:
将用户分成人数、GMV一致的两组,分别采用不同的模型,对照组采用原模型A,实验组采用新模型B
image.png这就是一个AB实验:
-
提出问题--新模型真的比原来的模型效果好么?
-
建立假设--两者一致,无显著差别
-
设计实验--均匀分组,赋予不同的模型,计算差值
-
得出结论
2 均匀分组与AA实验
实验设计好了,这时又来了一个新的难题。如何保证两组一定是均匀的呢,平台每天有千百万用户,要一个个数过去么?
答案是当然不用。
这里的思路就是随机将用户分入实验组、对照组,并用两组历史数据,检验分组结果的相似性。
那么问题又来了,如何检验相似性?
引入T检验,T检验认为对两组统计量求t值,t值服从t分布,从而得出显著水平(p-value)。
image.png 其中 image.png,即自由度; image.png
为伽马函数。
这时候,可能有同学又要问了,T检验的前提条件是数据符合正态分布,如果数据不够"正态"那该怎么办呢?
需要明确,通过中心极限定理,在用户基数足够大的情况下,我们知道用户侧常见的指标应该服从正态分布。如果不符合,一定有某种“问题”。比如,刷单作弊、幸存者偏差、样本量小等。每个问题会有对应的“消偏”方式,来找出其背后真实存在的正态分布。
所以这里的流程就是:分组--历史数据计算--正态性检验(不正态的消偏恢复成正态分布)--两组用户组间t检验
这里的提取历史数据,并检验的过程,就是一个在开展AB实验前,进行前置AA实验的过程。
此外,这里可以发现刚才设计的AB实验漏洞。那么这里打个补丁,AB间的差异比较也应该使用“正态性检验-->t检验”这一流程。就定量实验而言,波动越大的组,所需样本量越大。
其中,样本量 = 流量 x 流量转化漏斗 x 时间
波动程度则可以通过标准差来衡量。
3 辛普森悖论与BB实验
在经历了从AA到AB之后,经过一系列调整,你得到了B比A增加了100%GMV的结论。本来两组指标收拢就可以验收完成。然而当把模型B扩充到对照组进行使用时,你发现对照组在模型B下和实验组的差距并没有完全收拢。
这就让人想到了辛普森悖论,优势分组合并为总体后,反而变成劣势组了。
当人们尝试探究两种变量(比如新生录取率与性别)是否具有相关性的时候,会分别对之进行分组研究。然而,在分组比较中都占优势的一方,在总评中有時反而是失势的一方。via wikipedia
悖论产生原因,往往是分组中存在人群比例失衡,且模型对不同人群的指标提升存在分层现象。
循着这一思路,我们发现了上文设计的AB分组存在的漏洞,对照组与实验组的男女比例不一致,分析数据之后,发现模型B对男女的提升效果不一致–女性群体涨幅大于男性群体。实验组效果提升由女性用户提供的多于男性。所以在对照组也应用模型B时,对照组和实验组未能完全收拢。
image.png这时重新把分组中男女划分均匀,重新AA AB BB,模型B上线评估完成。顺带发现了用户分层。
新发现的分层特征放入下一轮模型迭代中。
4 总结
完整流程为:AA--AB--BB
AA 负责分组,验证均匀性。顺带修复特征数据。
AB 负责比较AB模型效果差异
BB 负责验收AB比对的合理性。顺带发现了用户分层。
一个思考题:如何证明一个策略长时间是稳定的,和时间推移无关
网友评论