econml.sklearn_extensions.linear_model.SelectiveRegularization

class econml.sklearn_extensions.linear_model.SelectiveRegularization(unpenalized_inds, penalized_model, fit_intercept=True)[source]

线性模型的估计器,其中正则化仅应用于系数的子集。

假设我们的损失函数是

假设我们的损失函数是

因此我们只对 \(\beta_2\) 中的系数进行正则化。

然后,由于 \(\beta_1\) 不出现在惩罚项中,一旦 \(\beta_2\) 已知,找到使损失最小化的 \(\beta_1\) 问题就简化为一个普通的OLS回归,因此

于是,由于 \(\beta_1\) 不出现在惩罚项中,在已知 \(\beta_2\) 时,求解使得损失函数最小化的 \(\beta_1\) 的问题就简化为一个普通的 OLS 回归问题,因此有

将此代入损失函数,我们得到

将其代入损失函数,我们得到

然而,令 \(M_{X_1} = I - X_1 (X_1^\top X_1)^{-1}X_1^\top\),我们看到这变为

但是,令 \(M_{X_1} = I - X_1 (X_1^\top X_1)^{-1}X_1^\top\),我们注意到这成为

因此,找到最小化 \(\beta_2\) 的问题可以通过使用包含 \(f\) 的惩罚回归方法,将 \(M_{X_1} y\)\(M_{X_1} X_2\) 进行回归来解决。注意,这些仅仅是 \(y\)\(X_2\) 在使用OLS对 \(X_1\) 进行回归时的残差值。

参数

unpenalized_inds (int列表, 其他一维索引表达式, 或 可调用对象) – 模型拟合时不应受惩罚的索引;所有其他索引都将受惩罚。如果这是一个可调用对象,它将在调用 fit 时作为参数被调用,并应返回相应的索引表达式。例如,lambda X, y: unpenalized_inds=slice(1,-1) 将导致只有第一个和最后一个索引受到惩罚。
  • penalized_model (回归器) – 一个惩罚线性回归模型

  • fit_intercept (bool, 默认为 True) – 是否拟合截距项;如果拟合了截距项,则它不会受到惩罚

  • coef_

线性回归问题的估计系数。如果在拟合期间传入了多个目标(y 是二维),则这是一个形状为 (n_targets, n_features) 的二维数组;如果只传入一个目标,则这是一个长度为 n_features 的一维数组。

类型

数组,形状为 (n_features, ) 或 (n_targets, n_features)

intercept_

线性模型中的独立项(截距)。

float 或 形状为 (n_targets) 的数组

数组,形状为 (n_features, ) 或 (n_targets, n_features)

penalized_model

惩罚线性回归模型,从初始化时传入的模型克隆而来

回归器

数组,形状为 (n_features, ) 或 (n_targets, n_features)

__init__(unpenalized_inds, penalized_model, fit_intercept=True)[source]

方法

__init__(unpenalized_inds, penalized_model)

fit(X, y[, sample_weight])

拟合模型。

predict(X)

对每个样本进行预测。

score(X, y)

对一组特征的预测结果相对于真实值进行评分。

属性

known_params

fit(X, y, sample_weight=None)[source]

X (类数组对象, 形状为 (n, d_x)) – 用于回归的特征

predict(X)

unpenalized_inds (int列表, 其他一维索引表达式, 或 可调用对象) – 模型拟合时不应受惩罚的索引;所有其他索引都将受惩罚。如果这是一个可调用对象,它将在调用 fit 时作为参数被调用,并应返回相应的索引表达式。例如,lambda X, y: unpenalized_inds=slice(1,-1) 将导致只有第一个和最后一个索引受到惩罚。
  • y (类数组对象, 形状为 (n,) 或 (n, d_y)) – 回归目标

  • sample_weight (类数组对象, 形状为 (n,), 可选) – 每个样本的相对权重

  • predict(X)[source]

X (类数组对象, 形状为 (m, d_x)) – 要预测其目标的样本

score(X, y)

unpenalized_inds (int列表, 其他一维索引表达式, 或 可调用对象) – 模型拟合时不应受惩罚的索引;所有其他索引都将受惩罚。如果这是一个可调用对象,它将在调用 fit 时作为参数被调用,并应返回相应的索引表达式。例如,lambda X, y: unpenalized_inds=slice(1,-1) 将导致只有第一个和最后一个索引受到惩罚。
  • 输出

  • ——

  • arr (类数组对象, 形状为 (m,) 或 (m, d_y)) – 预测的目标值

  • score(X, y)[source]

X (类数组对象, 形状为 (m, d_x)) – 要预测的样本

属性

unpenalized_inds (int列表, 其他一维索引表达式, 或 可调用对象) – 模型拟合时不应受惩罚的索引;所有其他索引都将受惩罚。如果这是一个可调用对象,它将在调用 fit 时作为参数被调用,并应返回相应的索引表达式。例如,lambda X, y: unpenalized_inds=slice(1,-1) 将导致只有第一个和最后一个索引受到惩罚。
  • y (类数组对象, 形状为 (m,) 或 (m, d_y)) – 真实目标值

  • score (float) – 模型的评分

  • ——

  • arr (类数组对象, 形状为 (m,) 或 (m, d_y)) – 预测的目标值