B test应用调研—让最佳推荐一眼万年

Btest是什么?

ABtest,又名A/B测试,即有两个即将面对大众的设计版本(A和B)。通过小范围发布,得到并比较这两个版本之间你所关心的数据(转化率,业绩,跳出率等),最后选择效果最好的版本。

A/B test应用调研—让最佳推荐一眼万年


图1 A/B test实例

对于互联网产品来说,通过A/B测试提升点击转化率,优化获客成本已得到越来越多的关注。以获客环节为例:许多产品都会在百度、头条等渠道投放落地页广告,以完成新用户的注册转化,而落地页效果的好坏,会直接影响转化率和获客成本。

以每月200万投放费用为例,如果通过A/B测试将落地页的注册转化率有效提升20%,相当于每月能多获得价值40万推广成本的新用户。

同一个优化目标,对样本划分几个群体,并对这几个群体跑不同的模型,统计每个模型下输出的结果,如图2所示,50%的流量看到的是A版本,其他50%的流量看到的是B版本。


A/B test应用调研—让最佳推荐一眼万年


图2 A/B test实例

A/B test主要用于新产品正式上线前的测试。对于产品web的相关应用,一般采用线上的A/Btest决策最终上线的版本,这是因为可以通过用户的行为决定哪个版本的转化率更高。对于模型层面的相关应用,一般采用线上线下相结合的方式测试。模型线下测试时,可以用历史数据模拟现在的用户行为,这样一方面可以更快的得到结果,另一方面为上线前提供模型的baseline版本;模型线上测试时,是用线上的数据检验模型的泛化能力。最终评价模型的方式是看A,B版模型上线后,它们分别对整个业务评价指标提升了多少。

主要应用的场景

(1) 当产品有以下问题或满足相关条件,可以考虑使用AB test

a)数据驱动决策的场景;

b)网站或app的日流量不低于1000,最好在1w+[1];

c) 重大产品功能很难决策。不确定哪个方案效果最优;

d)“后验”成本高,如果改版失败,业绩损失无法挽回等。

(2) A/B test的应用

A/B test的应用案例如图3所示,主要包含以下几个层面的内容:

A/B test应用调研—让最佳推荐一眼万年


图3 A/B test在国内企业中的系统应用案例

a)应用层面,如web界面设计,使得转化率比原来的版本提升了多少?如offerdetail页面测试等。

b)模型层面,模型的更新对整个业务提升了多少?美团在做推荐系统时,测试用户相似度计算的方式对下单转化效果的影响时,发现llr(Log-likelihood ratio)的相似度计算比cosine相似度计算的最终效果要好一些;阿里的搜索排序测量模型的更新对最后的成交率的提升。阿里在很多场合都在用A/B测试,比如:会员登录系统、促销活动、阿里金融的贷款、利率、订单等等都用到了A/B测试。

A/B测试框架

(1)优化目标明确时,A/B测试架构(模型层面)

a)确定评价指标;评价指标如新用户转化率、购物网站的成交率、贷款逾期率、营销新用户转化率等。

b)对样本数据分流,分成实验组(B模型)和对照组(A模型);这一部分需要考虑多方面因素:实验组与对照组的流量占比、样本分布、是否剔除影响实验组结果的一些特定的用户等。

c)构造A,B模型;A模型一般为现在正在用的模型,B模型为新模型。B模型不仅是算法上的更新,还包括参数的调整等。

d)观察两组数据在A,B模型上的结果。例如,在利用模型通过现有好客户找更多的好客户的场景中,模型的更新,统计并比较两个模型中好客户的转化率。

(2)优化目标不明确时,A /B测试架构

a)观察用户行为:利用访问者行为分析工具,如热图,访客录制,表单分析和页面调查,找到阻碍流量转化的内容。

b)构造A,B,C,D…场景。

c)观察数据在A,B,C,D…场景上的结果。

特定的场景需要考虑的问题

针对银行/金融等公司特定场景,需要考虑的问题有哪些?

(1)在设计A/B测试时,总有一个无法避免的问题:实验需要收集多少样本才能使结果显著?

通过假设检验的方法判断是支持还是拒绝关于样本数量或分布的原假设。在做统计检验时,会出现假阳性和假阴性错误,假阳性表示原假设为真时拒绝了原假设,假阴性表示原假设为假时没有拒绝原假设。显著性控制着假阳性的概率,假阳性和假阴性决定假设检验的容错性,容错性降低,则需要用更多的样本支持我们的结论[2]。在测试多个假设检验时,会增加整体的假阳性概率(false positive probability)。如果一个测试的假阳性概率为0.05,那么20个测试中没有一个产生假阳性的概率急剧下降到(1 - 0.05)20 = 0.36。

更重要的是,这个计算假定测试是独立的。如果测试不是独立的(当n个模型都来自同一个训练数据集时),那么假阳性概率可能更高,更高的假阳概率需要更多的样本支持假设检验。这个问题可以通过文献[3]解决。

