用于评估和推理的双重去中心化机器学习

522 阅读8分钟

当有大量的独立变量时,那么像特征选择和特征消除这样的过程可能是相关的,可以用来选择最有意义的。然而,在某些情况下,很有可能会引入被称为正则化、预测试或特征选择偏差的偏见。本文将着重于了解双去势机器学习算法的功能,以消除偏见并产生与偏见有关的因果推断。以下是将要涉及的主题。

目录

  1. 什么是double/debiased ML?
  2. 双重/有偏见的ML是如何工作的?
  3. 为什么样本分割很重要?
  4. 用DoubleML实现双重/分层ML

双重机器学习方法是正交机器学习和样本分割的结合。让我们先来了解一下双重/偏析机器学习。

什么是double/debiased ML?

去偏移机器学习是一种元方法,它使用偏移校正和样本分割来计算机器学习函数(即标量总结)的置信区间。

该算法提供了一个非渐进的去偏机器学习定理,适用于任何机器学习算法的每一个全局或局部函数,满足一些基本的、可解释的约束。该算法导致了一套简单的要求,用户可以用它来将当代学习理论率转化为经典的统计推理。

目标是什么?

在一个非常复杂的环境中,Double/Debiased机器学习技术为估计和推断感兴趣的低维参数提供了一个直接的通用方法。

高复杂度表明,滋扰参数的参数空间的熵随着样本大小而增加。所关注的参数通常是一个因果或治疗效果参数。

双重/偏倚ML是如何工作的?

主要目标是提供一个通用框架,用于在存在高维滋扰参数的情况下估计和推断低维参数,该参数可以用新的非参数统计方法估计:

  • 滋扰参数是一个次要的人口参数,为了产生一个主要参数的估计值,必须将其考虑在内。

在一个回归问题中,使用ML方法对感兴趣的参数进行估计的天真方法是,例如,构建一个复杂的ML估计器来学习回归函数。为了清楚起见,假设数据被随机地分割成两个相等的部分(主样本和辅助样本)。样本拆分在克服偏差方面起着重要作用。

现在会有两个估计值,分别使用辅助样本和主样本获得。从主样本得到的估计值通常会有一个较慢的收敛率。 这种 "劣质 "行为背后的驱动力是在从辅助样本学习时的偏差

这种行为是由于某些具有非零均值的项而得到的。这些项有一个非零的平均值,因为在高维或其他高度复杂的环境中,我们必须采用正则化的估计器--如套索山脊提升惩罚性神经网络--才能使信息学习可行。这些估计器中的正则化可以防止估计器的方差膨胀,但它也为估计器引入了严重的偏差。具体来说,估计器的偏差在均方根误差意义上的收敛率通常会小于 "1"。因此,具有非零均值的项的总和将处于趋向于无穷大的随机顺序中。

但是,将偏差正规化会产生另一种偏差,即所谓的正规化偏差。为了减轻这种偏差,该算法使用了一个 "正交 "的表述。这种表述是通过直接将自变量的影响从处理变量中偏移出来,得到正交化的回归者。

  • 偏分是一种统计方法,用于控制一个变量或一系列因素对其他相关变量(通常是因变量和自变量)的影响。通过消除可能存在联系的其他变量的影响,偏移有助于澄清特定的联系。

特别是,计算的正交回归者包括从数据的辅助样本中得出的ML估计值。现在,使用独立变量,解决一个辅助预测问题,估计处理变量(感兴趣的参数)的条件平均数。最后,这是一个 "双重预测 "或 "双重机器学习"。

在对从辅助样本中产生的估计器进行偏分和估计后,对从主要观察样本中获得的估计器建立以下的 "去偏分 "机器学习估计器。

为什么样本分割很重要?

样本分割的使用在确定剩余项在概率上消失方面起着关键作用。估计误差的整个方程被分为三个部分,即

  • 前导项包含了去势的机器学习估计器。
  • 第二项是在估计不同样本的估计器时正则化偏差的影响。
  • 剩余项包含来自模型的结构性不可观察变量的归一化乘积之和,如套索、树状物。

剩余项需要被证明在概率上消失,以使估计得到平衡。使用样本分割可以简单而严格地控制此类项。

为了看到这一点,假设观测值是独立的,并回顾从辅助样本中的观测值得到的估计值。然后,以辅助样本为条件,很容易验证剩余项的均值为零,方差趋于0。因此,根据切比雪夫不等式,该项在概率上消失了。

虽然样本分割允许处理剩余项,但它的直接应用有一个缺点,即感兴趣的参数的估计器只使用主样本,这可能导致效率的显著损失,因为我们只使用了一部分可用数据。

然而,有可能将主样本和辅助样本的作用颠倒过来,以产生第二个版本的相关参数估计器。我们可以通过对两个结果的估计器进行平均来恢复完全的效率。因为这两个估计器将是大致独立的,只是平均它们是一种有效的技术。这种将主样本和辅助样本的角色互换以获得多个估计值,然后对结果进行平均的样本分割程序被称为交叉拟合。

