将机器学习应用于 A/B 假设测试
什么是 A/B 测试?
A/B 测试是一种比较某事物的两个版本以确定哪个性能更好的方法。虽然它最常与网站和应用程序相关联,但该方法已有近 100 年的历史,是最简单的随机对照实验形式之一。
从本质上讲,A/B 测试消除了网站优化中的所有猜测,并允许经验丰富的优化人员做出数据驱动的判断。
要测试的两个版本可以分类为:对照组,显示产品或服务的当前状态的人和治疗组,显示测试产品或服务的人。
然后监控每个组的转换率以确定哪个更好。 A/B 测试中的随机性是隔离所做更改的影响并减少混杂变量的潜在影响的关键。
什么是假设检验?
假设检验是一种统计推断方法,用于确定手头的数据是否足以支持特定假设。
假设检验是基于证据的决策的基石。 A/B 测试框架是最常用的统计框架,用于在当今业务的各个方面进行渐进但重要的更改。
在这个项目中,我们使用了三种执行 A/B 假设检验的方法。
- 传统(经典)A/B 测试
- 顺序 A/B 测试
- 使用 ML 算法进行 A/B 测试
在这里,我尝试对每种方法及其优点和局限性进行演练。但首先让我们了解我们使用的数据。
数据
随机抽样用于生成该项目的数据。 BIO 数据是在线用户对以下问题的“是”和“否”回答。
问: 你知道力士品牌吗?
- 是的
- 不
这是一个测试运行,主要目标是验证您构建的假设算法。 智能广告 此活动于 2020 年 7 月 3 日至 10 日进行。收到上述问卷的用户是根据以下规则选择的:
- 控制 : 被展示了一个虚拟广告的用户
- 裸露 :已向客户展示由 SmartAd 为客户设计的广告素材(广告)的用户。
数据可以查到 这里 .它具有以下列。
- 拍卖编号 :已提交 BIO 的在线用户的唯一 ID。在标准术语中,这称为印象 ID。用户可能会看到 BIO 问卷但选择不回复。在这种情况下,是和否列都为零。
- 实验 :用户属于哪个组 - 控制或公开。
- 日期 : YYYY-MM-DD 格式的日期
- 小时 :HH 格式的一天中的小时。
- device_make :用户拥有的设备类型的名称,例如三星
- 平台操作系统 :用户拥有的操作系统的ID。
- 浏览器 :用户用于查看 BIO 问卷的浏览器名称。
- 是的 : 1 如果用户为 BIO 问卷选择“是”单选按钮。
- 不 : 1 如果用户为 BIO 问卷选择“否”单选按钮。
经典 A/B 测试
它的原理很简单:
- 您定义基线转换和最小可检测效应 (MDE):
- 基线转换 n — 定义您要测试的广告的当前转化率的百分比。
- 最小可检测效应(MDE ) — 最小的预期转化提升。
2.您使用上述变量和统计功效以及显着性水平计算有意义的实验所需的样本量。
- 统计能力 — 检测到最小效应大小的时间百分比,假设它存在。通常,80% 是最佳统计功效。
- 显着性水平 — 假设不存在差异 (MDE) 将被检测到的时间百分比。简而言之,它是测试证明您的假设而实际上该假设是错误的时间百分比。此 SmartAd A/B 测试中使用了 5% (=0.05) 的显着性水平。
3. 为您的变体增加流量,直到您达到每个变体的目标样本。
4. 最后,评估 A/B 测试的结果。
如果变体之间的性能差异达到或超过 MDE,则证明您的实验假设是正确的,否则,有必要从头开始测试。
选择的指标
正如我们在数据上看到的,它有两列包含对问卷的选择。我们为此项目选择的指标是转化率,即“是”响应的数量除以响应的总数。
陈述假设
我们要测试的假设是,我们提供给对照组和创意 SmartAd 的虚拟广告之间的效果是否存在差异。为此,我们对其转化率的统计显着差异感兴趣。
- 零假设 :表示控制组和暴露组参与度得分均无统计学意义。
- 替代假设 :表示控制组和变异组参与度得分具有不同的结果,其中一个具有统计意义。
我们想拒绝原假设,这样我们就可以说实验是成功的,不是偶然发生的。这将使我们的实验可重复。
基准转化率
BCR 的计算方法是将“是”回答的数量除以总人数。 IE bcr=数字。是/总人数 .这是我们从数据中得到的结果。
所需样本量
我们计算了进行有意义的实验所需的样本量,结果是 38932 每个实验组。但我们每个对照组和暴露组分别有 586 和 657 个。可以得出结论,我们的样本量太小了。
计算 p 值和 z 分数
p 值 是一种统计测量,用于根据观察到的数据验证假设。它帮助我们确定当假设原假设为真时获得特定结果的可能性有多大。
P 值是使用零假设下的检验统计量的抽样分布、样本数据和正在执行的检验类型(下尾检验、上尾检验或双边检验)计算的。
- p 值或概率值告诉您数据在原假设下出现的可能性有多大。如果假设原假设为真,则 p 值可以估计我们的样本有多奇怪。
- 如果 p 值非常小(<0.05),那么我们可能会拒绝原假设。在这里我们可以看到我们得到的 p 值为 0.25917,大于显着性水平(0.05)。
因此,我们无法拒绝原假设。因此,我们得出的结论是,SmartAd 运行的两个广告系列在统计上没有显着差异。
经典 A/B 测试的局限性
- 运行 A/B 测试可能比其他测试方法花费更长的时间,并且可能会消耗资源和时间
- 它假定世界观不变,不考虑趋势和消费者行为的变化。
顺序 A/B 测试
在顺序 AB 测试中,停止 AB 测试的最终样本大小取决于我们在测试期间观察到的数据。因此,如果我们在开始时观察到更极端的结果,则可以提前结束测试。
顺序 A/B 测试最好的部分是它让用户有机会提前完成实验,而不会增加错误结果的可能性。听起来很棒,不是吗?现在让我们弄清楚这种类型的测试是如何工作的,以及是什么使快速结果成为可能。
为了实现这一点,绘制了一对统计边界,例如,基于我们希望在测试中获得的 I 类错误率。对于我们获得的每个新数据点,然后将我们数据的对数似然比的总和与这些边界进行比较。
Sequential testing result
在上图中可以看到有 3 行。顶部和底部的两条线描述了统计边界。中间的线是实验的累积值。
- 如果累积值线越过或收敛到上限,我们拒绝空值。
- 如果累积值线越过或收敛到下限,我们接受空值。即各组之间没有统计学上的显着差异。
可以看出该行没有拒绝或接受null。我们需要继续测试,看它是否收敛到上限并拒绝空值。
顺序测试的优点
- 有机会提前完成实验,而不会增加错误结果的可能性
- 优化必要的观察(样本量)
- 减少出错的可能性
顺序测试的缺点
- 如果我们关心保留第一类错误,我们需要认识到我们正在进行多重比较
- 允许在不增加错误结果风险的情况下提前完成研究。在三个数据分析之后,我们有三种非独立的可能性来产生 I 类错误。
- 对于固定的样本量和显着性水平,与等到所有数据都进来相比,顺序测试最终会降低功效。
使用机器学习进行 A/B 测试
机器学习是指系统在没有直接人工控制的情况下学习输入和输出数据之间的关系。该过程用于创建能够理解数据的算法和模型,而无需人类程序员直接编写模型。这些算法可用于做出决策、对数据进行分类或执行复杂的任务。
使用机器学习进行 A/B 测试的主要优势是我们可以从超过 2 个变量(控制/暴露)中收集洞察力。它使我们能够从复杂系统中获得洞察力。
使用算法,我们可以对包含所有正在进行的事件、用户特征等的复杂系统进行建模。
A/B 测试与机器学习可以结合起来:
- 测试和改进新机器学习模型的部署。
- 自动化 A/B 测试,使流程更加高效。
- 在开发或调整算法时发现有关数据集和变量的有用信息。
为了使用 ML 测试假设,我们选择使用三种机器学习算法并尝试确定每个模型的准确度得分。
算法是:
- 逻辑回归
- Xgboost
- 决策树
对于每个模型,我们将数据分为 70% 的训练集、20% 的验证集和 10% 的测试集。
用于使 ML 过程可重现和端到端的工具
吉特/Github: 吉特 是一个版本控制工具(软件),用于跟踪源代码的变化。 ** GitHub** 是一个基于 Web 的云服务,用于托管您的源代码(Git 存储库)。它是一个集中式系统。 Git 不需要 GitHub 但 GitHub 需要 Git
DVC(数据版本控制) - 是一个像 Git 一样的开源控制系统,用于分别处理和跟踪我们的数据。 DVC 的一些用途是:
- 以与捕获代码相同的方式跟踪和保存数据和机器学习模型;
- 轻松创建和切换数据版本和 ML 模型。
- 首先了解数据集和 ML 工件是如何构建的。
- 比较实验之间的模型指标。
机器学习流: 是最初由 DataBricks 推出的开源工具,它有助于管理 ML 生命周期的多个阶段。它让我们可以使用任何库训练、重用和部署模型,并将它们打包成可重复的步骤,其他数据科学家可以将其用作“黑匣子”,甚至无需知道您使用的是哪个库。一般来说,MLflow 具有这些优点。 MLflow 项目是打包可重用数据科学代码的标准格式。
交叉验证(样本外测试)
交叉验证是一种重采样方法,它使用数据的不同部分在不同的迭代中测试和训练模型
对于这个项目,我们使用 K-fold ( k=5 在这种情况下)交叉验证重采样方法。我们使用 K-fold 是因为它确保来自原始数据集的每个观察结果都有机会出现在训练和测试集中。数据被随机分成 5 折,模型在 k-1 折中进行训练,而保留 1 折用于测试模型。在我们的例子中,数据首先被分成训练集和测试集。训练数据集用于交叉验证。
为了用 ML 方法检验我们的假设,我们通过按浏览器和 platform_os 拆分数据来创建干净数据的版本,并将它们保存在 CSV 文件中。
逻辑回归
我们使用 LogisticRegression 函数创建了一个线性回归模型。然后我们使用我们之前保存的所有数据版本训练线性回归模型。为模型选择的参数是使用 5 折交叉验证确定的,以防止过拟合和欠拟合。然后我们使用测试数据评估我们的模型。
下面是我们使用 5 折交叉和逻辑回归得到的一些准确度结果。
- 如果我们仔细观察,5 倍逻辑回归的最大准确度为 0.75。
- 这可能意味着数据不够或模型不是最适合的,因为准确度低于 0.8,即 80%。
训练模型后,我们尝试可视化用于训练回归模型的特征的重要性。
特征重要性 指的是为给定模型的所有输入特征计算分数的技术——分数只是代表每个特征的“重要性”。更高的分数意味着特定特征将对用于预测某个变量的模型产生更大的影响。
以下是拆分数据的一些示例。
feature importance of chrome mobiledata
fig: feature importance of chrome webview data
XGboost
XGBoost 是梯度提升机器的可扩展且准确的实现,它已被证明推动了提升树算法的计算能力极限,因为它是为模型性能和计算速度而构建和开发的。
以下是我们使用 xgboost 和 5 折交叉验证得到的一些结果。
fig : feature importance of chrome data using xgboost
fig: feature importance of chrome webview data
决策树
决策树是一种用于分类和回归的非参数监督学习方法。目标是创建一个模型,通过学习从数据特征推断出的简单决策规则来预测目标变量的值。
我们使用标签编码器算法将特征转换为数字形式,以使其成为机器学习可读的形式。例如,标签“是”或“否”不是机器学习可读的,因此我们必须将它们更改为机器学习可读的形式。标签编码基本上将 '是的' **** 成 1 和 '不' 为 0。
然后,我们为每个拆分数据选择特征来训练模型。
然后我们将数据分成训练集和测试集。
然后我们创建了一个决策树分类器对象,然后训练了训练集。之后我们使用测试集来测试模型。
下面我们可以看到模型的准确度得分。
结论
- Logistic 回归和 Xgboost 模型准确度结果似乎几乎相同。这可能是数据太少的结果。
- 我们还发现决策树更准确。但是,数据太小,我们没有使用交叉验证来防止模型过拟合和欠拟合,所以我们可以说实验是成功的。
- 通过经典的 A/B 测试,我们确定品牌知名度是否有显着提升,这有助于 smartAd 采取下一步行动。在这种情况下我们没有发现,因为数据太小了。
- 通过机器学习,我们发现其他特征,如一天中的时间和日期,决定了品牌知名度的转换。这提供了关于什么有助于广告活动导致成功或没有变化的更广泛的知识。
- Github代码可以找到 这里 .
参考
- https://hbr.org/2017/06/a-refresher-on-ab-testing
- https://splitmetrics.com/blog/sequential-ab-testing
- https://databricks.com/session_eu20/data-versioning-and-reproducible-ml-with-dvc-and-mlflow
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/15368/27510508
标签:机器,假设,模型,测试,使用,数据,我们 From: https://www.cnblogs.com/amboke/p/16656801.html