(2)数据流的分配方式、数量、进入不同场景的唯一性。希望样本数据尽可能代表整个用户群,可以使用层次模型( 如Beta-Binomial model),它的优点在于它不需要采用明确的先验分布,只是假设先验分布来自某个分布族(即Beta),然后根据数据推断出可能的先验分布[4],可以使用贝叶斯算法,源码如参考文献[5]。

(3)样本要具有相似性——指用户群体各个维度的群体特征相似;样本最多只能参加A,B测试中的一个。

(4)无交集的场景可以并行处理。

应用案例

(1) 产品层面上

杭州某家小额信用借贷公司[6],主营面向 C 端的小额信用贷款服务,核心体验主打快速、便捷,2分钟到账。广告投放是获取新用户的重要渠道。因此,产品部门的核心任务就是通过优化着陆页H5的文案和布局来提升最终注册转化率。A/B test在百度、今日头条两个渠道分别测试不同的试验方案,不同渠道的两个版本流量均分配为50%。页面变化如图4所示,百度SEM试验版本相对有20%左右的增长,今日头条的整体点击转化率增幅超过30%。


A/B test应用调研—让最佳推荐一眼万年


图4杭州某家小额信用借贷公司A/B场景


(2)模型层面上

天猫技术部算法组,评价指标:通过推荐,给天猫带来多少成交?

测试方法一:A/Btest,使用90%-95%的流量作为基准,5%-10%的流量作为测试。让测试流量中的50%看到A模型推荐的产品,剩余50%看到B模型推荐的产品,统计并计算A,B模型下的购买转化率。若B模型的效果更好,则考虑将B替代A模型全流量上线。

测试方法二:离线评测与A/Btest并用。先通过离线测试筛选出比现有模型A模型效果好的模型,然后再进行线上的A/Btest。离线的数据来源为以前的日志文件,相当于用之前的日志文件模拟现在的用户行为,这样得到模型结果的时间短。

美团推荐系统,A/Btest的原理与天猫技术部算法组的类似,系统架构如图5所示(2014年)


A/B test应用调研—让最佳推荐一眼万年


图5 美团推荐系统架构


接口层会调用 abtest 配置模块,对接入的流量按照uuid、城市等维度进行分流量的配置。abtest 对于推荐系统是很重要的基础模块,美团对这个模块的要求是可以有友好的配置界面,灵活根据不同维度进行分流量配置,并且立即生效,无需重启服务。

Abtest 配置模块之下,是推荐候选集的生成,排序和业务处理模块。候选集生成和排序模块,除了针对不同展位有不同逻辑以外,对同一展位的不同策略也有不同的逻辑。abtest 模块在配置流量策略的时候,可以根据需要单独配置候选集策略和排序策略。业务规则处理模块,则有统一的处理逻辑,也有每个展位独特的逻辑,而同一展位的不同策略,通常来说在这一层处理逻辑不会有区别。

重新从接口层开始换个方向来看这个框架。在响应请求的同时,会打印一些必要的日志,记录这次请求的一些必要的上下文信息以及用户及item相关的特征信息,以便生成训练数据。这些日志通过flume传输到HDFS上面。除了推荐系统以外的美团App其他后台服务,也会把各自的日志传递给HDFS,以方便后续进行数据挖掘。借助Hadoop、Hive、Spark等平台以及美团自己实现的一些机器学习/推荐通用算法,对原始日志进行处理,从而得到需要的各种数据及模型:包括用户的profile信息,用户之间的相似度,item之间的相似度等。

一些开源的A/Btest库

一些开源的A/Btest库

Alephbet/alephbet (AlephBet是一个面向开发人员的纯javascriptA / B(多变量)测试框架)

PlanOut | A framework foronline field experiments(由facebook开发,已移植到所有主要的Web编程语言,包括Python,Java,PHP,JavaScript,Ruby和Go)

Abba - JavaScript a/b testing • Alex MacCaw (2013年,基于js的架构)

maccman/abba(github开源API)

An Ab Testing Framework from SeatGeek

indeedeng/proctor(github开源API)

Wasabi(github开源API)[7]

参考文献

[1] http://www.sohu.com/a/111383493_351385

[2] https://zhuanlan.zhihu.com/p/33415389

[3] YoavBenjamini and Yosef Hochberg,Journal of the Royal StatisticalSociety.Series B (Methodological)Vol. 57, No. 1 (1995), pp. 289-300.

[4]http://sl8r000.github.io/ab_testing_statistics/use_a_hierarchical_model/

[5]http://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter2_MorePyMC/Ch2_MorePyMC_PyMC3.ipynb#An-algorithm-for-human-deceit

[6]http://www.appadhoc.com/blog/exptdriveonlinefinance/

[7]https://medium.com/blueprint-by-intuit/open-sourcing-wasabi-the-a-b-testing-platform-by-intuit-a8d5abc958d

End

文 | 中诚信征信 数据研究部

联系合作:[email protected]


分享到:


相關文章: