Scikit-lernen - Feature-Reduktion mit RFECV und GridSearch. Wo sind die Koeffizienten gespeichert?

8

Ich verwende Scikit-learn RFECV, um die wichtigsten Merkmale für eine logistische Regression mit einer Kreuzvalidierung auszuwählen. Angenommen, X ist ein [n, x] Datenrahmen von Merkmalen und y repräsentiert die Antwortvariable:

%Vor%

Zwei Fragen:

a) Ist dies der richtige Prozess für die Auswahl von Funktionen, Hyper-Parametern und Anpassung?

b) Wo finde ich die angepassten Koeffizienten für die ausgewählten Features?

    
GPB 25.06.2015, 19:27
quelle

2 Antworten

12

Ist dies der richtige Prozess für die Auswahl von Features? Dies ist eine der vielen Möglichkeiten der Merkmalauswahl. Die Beseitigung von rekursiven Merkmalen ist ein automatisierter Ansatz, andere sind in der Dokumentation zu scikit.learn aufgeführt . Sie haben unterschiedliche Vor- und Nachteile, und die Auswahl der Merkmale wird in der Regel am besten erreicht, indem auch der gesunde Menschenverstand einbezogen und Modelle mit unterschiedlichen Merkmalen getestet werden. RFE ist eine schnelle Möglichkeit, eine gute Auswahl an Funktionen auszuwählen, gibt Ihnen aber nicht unbedingt das Beste. Übrigens müssen Sie Ihr StratifiedKFold nicht separat erstellen. Wenn Sie nur den cv -Parameter auf cv=3 setzen, werden sowohl RFECV als auch GridSearchCV automatisch StratifiedKFold verwenden, wenn die y-Werte binär oder multiklassig sind. Ich nehme an, dass dies wahrscheinlich der Fall ist, da Sie% verwenden. Code%. Sie können auch

kombinieren %Vor%

in

%Vor%

Ist dies der richtige Prozess für die Auswahl von Hyperparametern? GridSearchCV ist im Grunde ein automatisierter Weg, systematisch eine ganze Reihe von Kombinationen von Modellparametern zu testen und die besten unter diesen nach einer Leistungsmetrik auszuwählen. Es ist eine gute Möglichkeit, geeignete Parameter zu finden, ja.

Ist dies der richtige Anpassungsprozess? Ja, das ist eine gültige Art, das Modell anzupassen. Wenn Sie LogisticRegression aufrufen, wird ein Gitter von grid.fit(X_new, y) estimators erstellt (jedes mit einer Reihe von Parametern, die ausprobiert werden) und zu jedem von ihnen passt. Es behält den mit der besten Leistung unter LogisticRegression , die Parameter dieses Schätzers in grid.best_estimator_ und den Performance-Score für diesen Schätzer unter grid.best_params_ . Es wird sich selbst zurückgeben und nicht der beste Schätzer. Beachten Sie, dass Sie bei eingehenden neuen X-Werten, auf die Sie das Modell zur Vorhersage verwenden, die Transformation mit dem angepassten RFECV-Modell anwenden müssen. Sie können diesen Schritt also auch zur Pipeline hinzufügen.

Wo finde ich die angepassten Koeffizienten für die ausgewählten Features? Das grid.best_score_ Attribut ist ein grid.best_estimator_ Objekt mit all diesen Informationen, also hat LogisticRegression alle Koeffizienten (und grid.best_estimator_.coef_ ist der Achsenabschnitt). Beachten Sie, dass der grid.best_estimator_.intercept_ -Parameter für grid.best_estimator_ auf refit gesetzt werden muss, um dieses GridSearchCV zu erhalten, aber das ist sowieso der Standardwert.

    
Irmak Sirer 25.06.2015, 20:13
quelle
4

Im Wesentlichen müssen Sie einen Zug-Validierungstest-Split für Ihre Beispieldaten durchführen. Wenn der Zugsatz verwendet wird, um Ihre normalen Parameter zu optimieren, wird der Validierungssatz zum Einstellen von Hyperparametern in der Rastersuche und der Testsatz zur Leistungsbewertung verwendet. Hier ist eine Möglichkeit, dies zu tun.

%Vor%     
Jianxun Li 26.06.2015 10:51
quelle

Tags und Links