用DoubleML实现双重/偏置ML

本文使用的是回归数据,所以我们将比较DoubleML对决策树Regressor、随机森林Regressor和XGBoost Regressor的结果。

本文使用的数据集与世界卫生组织发布的2000年至2015年的预期寿命有关。它总共有22个特征,包括目标变量 "期望值"。目标变量包含与不同国家的人口预期年龄有关的数据,基于不同的医疗保健特征。

DoubleML是一个Python和R模块,实现了double/debiased机器学习框架。Python包基于sci-kit learn,而R包则基于mlr3和mlr3生态系统。它简化了Double/Debiased算法的使用。

安装Double ML

! pip install DoubleML

导入必要的库

import numpy as np
import pandas as pd
import doubleml as dml
 
from xgboost import XGBClassifier, XGBRegressor
from sklearn.ensemble import  RandomForestRegressor
from sklearn.tree import DecisionTreeRegressor
 
import matplotlib.pyplot as plt
import seaborn as sns

读取和预处理数据

data=pd.read_csv('Life Expectancy Data.csv')
data.head()

分析印度杂志

data_utils=data.dropna(axis=0)
 
from sklearn.preprocessing import LabelEncoder
encoder=LabelEncoder()
data_utils['status_enc']=encoder.fit_transform(data_utils['Status'])

初始化数据后端

让我们使用DoubleML包来估计预期寿命('Life expectancy'),对成人死亡率('adult mortality')的平均治疗效果。

features_base=['infant deaths','Alcohol', 'percentage expenditure', 'Hepatitis B',
       'Measles ', ' BMI ', 'under-five deaths ', 'Polio', 'Total expenditure',
       'Diphtheria ', ' HIV/AIDS', 'GDP', 'Population',
       ' thinness  1-19 years', ' thinness 5-9 years',
       'Income composition of resources', 'Schooling', 'status_enc', 'Year']
 
data_dml_base = dml.DoubleMLData(data_utils,
                                 y_col='Adult Mortality',
                                 d_cols='Life expectancy ',
                                 x_cols=features_base)

DoubleMLData "函数需要定义数据、治疗变量,在本例中是 "预期寿命",本例中的输出列是 "成人死亡率",以及作为自变量的特征列表:

印度分析杂志

建立双重ML模型

这篇文章只要求使用部分线性回归,当处理变量是/是回归时,就会使用部分线性回归。

Double ML提供了四个模型。部分线性回归模型(PLR)、部分线性IV回归模型(PLIV)、交互式回归模型(IRM)和交互式IV回归模型(IIVM):

trees = DecisionTreeRegressor(
    max_depth=30, ccp_alpha=0.0047, min_samples_split=203, min_samples_leaf=67)
 
np.random.seed(123)
dml_plr_tree = dml.DoubleMLPLR(data_dml_base,
                               ml_l = trees,
                               ml_m = trees,
                               n_folds = 3)
dml_plr_tree.fit(store_predictions=True)
tree_summary_plr = dml_plr_tree.summary
 
tree_summary_plr

印度分析杂志

这个PLR是针对决策树回归器的,同样,还有两个模型将被建立,一个是随机森林回归器,另一个是XG boost回归器。

randomForest = RandomForestRegressor(
    n_estimators=500, max_depth=7, max_features=3, min_samples_leaf=3)
np.random.seed(123)
dml_plr_forest = dml.DoubleMLPLR(data_dml_base,
                                 ml_l = randomForest,
                                 ml_m = randomForest,
                                 n_folds = 3)
dml_plr_forest.fit(store_predictions=True)
forest_summary_plr = dml_plr_forest.summary
 
forest_summary_plr

印度分析杂志

boost = XGBRegressor(n_jobs=1, objective = "reg:squarederror",
                     eta=0.1, n_estimators=35)
 
np.random.seed(123)
dml_plr_boost = dml.DoubleMLPLR(data_dml_base,
                                ml_l = boost,
                                ml_m = boost,
                                n_folds = 3)
dml_plr_boost.fit(store_predictions=True)
boost_summary_plr = dml_plr_boost.summary
boost_summary_plr

印度分析杂志

比较结果

final_summary = pd.concat(( forest_summary_plr, tree_summary_plr, boost_summary_plr))
final_summary.index = [ 'forest', 'tree', 'xgboost']
final_summary[['coef', '2.5 %', '97.5 %']]

印度分析杂志

在这里,我们可以观察到,与其他两个模型相比,XG boost regressor明显表现良好,总的来说,所有模型都清楚地界定了预期寿命对成人死亡率的影响。

结论

双重/偏置机器学习是正交函数和样本分割的组合操作,它产生了对感兴趣的变量的统计推断。通过这篇文章,我们了解了双重/偏置机器学习的功能以及用DoubleML实现它的方法。

参考文献