2016-12-14 93 views
0

我有一個支配我模型的預測變量,我仍然希望包含它,但是我想在最終模型中降低它的重要性。有沒有一種好的(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 

...這是否有道理?

+0

您是否認爲您可能只是過度使用您的模型?你可以採取[避免這些措施](https://www.quora.com/How-can-I-avoid-overfitting)。 – AlexG

+0

@AlexG感謝您的建議,雖然它不是過度配置,但變量是真正的預測性的,我只是不希望它主宰模型,因爲這不適合我的應用 – maxymoo

+0

如果您使用正則化,可以將具體來說,這個預測指標的懲罰更高 –

回答

0

不知道你的應用程序的任何內容,很難給出你應該做什麼的明確答案。有幾個選項,我可以看到:

  1. 在這個問題你去噪方法可能被罰款
  2. 您可以使用具有更高的偏差和低方差像正規化線性模型的模型(我假設你正在做的GBM,RF或類似術語「重要性」)
  3. 您可能完全排除高度預測性功能
  4. 您可能會構建一個完全排除高度預測性功能的模型,然後將結果得分與該功能在某種程度上
  5. 您也可能只是想接受,強大的功能將成爲您的模型中的主導因素
+0

感謝Randy的回答,你知道如何使用LogisticRegression對單個變量使用正則化嗎? – maxymoo