【问题标题】:Sklearn StandardScaler + ElasticNet with interpretable coefficients具有可解释系数的 Sklearn StandardScaler + ElasticNet
【发布时间】:2020-04-06 20:22:12
【问题描述】:

为了正确拟合像弹性网络这样的正则化线性回归模型,必须首先对自变量进行标准化。但是,这些系数具有不同的含义。为了提取此类模型的正确权重,我是否需要使用以下公式手动计算它们:
b = b' * std_y/std_x
还是 sklearn 中已经有一些内置功能?

另外:我认为我不能只使用normalize=True 参数,因为我有可能应该保持未缩放的虚拟变量

【问题讨论】:

    标签: python scikit-learn linear-regression regularized


    【解决方案1】:

    您可以使用均值标准差进行非标准化。 sklearn 在您使用 StandardScaler 后提供它们。

    from sklearn.preprocessing import StandardScaler
    
    ss = StandardScaler()
    ss.fit_transform(X_train) # or whatever you called it
    
    unstandardized_coefficients = model.coef_ * np.sqrt(ss.var_) + ss.mean_
    

    这将使它们处于非标准化数据的规模。

    然而,由于您使用的是正则化,它变成了一个有偏估计器。当涉及到有偏/无偏估计量时,性能和可解释性之间存在权衡。这更多是针对stats.stackexchange.com 的讨论。无偏估计器和低 MSE 估计器之间存在差异。在此处阅读有偏见的估计器和可解释性:When is a biased estimator preferable to unbiased one?

    tl;dr按照你的建议去做是没有意义的。

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 2018-02-13
      • 2022-01-12
      • 2019-02-17
      • 2021-12-28
      • 2017-04-07
      • 2021-05-11
      • 2020-02-14
      • 2018-03-15
      相关资源
      最近更新 更多