Paper慢慢读 - AB实验人群定向 Learning Triggers for Heterogeneous Treatment Effects
这篇论文是在 Recursive Partitioning for Heterogeneous Casual Effects 的基础上加入了两个新元素:
- Trigger:对不同群体的treatment选择个性化阈值。 E.g优惠券力度,红包金额
- 新的Node Penalty: 旨在增强模型generalization
论文
C. Tran and E. Zheleva, “Learning triggers for heterogeneous treatment effects,” in Proceedings of the AAAI Conference on Artificial Intelligence, 2019
模型
Trigger
Trigger的计算主要用在treatment是一个潜在连续变量,例如服药的剂量,优惠券的金额等等。这时实验希望得到的不仅是优惠券是否能提升用户留存,而且是对哪些用户使用多少金额的优惠券能最大化ROI。
作者在通过树划分用户群的同时计算能够使该用户群CATE最大化的Trigger阈值。既在遍历所有特征可能取值的同时遍历所有treatment的可能取值,取jointly的最优解。如下
\[
\begin{align}
T = {t_i}&\quad \text{treatment的所有可能取值}\\
\theta_l &\quad \text{最优treatment阈值}\\
F^t(S_l) &= max_{\theta_l}F(S_l)\\
\end{align}
\]
小思考
感觉这里对最佳trigger的选择还有优化的空间。因为上述split假定了实验效果对treatment的取值是单调的,如果不单调上述split可能得到不make sense的结果。而且在一些应用场景下是希望取到有条件最优解,例如在成本不超过N的情况下收益越高越好,而不是简单的最大化实验效果,这个当前也还无法解决。
Node Penalty
在Athey(2016)的Casual Tree中,作者通过在Cost Functino中加入叶节点方差,以及用验证集估计CATE的方式来解决决策树过拟合的问题。这里Tran提出的新的penalty旨在衡量相同节点训练集和验证机在CATE估计上的差异。
我们先回顾一下要用到的Notation
\[
\begin{align}
& {(X_i, Y_i,T_i): X_i \in X} \\
& \text{where X是特征,Y是Response,T是AB实验分组}\\
&T_i \in {0,1} \quad \\
&Y_i = \begin{cases}
Y(1) & \quad T_i = 0\\
Y(0) & \quad T_i = 1\\
\end{cases}\\
&CATE: \tau(x) = E(Y_i(1)-Y_i(0)|X=x)\\
\end{align}
\]
以下是Athey(2016) Casual Tree的定义
\[
\begin{align}
&S_l = {(X_i, Y_i,T_i): X_i \in X_l} \quad \text{叶节点-局部样本}\\
&\hat{\mu_t}(S_l) = \frac{1}{N_{l,t}}\sum_{T_i=t, i \in S_l}Y_i \quad \text{AB组Y的均值} \\
&\hat{\tau}(S_l) = \hat{\mu_1}(S_l) -\hat{\mu_0}(S_l) \quad \text{叶节点CATE}\\
&F(S_l) = N_l * \hat{\tau}^2(S_l)\\
& \text{cost fucntion}: max \sum_{i=1}^L F(S_i)\\
\end{align}
\]
作者先把全样本切分成train, val和test。 用训练集来建树, 用test来估计叶节点variance,penalize小的叶结点带来的高方差,然后用叶节点上train和val的差异来penalize损失函数,以下\(\lambda\)控制penalty的大小:
\[
\begin{align}
&penalty = N_L^{val} * |\hat{\tau}(S_l^{val}) -\hat{\tau}(S_l^{train}) | \\
&cost = \frac{(1-\lambda)F(S_l^{train}) - \lambda * penalty}{|N_l^{train} - N_l^{val}| +1}\\
\end{align}
\]
小思考
各式各样解决over-fitting的方法不能说没有用,但个人认为最终通过Casual Tree得到的特征和特征取值,还是要依据业务逻辑来进行验证。以及在不同的样本集上很可能特征取值的变动要超过over-fitting的影响。所以主观判断在这里也很重要
其他相关模型详见AB实验的高端玩法系列1-实用HTE论文GitHub收藏
欢迎留言~
Paper慢慢读 - AB实验人群定向 Learning Triggers for Heterogeneous Treatment Effects的更多相关文章
- Paper慢慢读 - AB实验人群定向 Recursive Partitioning for Heterogeneous Casual Effects
这篇是treatment effect估计相关的论文系列第一篇所以会啰嗦一点多给出点背景. 论文 Athey, S., and Imbens, G. 2016. Recursive partition ...
- Paper慢慢读 - AB实验人群定向 Double Machine Learning
Hetergeneous Treatment Effect旨在量化实验对不同人群的差异影响,进而通过人群定向/数值策略的方式进行差异化实验,或者对实验进行调整.Double Machine Learn ...
- AB实验人群定向HTE模型5 - Meta Learner
Meta Learner和之前介绍的Casual Tree直接估计模型不同,属于间接估计模型的一种.它并不直接对treatment effect进行建模,而是通过对response effect(ta ...
- AB实验的高端玩法系列4- 实验渗透低?用户未被触达?CACE/LATE
CACE全称Compiler Average Casual Effect或者Local Average Treatment Effect.在观测数据中的应用需要和Instrument Variable ...
- AB实验的高端玩法系列2 - 更敏感的AB实验, CUPED!
背景 AB实验可谓是互联网公司进行产品迭代增加用户粘性的大杀器.但人们对AB实验的应用往往只停留在开实验算P值,然后let it go...let it go ... 让我们把AB实验的结果简单的拆解 ...
- AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score
背景 都说随机是AB实验的核心,为什么随机这么重要呢?有人说因为随机所以AB组整体不存在差异,这样才能准确估计实验效果(ATE) \[ ATE = E(Y_t(1) - Y_c(0)) \] 那究竟随 ...
- 滴滴数据驱动利器:AB实验之分组提效
桔妹导读:在各大互联网公司都提倡数据驱动的今天,AB实验是我们进行决策分析的一个重要利器.一次实验过程会包含多个环节,今天主要给大家分享滴滴实验平台在分组环节推出的一种提升分组均匀性的新方法.本文首先 ...
- 为什么在数据驱动的路上,AB 实验值得信赖?
在线AB实验成为当今互联网公司中必不可少的数据驱动的工具,很多公司把自己的应用来做一次AB实验作为数据驱动的试金石. 文 | 松宝 来自 字节跳动数据平台团队增长平台 在线AB实验成为当今互联网公司中 ...
- 关于MySQL幻读的实验
该实验基于 CentOS 7 + MySQL 5.7 进行 打开两个窗口连接到MySQL 第一个连接的事务我们命名为 T1 第二个连接的事务我们命名为 T2 T2 发生在 T1 的 O1 操作结束以 ...
随机推荐
- Java之封装与访问权限控制(一)
目录 Java之封装与访问权限控制(一) 封装的概念 访问控制符 属性私有化 Java之封装与访问权限控制(一) 对于封装的概念,我总觉得自己还是挺了解的,但是真要我说,还真说不出个啥来.我只能默默地 ...
- oracle中创建用户、角色、权限、表空间简单使用
一.数据库用户 创建数据库用户 create user 用户名 identified by 密码; 授权 grant 权限名 to 用户名; 查看当前用户权限 select * from sessio ...
- Vue初始化过程
用vue也有一两年了,始终对vue一知半解,不怎么了解内部的执行过程,最近在看vue源码,还是不少收获的,其中不乏浏览器事件轮询机制.闭包.设计模式等,还是非常值得一读.本篇简要记录下vue的初始化过 ...
- Redis Python(二)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.NoSQL(Not only SQL)1.泛指非关系数据库2.不支持SQL语法3.存储结构与传统的关系型数据库 ...
- Unity3D 使用Socket处理数据并将数据 在UGUI、NGUI上显示出来
Unity3d 不支持C#的线程直接调用Unity3D 主线程才能实现的功能.例如:给UGUI text 赋值.改变Color值等.怎样解决这个问题呢?使用一个Loom脚本. 按照惯例贴上代码. 首先 ...
- [洛谷P1144][题解]最短路计数
这道题可以用各种算法踩掉,我选择的是SPFA. 因为题目要求计数,所以我们开一个ans数组表示数量. 分两种情况讨论: 一:dis_v>dis_u+1 最短路被更新了,可以直接ans_v=ans ...
- kubernets学习笔记
K8s CI :持续集成CD :持续交付 D --DeliveryCD :持续部署 D --Deployment Kubernetes Cluster: Masters: (3-host 做高可用)A ...
- Samba安装及配置
samba 可以实现Windows对Windows . Windows对Linux.Linux对Linux的文件传输 在centos7安装samba yum install samba 启动samba ...
- 第1章 你好,C++并发世界
#include<iostream> #include<thread> void print(){ std::cout << "hello world&q ...
- IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...