A/B-Test (Overlapping Experiment Infrastructure: More, Better, Faster Experimenta)

本文主要是介绍A/B-Test (Overlapping Experiment Infrastructure: More, Better, Faster Experimenta),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文针对上周的工作进行了总结,上上周的工作将在接下来通过文章进行总结,主要内容为DEIN 模型。

为了解决推荐算法基于web实验的模型验证,我参考了Overlapping Experiment Infrastructure: More, Better, Faster Experimentation 2010 的google 这篇文章。

这篇文章针对当时的web验证方案进行了总结,并未google 的web实验验证方案的设计提供了参考,在此基础之上,google 工程师设计了自己的验证方案, 我将对相关的工作做概要性的简述。

首先从图1 出发:

这篇文章中提出了一个数据流通道的简易路径,主要由两个server(search ,ads)组成,前者构成了数据通道的前向,后者提供了后项, web server 为推荐的可执行容易, 一般来说数据并发量巨大可以采用evpp c++ web 容器, 如果访问并发量不大可以采用轻量级的web容器,例如flask。前者有着诸多优势,且支持多线程。后者开发容易,部署简单。

query中包含一些重要的参数:userid, feature conbination subsets , cookie(google 特有,实际的参数是否带用根据具体的实际情况)。

有了基本的流程之后,我们进去图3观察:

 作者认为实验分为对照性实验以及单因素实验和多因素实验,实验所需要的样本以及参数需要通过对样本进行分流分桶以及进行实验参数的配置。图三主要展示了作者针对实验流量的分流。

作者引入了cookie 的概念,作者认为cookie是唯一的,可变的。且作为用户的唯一标识符。实际上在我们的系统中由于做不到google那样的庞大,可以采用数据库中的唯一字段,或者根据索引策略去实现。也可以将cookie与用户的数据库id相对应。google 工程师对于分流增加了两个策略:

1 ,求mod策略。

2,随机策略。

原文如下所示:

 假设存在两个对照实验组:实验组named 实验1, 对照组named 实验2. 我们对新进入的userid进行mod/2 为偶数则进入实验1,作为实验1 的样本,mod/2 为奇数,作为实验1 的样本。这里新进入的样本进行随机可能会产生两个问题(样本缺乏以及样本偏值的问题),我们的目标就是确定一个实验可变参数,其他参数保持一致,在此前提下进行对照实验。相关原文在第二部分的RELATED WORK中可以查询。如下所示:

 对于偏值问题可以在样本缺乏的问题上进行探讨。

简单的需求满足不了google 基于推荐实验验证的要求,主要针对多因素的实验验证,工程师做出了多层的模式,以更方便更灵活,更快的方式部署实验验证。

 对于求mod需要做出一些改变,工程师构建了一个函数,通过多个条件将数据进行分流,原文如下:

 f函数将流量划分为几大模块,对应图2中的几个层次。才层次中可以采用随机的方式进行流量分桶。每一次数据的进入类似抛硬币,等同于n次伯努利实验,在此基础上可以分析实验的前置工作,例如样本是否具有统计显著性等工作。在图3中给出了相关的f函数的使用方式。5.2 小节对前置工作给出了具体的方法。

实验的指标可以根据CTR或者基于CNN网络的指标进行相关的计算。例如准确率,召回率,ROC,多样性等等。

根据这边文章我对当前的工作进行了相应的构建。

从应用的角度介绍来AB test的一些内容,当收集好数据之后做推断性统计分析你可能需要具备以下知识,这里限于篇幅不做介绍,自行查阅统计学书籍阅读,可参考《统计学》贾跃平,可汗学院统计学等书籍和视频。

1、点估计

2、区间估计

3、中心极限定理(样本估计总体的核心,可以对比看一下大数定理)

4、假设检验

其中假设检验部分为核心,其他辅助更好的理解该部分内容,比如区间估计可以理解为正向的推断统计,假设检验可以理解为反证的推断统计,关于假设检验本身,你可能还需要知道小概率事件、t分布、z分布、卡方分布、p值、alpha错误、belta错误等内容。   

以上则是这篇文章最简要的概述,当然存在着不足,欢迎讨论,目前很多算法的A/B test     都遵循这篇文章的设计模式,在诸多领域都有着广泛的应用。

这篇关于A/B-Test (Overlapping Experiment Infrastructure: More, Better, Faster Experimenta)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/313987

相关文章

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

mybatis if test 之 0当做参数传入出问题

首先前端传入了参数 if(StringUtils.isNotBlank(status)){requestParam.setProperty("status", Integer.parseInt(status));}List<SuperPojo> applicationList = groupDao.getApplicationListByReviewStatusAndMember(req

js正则表达式test方法的问题

今天在网上碰到一个帖子,写了一个关于Regex的奇怪现象,(文章来源http://www.php100.com/html/webkaifa/javascript/2007/0109/1866.html) 代码如下 <script type="text/javascript"><!--var re = /^\d+(?:\.\d)?$/ig; alert(re.test('112.3'

[论文笔记]Making Large Language Models A Better Foundation For Dense Retrieval

引言 今天带来北京智源研究院(BAAI)团队带来的一篇关于如何微调LLM变成密集检索器的论文笔记——Making Large Language Models A Better Foundation For Dense Retrieval。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 密集检索需要学习具有区分性的文本嵌入,以表示查询和文档之间的语义关系。考虑到大语言模

@vueup/vue-quill使用quill-better-table报moduleClass is not a constructor

quill官方中文文档:https://www.kancloud.cn/liuwave/quill/1434144 扩展表格的使用 注意:想要使用表格 quill的版本要是2.0以后 升级到这个版本后 其他一些插件就注册不了了。 安装: npm install quill@latest   版本需要大于2.0版本 npm install quill-better-table 引入&

c:if test=/c:if如何判断空(使用例子)

userName是登录的时候放到session中了 <c:if test="${ not empty userName }">这表示userName判断不为null `<c:if test="${empty userName }"> ` 这表示userName判断为null 使用案例 <c:if test="${ not empty userName }"><ul><li><a

[UVM]6.component driver monitor sequencer agent scoreboard env test

1.知识点回顾 (1)component需要有parent,因为参加构成组件,所以需要(继承); (2)object与component之间间隔report_object。 2.组件家族 (1)构建寄存器模型 :uvm_reg_predictor;激励器:driver/random_stimulus/sequencer_base/sequencer;监测器:monitor;

shell脚本编写之test命令

test命令用于测试某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 在shell文件中输入命令,通过特定的参数可以对数值、字符串进行比较,如下参数及示例。 1、数值比较参数 举例,在myshell.sh脚本中加入如下内容,将两个变量值进行比较: 执行结果: 2、字符串比较参数 举例,在myshell.sh中添加如下内容,进行变量值比较: 执行结果如下