首页
/ 使用EconML和DoWhy分析在线旅游公司推荐系统的A/B测试案例

使用EconML和DoWhy分析在线旅游公司推荐系统的A/B测试案例

2025-07-09 01:08:07作者:毕习沙Eudora

概述

在商业决策中,评估新功能或服务对用户行为的影响至关重要。本文将通过一个在线旅游公司的案例,展示如何使用EconML和DoWhy这两个强大的因果推断工具包来分析推荐系统的A/B测试结果。

问题背景

在线旅游公司希望评估其会员计划是否能促使用户更多地使用网站并增加消费。然而,直接进行A/B测试面临两个主要挑战:

  1. 强制性问题:公司无法强制用户成为会员,只能提供会员选项
  2. 选择偏差:自愿成为会员的用户可能本身就是更活跃的用户

这种情况下,传统的A/B测试方法无法准确评估会员计划的实际效果。

解决方案:意图到治疗(Intent-to-Treat)分析

公司采用了"意图到治疗"(Intent-to-Treat, ITT)的实验设计:

  1. 随机向部分用户展示更简单的注册流程(作为工具变量Z)
  2. 观察哪些用户实际成为会员(治疗变量T)
  3. 测量用户后续的网站访问天数(结果变量Y)

这种方法利用随机分配的注册流程简化作为工具变量,解决了选择偏差问题。

技术实现

1. 数据准备

数据集包含实验前后28天的用户行为数据:

# 导入数据
ab_data = pd.read_csv("ab_sample.csv")

# 定义变量
Z = ab_data['easier_signup']  # 工具变量(是否展示简化注册)
T = ab_data['became_member']   # 治疗变量(是否成为会员)
Y = ab_data['days_visited_post'] # 结果变量(后续访问天数)
X_data = ab_data.drop(columns=['easier_signup', 'became_member', 'days_visited_post']) # 协变量

2. 构建因果模型

使用DoWhy库构建因果图并识别因果效应:

# 初始化EconML估计器
est = LinearIntentToTreatDRIV(
    model_t_xwz=model_T_XZ, 
    model_y_xw=model_Y_X,
    flexible_model_effect=flexible_model_effect,
    featurizer=PolynomialFeatures(degree=1, include_bias=False)
)

# 通过DoWhy拟合模型
est_dw = est.dowhy.fit(
    Y, T, Z=Z, X=X_data, 
    outcome_names=["days_visited_post"],
    treatment_names=["became_member"],
    feature_names=feature_names,
    instrument_names=["easier_signup"],
    target_units=test_customers,
    inference="statsmodels"
)

3. 估计因果效应

使用EconML的IntentToTreatDRIV估计器计算异质处理效应:

# 计算处理效应
treatment_effects = est.effect(X_data)

4. 鲁棒性检验

DoWhy提供了多种方法来验证估计结果的鲁棒性:

  1. 添加随机共同原因
  2. 添加未观察到的共同原因
  3. 用随机变量替换治疗变量
  4. 随机删除部分数据

这些检验帮助我们评估估计结果对模型假设的敏感性。

5. 解释处理效应

使用EconML的解释工具分析哪些用户特征影响了处理效应:

# 使用决策树解释处理效应
intrp = SingleTreeCateInterpreter(max_depth=2)
intrp.interpret(est, X_data)
plt.figure(figsize=(25, 5))
intrp.plot(feature_names=X_data.columns)

6. 制定策略决策

基于估计结果,可以制定个性化的会员推广策略:

# 使用策略树制定决策规则
pol_intrp = SingleTreePolicyInterpreter(max_depth=2)
pol_intrp.interpret(est, X_data, sample_treatment_costs=0.2)
plt.figure(figsize=(25, 5))
pol_intrp.plot(feature_names=X_data.columns)

关键发现

分析揭示了以下重要发现:

  1. 通过免费渠道访问网站的用户从会员计划中获益更多
  2. 频繁访问酒店页面的用户可能不适合会员计划
  3. 使用特定操作系统的用户对会员计划反应更积极

实际应用

基于这些发现,公司可以:

  1. 针对不同用户群体定制会员推广策略
  2. 优化会员福利以最大化用户参与度
  3. 避免向可能产生负面反应的群体推广会员计划

结论

通过结合EconML和DoWhy,我们能够:

  1. 在非完美遵守的实验设置中准确估计因果效应
  2. 识别用户特征的异质性影响
  3. 制定数据驱动的个性化策略

这种方法不仅适用于在线旅游行业,也可广泛应用于其他需要评估干预效果的商业场景。

技术要点总结

  1. 工具变量:利用随机分配的简化注册流程作为工具变量解决选择偏差
  2. 异质处理效应:识别不同用户群体对会员计划的不同反应
  3. 鲁棒性检验:验证估计结果对模型假设的稳健性
  4. 策略优化:基于因果效应制定个性化推广策略

这种方法为企业在复杂实验环境中进行因果推断提供了强大的工具支持。