2012-09-17 66 views
13

這更像是一個「理論」問題。我正在使用scikit-learn包來執行一些NLP任務。 Sklearn提供了很多方法來執行特徵選擇和設置模型參數。我想知道我應該先做什麼。首先做什麼:特徵選擇或模型參數設置?

如果我使用univariate feature selection,很明顯我應該首先進行特徵選擇,然後用選定的特徵,然後通知估計器的參數。

但是如果我想使用recursive feature elimination?我應該首先使用所有原始功能設置參數grid search,然後執行功能選擇?或者,也許我應該首先選擇特徵(使用估計器的默認參數),然後使用所選特徵設置參數?

在此先感謝您提供的任何幫助。

編輯

我有幾乎同樣的問題陳述here。那時候,沒有解決辦法。有誰知道它現在是否存在?

回答

16

就我個人而言,我認爲RFE在大多數情況下是過度消耗和太貴。如果要在線性模型上進行特徵選擇,請使用單變量特徵選擇,例如使用chi2測試或帶網格搜索正則化參數的L1或L1 + L2正則化模型(通常在sklearn模型中命名爲Calpha)。

對於很多樣品,你應該嘗試RandomForestClassifierExtraTreesClassifier或GBRT模型和網格搜索參數選擇(可能使用OOB分數估計)高度非線性的問題,並使用compute_importances開關來查找重要的特徵排名和將其用於特徵選擇。

對於很少採樣的高度非線性問題,我不認爲有解決方案。你必須做神經科學:)

+0

謝謝你的建議。因爲我只是打算使用LogistRegression和SVC,我認爲chi2和/或L1就足夠了。 – feralvam