这次我们来讲一讲AB实验分析过程中的一个基本方法论 Matching。
Matching的方法其实大家在日常工作中都用过,一般是在大盘整体对比得不到显著影响的时候,继续寻找特征相似的细分用户进行对比分析,这其实是在‘术’这个层次把问题解决了。这篇文章呢,就帮你系统的梳理一下Matching的思想和逻辑,让你不但有术,亦有道。
使用matching的必要性
- 渗透率低:比如这个功能只影响了某一批人,所以在分析大盘整体情况时,效果往往不显著,这时需要根据用户的特征行为找到相似的用户,转变为分析这波用户在受到策略后产生的效果,进而评估策略或者功能的好坏。
- 去除干扰因素,得到因果影响:去除其他变量对用户的干扰,通过matching找到特征相似的用户,只研究策略带来的因果影响。
使用matching的基本逻辑
- PSM : 自变量为个体的各个控制变量、历史行为等特征,并对组别变量做概率回归,最后根据得到的概率的score来匹配控制组与实验组中score相近的个体。
- CEM:跟据所有个体的变量特征进行完全匹配,连续型特征需要做分桶处理,离散型特征如果值比较多,也可以做分组处理。
今天先focus在PSM上,毕竟是最常用的方法:
Propensity Score Matching(PSM)
基本逻辑
PSM作为一种matching方法,最大的目的就是控制实验组和控制组的观测变量,并且在随机样本无法得到显著效果的时候,也是一种可行的方法。
举个例子,我们想对比吸烟的人和不吸烟的人的健康状况,我们观察了两组人群作为样本,可能会出现以下两种情况:1、恰好我们选取的吸烟的人群更年轻,身体本身就更健康,而不吸烟的人群整体年龄偏大,或者身体本身比较虚弱,最后观察一段时间得出吸烟无害的结论。2、吸烟的人群也喜欢喝酒,吸烟的人群本身也不注重自己的健康等等一系列其他因素干扰,导致得出吸烟有害健康的结论。这两种结论都是不够科学的。
当日样本足够多,就会缓解焦虑。。然而现实是实验流量经常不够用,需要用matching的思路可以缓解这种焦虑,而PSM是matching最常用的方法。
PSM的匹配,就是以组间的特征做自变量(xi),组别变量(就是两个组不一样的地方)为因变量(y), 做一个逻辑回归。比如上面的例子,自变量如性别、年龄、是否喝酒、吸烟前健康情况,因变量是是否吸烟。再将回归结果进一步拟合成吸烟的概率,得到一个倾向分 (propensity score), 在计算完每个个体的propensity score后,分别在两组找到概率最相似的个体去匹配。通常我们会用一个caliper控制这个最相近的概率差,一旦两个个体的min(delta(score)) > caliper, 这两个个体就匹配失败,一把caliper取0.05。
PSM的步骤
- 分别计算所有样本的propensity score, 算法可选择逻辑回归,XBboost, RandomForest等;
- 寻找最接近的样本,依此循环实验组每个样本,寻找控制组中与它分数最接近的样本,即计算min(delta(score)) ;如果匹配上的有多个,要看一下是不是每个特征都匹配(k2k),如果是就随机取一个,如果不是(非K2K), 就全部保留;
- 判断是否大于caliper, 当步骤2中min(delta(score)) >caliper时,匹配不成功,丢弃该treated样本;
- 平衡检验,PSM之后为了检验匹配效果,需要做一下balance check, 目的是查看匹配之后的两组样本是否有比较相近的结构。可以用下面的公式计算两组样本的特征的bias,如果bias小于5%,则认为该特征平衡。
bias = | avg(treated) - avg(control) | / sqrt( (var(treated) + var(control) ) / 2 ) - 查看propensity score分布,通过查看分布可以观测PSM的匹配情况,如果分布较为相似,则matching的比较成功。
PSM优缺点
- 优点:由于是概率匹配,覆盖率较高;且不需要对特征做些额外的划分
- 缺点:比较耗时;比较依赖算法模型;bias高,需要做balance check。
如何选特征
特征选择方面, 要注意以下几点哦:
- 首先要包括用户画像的基本信息,如性别、年龄、城市线等;
- 平台上用户的状态信息,比如粉丝数,注册天数,关注数等;这些特征可以反映用户的一些平台基本的活跃信息,一般可以取策略前一天的分区的特征信息;
- 用户长期历史性的活跃行为特征,例如:历史半年日均直播观看时长、历史半年日均短视频观看时长等。这里‘历史时期’最好去半年以上,以防止短期行为波动,导致批评不准确。