Uber CausalML 因果机器学习库快速入门指南

Uber CausalML 因果机器学习库快速入门指南

causalml Uplift modeling and causal inference with machine learning algorithms causalml 项目地址: https://gitcode.com/gh_mirrors/ca/causalml

概述

Uber CausalML 是一个开源的因果机器学习库,提供了多种因果推断方法的实现。本文将带您快速了解该库的核心功能和使用方法,帮助您快速上手因果机器学习项目。

倾向得分分析

倾向得分估计

倾向得分是因果推断中的重要概念,表示个体接受某种干预的概率。CausalML 提供了 ElasticNetPropensityModel 来进行倾向得分估计:

from causalml.propensity import ElasticNetPropensityModel

pm = ElasticNetPropensityModel(n_fold=5, random_state=42)
ps = pm.fit_predict(X, y)

该方法结合了 L1 和 L2 正则化,可以有效处理高维特征并防止过拟合。

倾向得分匹配

倾向得分匹配是消除混杂变量影响的常用方法:

from causalml.match import NearestNeighborMatch, create_table_one

psm = NearestNeighborMatch(replace=False, ratio=1, random_state=42)
matched = psm.match_by_group(data=df, treatment_col=treatment_col,
                           score_cols=score_cols, groupby_col=groupby_col)

create_table_one(data=matched, treatment_col=treatment_col,
                features=covariates)

匹配后可以使用 create_table_one 检查协变量平衡情况,这是评估匹配效果的重要步骤。

平均处理效应(ATE)估计

元学习器方法

CausalML 实现了多种元学习器算法:

  1. S-Learner:单一模型估计
  2. T-Learner:双模型估计
  3. X-Learner:交叉学习器
  4. R-Learner:基于残差的学习器
from causalml.inference.meta import LRSRegressor, XGBTRegressor, MLPTRegressor
from causalml.inference.meta import BaseXRegressor, BaseRRegressor

# 线性回归S-Learner
lr = LRSRegressor()
te, lb, ub = lr.estimate_ate(X, treatment, y)

# XGBoost T-Learner
xg = XGBTRegressor(random_state=42)
te, lb, ub = xg.estimate_ate(X, treatment, y)

# 神经网络T-Learner
nn = MLPTRegressor(hidden_layer_sizes=(10,10), learning_rate_init=.1,
                  early_stopping=True, random_state=42)
te, lb, ub = nn.estimate_ate(X, treatment, y)

# X-Learner
xl = BaseXRegressor(learner=XGBRegressor(random_state=42))
te, lb, ub = xl.estimate_ate(X, treatment, y, e)

# R-Learner
rl = BaseRRegressor(learner=XGBRegressor(random_state=42))
te, lb, ub = rl.estimate_ate(X=X, p=e, treatment=treatment, y=y)

提升树方法

CausalML 还实现了基于决策树的因果推断方法:

from causalml.inference.tree import UpliftTreeClassifier

uplift_model = UpliftTreeClassifier(max_depth=5, min_samples_leaf=100, 
                                  min_samples_treatment=50, n_reg=100,
                                  evaluationFunction='KL', control_name='control')

高级算法

反事实价值优化

该功能可用于营销活动优化等场景:

from causalml.optimize import CounterfactualValueEstimator

cve = CounterfactualValueEstimator(
    treatment=df_test['treatment_group_key'],
    control_name='control',
    treatment_names=conditions[1:],
    y_proba=y_proba,
    cate=tm_pred,
    value=conversion_value_array[test_idx],
    conversion_cost=cc_array[test_idx],
    impression_cost=ic_array[test_idx])

cve_best_idx = cve.predict_best()

工具变量方法

对于存在未观测混杂的情况,可以使用2SLS方法:

from causalml.inference.iv import IV2SLS

iv = IV2SLS()
iv.fit(X, treatment, y, Z)
ate = iv.estimate_ate()

神经网络方法

CausalML 实现了多种基于神经网络的因果推断算法:

  1. CEVAE:因果效应变分自编码器
  2. DragonNet:专为因果推断设计的神经网络架构

数据生成与验证

合成数据生成

CausalML 提供了灵活的合成数据生成功能:

from causalml.dataset import synthetic_data

# 生成单一模拟数据
y, X, treatment, tau, b, e = synthetic_data(mode=1)

# 生成多模拟数据
preds_summary = get_synthetic_summary(simulate_nuisance_and_easy_treatment, 
                                    n=1000, k=12)

敏感性分析

评估模型对假设的敏感性:

from causalml.metrics.sensitivity import Sensitivity

sens_x = Sensitivity(df=df, inference_features=INFERENCE_FEATURES, 
                    p_col='pihat', treatment_col=TREATMENT_COL, 
                    outcome_col=OUTCOME_COL, learner=learner_x)
sens_sumary_x = sens_x.sensitivity_analysis(methods=['Placebo Treatment',
                                                   'Random Cause',
                                                   'Subset Data',
                                                   'Random Replace',
                                                   'Selection Bias'])

特征选择

CausalML 提供了多种因果特征选择方法:

from causalml.feature_selection.filters import FilterSelect

# F检验方法
filter_f = FilterSelect()
f_imp = filter_f.get_importance(df, X_names, y_name, 'F',
                              treatment_group='treatment1')

# 似然比检验
lr_imp = filter_f.get_importance(df, X_names, y_name, 'LR',
                               treatment_group='treatment1')

# KL散度方法
kl_imp = filter_f.get_importance(df, X_names, y_name, 'KL',
                               treatment_group='treatment1', n_bins=10)

结语

本文介绍了 Uber CausalML 库的核心功能和使用方法。该库提供了从基础倾向得分匹配到复杂神经网络方法的完整因果推断工具链,是进行因果机器学习研究的强大工具。建议读者根据实际需求选择合适的算法,并通过敏感性分析等方法验证结果的可靠性。

causalml Uplift modeling and causal inference with machine learning algorithms causalml 项目地址: https://gitcode.com/gh_mirrors/ca/causalml

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余媛奕Lowell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值