如何惩罚预测变量以降低其特征重要性

时间:2016-12-14 22:29:27

标签: pandas scikit-learn

我有一个主导我的模型的预测器,我仍然希望包含它,但我想在最终模型中减轻它的重要性。有没有一个好的(sci)pythonic方式来做到这一点?我想也许可以定义一个自定义PenaltyTransformer,它将随机噪声引入变量,如下所示:

class PenaltyTransformer(BaseEstimator,TransformerMixin):
    def __init__(self, columns, scale=0.1):
        self.scale = scale
        self.columns = columns

    def transform(self, X):
        X[:,self.columns] += np.random.normal(loc=0, scale=self.scale, size=X[:,self.columns].shape)
        return X

......这有意义吗?

1 个答案:

答案 0 :(得分:0)

在不了解您的申请的情况下,很难就您应该做的事情给出明确的答案。我可以看到几个选项:

  1. 你在问题​​中的吵闹方法可能没问题
  2. 您可能会使用具有较高偏差和较低方差的模型,如正则化线性模型(我假设您使用术语“重要性”进行GBM,RF或类似的事情)
  3. 您可以完全排除高度预测功能
  4. 您可以构建一个完全排除高度预测功能的模型,然后以某种方式将得到的分数与该功能结合起来
  5. 您可能也只是想接受强大的功能将成为您模型中的主导因素