我有一个预测因子主导着我的模型,我仍然想包含它,但我想降低它在最终模型中的重要性。有没有一种好的(科学)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
。这有意义吗?
如果不了解您的应用程序,就很难给出关于您应该做什么的明确答案。我可以看到几个选项:
- 你在问题中的嘈杂方法可能没问题
- 你可以使用具有更高偏差和较低方差的模型,如正则化线性模型(我假设你正在使用GBM,RF或类似的东西来使用术语"重要性")
- 您可以完全排除高度预测功能的情况
- 您可以构建一个完全排除高度预测特征的模型,然后以某种方式将结果分数与该特征相结合
- 您可能还只想接受强功能将成为模型中的主导因素。