商业数据分析实战(酒卷隆志/里洋平)——第五章案例 C—A/B 测试哪种广告的效果更好
广告的A/B测试
某个促销活动每个月都会开展一次,但和公司其他类似的促销活动相比,该促销活动的用户购买率比较低。通过调查用户购买率低的原因,发现问题可能出在促销广告上。于是我们准备了两个不同的广告,来验证那种广告能够带来更高的用户购买率,那么我们应该如何来比较呢?
文章目录
# 加载python所需模块
import pandas as pd
from scipy.stats import chi2_contingency
import pandasql
import numpy as np #之后需要用到
import seaborn as sns
import matplotlib as mpl #设置环境变量
import matplotlib.pyplot as plt #绘图专用
from mpl_toolkits.mplot3d import Axes3D #绘制3D图
mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus']=False
现状和预期
促销活动的购买率低
在《黑猫拼图》游戏中,公司每月都会开展游戏装备的促销活动。虽然这种促销活动是一种销售比率很高的重要经营策略,然而公司的经营层却指出“虽然促销活动的销售额较高,但购买率却比较低”。实际上,通过和其他应用的促销活动相比较,我们发现《黑猫拼图》游戏的
促销活动的购买率确实偏低。
因此,我们希望能够通过数据分析找出购买率偏低的原因,改善这种状况。
应用名称 | 购买率 |
---|---|
《黑猫拼图》 | 6% |
应用 A | 12% |
应用 B | 12% |
整理现状和预期
首先,我们来整理一下问题的现状和预期。目前的现状是:和其他应用的促销活动相比,《黑猫拼图》的游戏装备促销活动的购买率偏低。针对这个问题,我们的预期是弄清楚购买率偏低的原因,并确保和其他应用的促销活动有相同的购买率。
发现问题
和其他应用有何不同
首先,为了明确现状和预期之间的差距,我们需要从大的视角出发来思考《黑猫拼图》游戏和其他应用有何不同,并尝试做出假设。
1. 游戏装备促销活动的内容有问题
销售的游戏装备并不是用户需要的
促销打折的力度不够,对用户没有太大吸引力
2. 广告的外观展示有问题
总之我们先做出上述两种假设。首先针对第 1 个假设,我们咨询了《黑猫拼图》游戏的策划部门,并从那里得到了如下反馈。
● 游戏装备促销活动中出售的游戏装备或许能够用得上
● 和其他应用一样,促销时的游戏装备打五折,这从用户的立场来看是很划算的
之后,我们统计了在促销期间出售的游戏装备的使用情况,发现这些装备是当时最常被使用的装备,用户对这些装备是有需求的。也就是说上述第 1 个假设中的问题基本不大。
我们再来考虑第 2 个假设。为了获得和第 2 个假设相关的信息,我们咨询了负责《黑猫拼图》游戏市场营销的部门,并从那里得到了如下反馈。
● 游戏装备大促销的广告都是由各个应用的设计师负责的,所以广告的质量也是参差不齐
●《黑猫拼图》游戏的广告的点击率一直比较低(参考下表)
这次的问题恐怕就是第 2 个假设造成的。因此,这次我们将提升广告的点击率作为课题来进行数据分析。
应用名称 | 购买率 |
---|---|
《黑猫拼图》 | 6% |
应用 A | 12% |
应用 B | 12% |
数据的收集和加工
探讨验证方法
我们来总结一下本案例的问题和解决方案。
问 题
●《黑猫拼图》游戏的广告点击率比其他应用低 (事实)
●《黑猫拼图》游戏的广告设计有问题 (假设)
解决方案
● 用点击率高的广告替换目前所使用的广告 (解决方案)
为了完成上述方案,需要找到哪种广告更容易被点击。但是,在《黑猫拼图》游戏中,之前每月开展的“游戏装备大促销”活动的广告一直都没有变更过,因此我们缺少可供分析的数据。
于是,我们准备了两个不同的广告,通过收集数据来比较哪个广告更容易被用户点击。
■如果采用前后比较的方法,则无法排除外部因素的干扰
如果要比较两个广告哪个更好,该怎么做呢?首先想到的是前后比较的方法。如下图所示,在前一段时间内投放广告 A,在后一段时间内投放广告 B,并比较前后两个时间段广告投放的效果。
在这种情况下,广告 A 和广告 B 的比较如右图所示,其思路是“如果继续投放广告 A,购买率应该是这样”,然后拿这个值和广告 B 的值进行比较。
然而,这种做法真是正确的吗?
比如,在投放广告 A 和广告 B 的时间里:
● 投放广告 B 的时候是购买率比较容易提升的时候
● 投放广告 B 的时候,某个宣传活动获得了巨大成功
● 投放广告 B 的时候,在 TVCM 的放映或者电视节目中介绍了《黑猫拼图》游戏
● 投放广告 A 的时候……
如上所示,本来我们只是希望比较广告 A 和广告 B 这二者的效果,然而中间却出现了各种外部因素的干扰。如果是外部因素导致的购买率提升,那么就有可能像下图一样,即使继续投放广告 A,购买率也会提升。这样的话就很难知道前后购买率差异的原因到底是什么了。
采用A/B测试的方法排除外部因素干扰
针对这种情况,一种便利的验证方法是 A/B 测试。A/B 测试能够在多个选项中找出那个能够带来最佳结果的选项。例如,如下图所示,我们只要同时投放广告 A 和广告 B,就可以排除之前所说的外部因素的干扰。
A/B 测试虽然在引入时需要较高的开发成本,但是实施成本却相对较低,而且也方便收集统计数据,因而在互联网业界被广泛使用,此外在部分广告业和制造业中也会被采用。例如,某个厂家生产了 A 和 B两种产品并同时出售,通过收集销售数据来验证哪个产品更容易被目标用户群体接受。虽然在这种情况下进行 A/B 测试的成本较高,但由于能够针对同一时期的同一目标用户群体进行因果关系分析,因此有着广泛的应用。
A/B测试中的用户分组必须遵循随机的原则
在进行 A/B 测试时,首先需要将用户分到 A 组或 B 组中,然后给A 组的用户投放广告 A,给 B 组的用户投放广告 B,再比较两组用户的购买率。其中需要注意的是如何进行分组,比如按照如下方法来分组如何?
● A 组:男性
● B 组:女性
按照这样的分法,或许可以排除诸如时间因素、游戏内的各种活动、TVCM 等的影响,但是男性用户和女性用户本身在游戏中的消费倾向就有可能存在差异。另外,虽说可以排除 TVCM 的影响,但是由于男女用户在观看电视节目的时间和喜好等方面存在差异,因此这些都有可能对最终的结果产生影响。
总之,需要保证分组后的两组不能有类似于“男女”这种条件性的差异。进行 A/B 测试最初的目的就是要排除广告以外的因素的影响,单纯比较广告内容方面的差异。
要想避免条件性的差异,最简单的一种分组方法就是把用户 ID 对某个数进行取模运算。如果使用这种方法,那么下列条件就都能够均匀地散布在两个组中。
● 性别
● 年龄段