Es scheint, als ob Sie verstehen, dass Sie n
Ebenen haben können, im Gegensatz zu n-1
, weil Sie sich im Gegensatz zur linearen Regression keine Sorgen um die perfekte Kolinearität machen müssen.
(Ich komme aus einer R-Perspektive, aber ich gehe davon aus, dass es in Python dasselbe ist.) Das hängt von ein paar Dingen ab, wie 1) welches Paket Sie verwenden und 2) wie viele Faktorstufen Sie haben.
1) Wenn Sie das randomForest
Paket von R verwenden und dann <33 Faktorstufen haben, können Sie diese in einer Funktion belassen, wenn Sie möchten. Dies liegt daran, dass in der zufälligen Gesamtstrukturimplementierung von R überprüft wird, welche Faktorstufen auf einer Seite der Aufteilung und welche auf der anderen Seite liegen sollten (z. B. können 5 Ihrer Ebenen auf der linken Seite zusammengefasst und 7 gruppiert sein zusammen rechts). Wenn Sie das kategoriale Feature in n
Dummies aufteilen , steht dem Algorithmus diese Option nicht zur Verfügung.
Wenn das von Ihnen verwendete Paket keine kategorialen Funktionen verarbeiten kann, müssen Sie natürlich nur n
Dummy-Variablen erstellen .
2) Wie oben erwähnt, kann die zufällige Gesamtstrukturimplementierung von R nur 32 Faktorstufen verarbeiten. Wenn Sie mehr als diese haben, müssen Sie entweder Ihre Faktoren in kleinere Teilmengen aufteilen oder für jede Ebene eine Dummy-Variable erstellen.
randomForest
automatisch codiert werden, sollte ich mich fürn
Dummies entscheiden, da Kollinearität für RF kein Problem darstellt.sklearn
... Praktisch gibt es Hinweise (praktische Erfahrung, Forschung usw.), dass "dummisierte" Variablen schlechter abschneiden als "gruppierte" kategoriale Variablen [in R]Es gibt einen anderen Ansatz für den Umgang mit kategorialen Variablen, der als Ziel- / Auswirkungscodierung bezeichnet wird.
In diesem Schema besteht die Idee darin, das Feature mithilfe einer einzelnen Float-Spalte zu codieren, in der der Wert der Durchschnitt der Zielvariablen über alle Zeilen ist, die die Kategorie gemeinsam nutzen. Dies ist besonders nützlich für baumbasierte Modelle, da es eine Ordnungsbeziehung innerhalb des Features auferlegt (dh Werte rechts von der Kategorie haben eine höhere mittlere Antwort als Werte links) und es einfacher macht, den Prädiktorraum aufzuteilen.
Hier ist eine nette Erklärung des Themas:
https://towardsdatascience.com/why-you-should-try-mean-encoding-17057262cd0
Und hier ist ein Link zu dem Artikel, der ursprünglich die Codierung vorgeschlagen hat: http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.pdf
Es gibt einige weitere Details, um eine Schätzung des Mittelwerts in Kategorien mit niedrigen Zählwerten zu vermeiden, und es gibt auch ein anderes Modell, CatBoost, das eine Lösung für die durch diese Codierung eingeführte Verzerrung vorschlägt. Nach meiner Erfahrung ist dies jedoch eine einfache und sehr nützliche Methode, um kategoriale Variablen mit hoher Kardinalität zu codieren .
quelle