AB测试系统是什么?应该包含哪些功能?
AB测试就是抽样检测,AB测试最重要的一个概念就是“数据驱动”,即利用用户数据,决定哪种方案好,这比领导/产品经理一拍脑袋决定要靠谱的多。
A/B实验的基本思想就是:我们在线上流量中取出一小部分(较低风险),完全随机地分给原策略A和新策略B(排除干扰),再结合一定的统计方法,得到对于两种策略相对效果的准确估计(量化结果)。
平台架构:
国内提供AB测试服务的公司:
https://www.eyeofcloud.com/
http://www.abtester.cn/
http://www.appadhoc.com/
域、层:
一般会保留一个原始域,不做任何改变,然后分出去一个域做分层实验,一些域做小流量实验
分层域层内又会在变体之间互斥划分流量,层间则不会划分流量
分层桶类似于“测试环境”,由算法方较为自由的验证一些想法,因此管控比较松,在分层桶里我们允许多个实验组交叉的去验证不同的策略通路,以此来挑选更优的算法组合模式,如果某种组合模式经过初步验证,产生了更好的指标,就可以进入小流量桶。
小流量桶类似于“预发环境”,我们将这个组合模式单独灌入新的一批流量,相当于排除干扰,再次double check下,如果确实产生了更好的指标,我们将其晋升为基准桶。
基准桶类似于“生产环境”,作为一种稳定的算法策略持续使用。
分流算法
进行分流算法的目的是将线上用户按照固定的流量比例分配到不同实验(桶)中,并且保持这种实验(桶)分配关系,以此来对照验证相关的指标是否有所好转,所以为了保持这种用户和实验(桶)的分配关系,我们使用了hash取模的方式将一个用户固定在了一个0到100的区间中,这样只要对应实验(桶)的区间没有变化,这个用户和实验(桶)的分配关系就不会变化。
国内的AB测试一般采取的是Cookie分流,Google采取的是Session分流。
https://blog.csdn.net/smartcodetech/article/details/113698568
https://coffee.pmcaff.com/article/1350873457007744/pmcaff?utm_source=forum
埋点:
埋点流程
-
【埋点采集】通过部署埋点,收集数据
-
【数据传输】将埋点收集到的数据,进行传输
- 实时传输:flume > kafka > db
- 离线批量传输:jdbc > db
- 【数据存储】定义数据存储的库
- 数据量较小建议采用mysql,oracle等关系型数据库;
- 数据量较大,建议采用hive,hbase等分布式数据库。定义好数据存储的表结构,属性尽可能采集全面。 (
在大数据架构中,Hive和HBase是协作关系,数据流一般如下图:
- 通过ETL工具将数据源抽取到HDFS存储;
- 通过Hive清洗、处理和计算原始数据;
- HIve清洗处理后的结果,如果是面向海量数据随机查询场景的可存入Hbase
- 数据应用从HBase查询数据;
- 【数据清洗】一般为数据仓库开发人员进行数据ELT
- 【数据应用】业务运营人员验证和使用数据
https://zhuanlan.zhihu.com/p/133090030
https://cloud.tencent.com/developer/article/1864656
火山引擎AB测试架构图 火山AB测试文档
美团AB实验架构
参考:
http://www.woshipm.com/pd/1692294.html
https://www.infoq.cn/article/lCTiIpkrh-lPl9pitKhf