Für lineare Modelle (wie lineare Regression, logistische Regression usw.) ist das Feature-Engineering ein wichtiger Schritt, um die Leistung der Modelle zu verbessern. Meine Frage ist, ist es wichtig, ob wir Feature-Engineering durchführen, während wir zufällige Gesamtstruktur- oder Gradienten-Boosting verwenden?
Zugegeben, diese Modelle sind keine Deep-Learning-Modelle. aber , es scheint, dass einige der Feature-Engineering-Methoden das Modell nicht wirklich verbessern. Zum Beispiel: Ich mache ein binäres Klassifizierungsproblem, das ungefähr 200 Merkmale enthält , und 20 davon sind kategoriale Merkmale. Ich habe folgendes gemacht:
Benchmark: Zufälliger Waldklassifikator direkt auf den Originaldaten ausgeführt. Ich habe eine AUC von ungefähr 0,93, Präzision, Rückruf und F-Score liegen bei ungefähr 0,95 (Ich sagte ungefähr, weil die statifizierte Kfold-Validierung angewendet wird und es sehr kleine Abweichungen von den Ergebnissen gibt)
Ich reduzierte die Feature-Dimension durch Chi-Quadrat-Test und ANOVA F1-Test, um das Modell auszuführen. Die Ergebnisse sind nahezu identisch: AUC um 0,93, Präzision, Rückruf und F-Score um 0,95
Dann habe ich alle kategorialen Funktionen per Tastendruck eingegeben und dann das Modell erneut ausgeführt. Die Ergebnisse sind immer noch nahezu identisch: AUC um 0,93, Präzision, Rückruf und F-Score um 0,95
Dann wird eine abgeschnittene SVD angewendet, um die Features weiter zu reduzieren und das Modell neu zu trainieren. Die Ergebnisse bleiben jedoch unverändert ...
Zuletzt habe ich einen Polynomterm hinzugefügt, einen Kreuzterm der verbleibenden Merkmale. Ergebnisse sind noch unverändert ...
Irgendwelche Vorschläge bitte? Vielen Dank.
Antworten:
Es ist allgemein anerkannt, dass Feature Engineering das Ergebnis verbessert, wenn relativ fortschrittliche Algorithmen wie GBMs oder Random Forests verwendet werden. Es gibt einige Gründe, die sich sowohl auf die Gesamtgenauigkeit als auch auf die Verwendbarkeit beziehen. Erstens, wenn Sie das Modell tatsächlich verwenden möchten, müssen Funktionen gewartet und implementiert werden und müssen häufig den Benutzern erklärt werden. Das heißt, jede zusätzliche Funktion schafft zusätzliche Arbeit. Aus praktischen Gründen ist es daher nützlich, Funktionen zu entfernen, die nicht wesentlich zur Verbesserung der Genauigkeit beitragen.
In Bezug auf die Gesamtgenauigkeit erhöhen zusätzliche Funktionen und / oder schlecht entwickelte Funktionen die Wahrscheinlichkeit, dass Sie Ihr Modell eher auf Rauschen als auf Signal trainieren. Die Verwendung von Domänenwissen oder die Überprüfung der Daten, um alternative Methoden zum Entwickeln von Funktionen vorzuschlagen, verbessert normalerweise die Ergebnisse. Der kaggle-Blog - blog.kaggle.com - enthält Aufzeichnungen darüber, wie sie es gemacht haben, von Podiumsplatzierten in jedem Wettbewerb. Dazu gehören normalerweise Beschreibungen des Feature-Engineerings - wahrscheinlich häufiger als Beschreibungen des Modell-Tunings, die die Bedeutung des Feature-Engineerings hervorheben - und einige von ihnen sind sehr kreativ, einschließlich der Nutzung von Domain-Wissen, das von Wettbewerbsorganisatoren bereitgestellt oder auf andere Weise während des Wettbewerbs entdeckt wurde.
Diese kürzlich veröffentlichte Beschreibung ist ein gutes Beispiel für das während des Wettbewerbs erworbene Domänenwissen, das zur Auswahl / Entwicklung von Funktionen verwendet wird. Http://blog.kaggle.com/2017/06/29/2017-data-science-bowl-predicting-lung- Krebs-2.-Platz-Lösung-Aufschreiben-Daniel-Hammack-und-Julian-de-Wit / (die Abschnitte mit den Überschriften 'Vorverarbeitung' und 'Externe Daten' geben gute Beispiele).
quelle
Ja, der beste Weg, dies zu bemerken, ist ein Kaggle-Wettbewerb. Sie werden sehen, dass viele Benutzer dieselben Modelle verwenden (meistens Gradientenverstärkung und -stapelung), aber Feature-Engineering und Auswahl sind wirklich das, was den Unterschied zwischen einer Top-5-Prozent-Bestenliste und einer Top-20-Prozent-Punktzahl ausmachen kann.
Sie müssen jedoch auch die Kollinearität Ihrer Features überprüfen. Manchmal kann das Hinzufügen zu vieler korrelierter Features die Genauigkeit Ihres Modells verringern.
Außerdem müssen Sie Ihre Hyperparameter genau einstellen, um die Modellbewertung erheblich zu verbessern.
Wenn sich Ihr Modell nicht verbessert hat, ist der von Ihnen verwendete Algorithmus wahrscheinlich nicht für Ihre Art von Problem geeignet. Wenn ein Algorithmus beliebt ist, bedeutet dies nicht, dass er für jede Art von Problem geeignet ist.
quelle
Unter der Annahme, dass Sie Bäume als Booster-Einheit verwenden (das Modell, das bei jeder Iteration angepasst wird), haben einige relativ einfache Transformationen, wie streng monotone (z. B. Quadrieren, Skalieren, In usw.), keinen Einfluss auf die Ergebnisse , weil Bäume für solche Transformationen unveränderlich sind. Das Erstellen von Interaktionen zwischen Variablen hilft auch nicht viel, da Bäume Interaktionen von Natur aus modellieren können (vorausgesetzt, Sie lassen zu, dass die Bäume tief genug sind). Weitere Informationen finden Sie auf Seite 352 (Abschnitt 10.7) unter Elemente des statistischen Lernens .
Ich würde jedoch erwarten, dass die von Ihnen beschriebenen recht komplexen Transformationen Auswirkungen auf die Ergebnisse im Allgemeinen haben.
quelle