Ich verstehe, dass maschinelles Lernen ein Problem darstellen kann, wenn Ihr Dataset stark korrelierte Features aufweist, da diese dieselben Informationen effektiv codieren.
Kürzlich hat jemand darauf hingewiesen, dass Sie beim einmaligen Codieren einer kategorialen Variablen korrelierte Features erhalten, sodass Sie eine davon als "Referenz" ablegen sollten.
Wenn Sie beispielsweise das Geschlecht als zwei Variablen kodieren is_male
und is_female
zwei Merkmale erzeugen, die perfekt negativ korrelieren, schlagen sie vor, nur eines davon zu verwenden, die Grundlinie effektiv auf männlich festzulegen und dann zu prüfen, ob die Spalte is_female für den Vorhersagealgorithmus wichtig ist .
Das ergab für mich einen Sinn, aber ich habe online nichts gefunden, was darauf hindeuten könnte, dass dies der Fall ist. Ist das also falsch oder fehlt mir etwas?
Mögliches (nicht beantwortetes) Duplikat: Ist die Kollinearität von One-Hot-codierten Features für SVM und LogReg von Bedeutung?
you end up with correlated features, so you should drop one of them as a "reference"
Dummy-Variablen oder Indikatorvariablen (dies sind die beiden Namen, die in der Statistik verwendet werden und synonym zu "One-Hot-Codierung" beim maschinellen Lernen sind) sind sowieso paarweise korreliert, seien es alle k- oder k-1-Variablen. Das bessere Wort ist also "statistisch / informationsredundant" anstatt "korreliert".Does keeping all k values theoretically make them weaker features
. Nein (obwohl ich nicht 100% sicher bin, was Sie mit "schwächer" meinen).using something like PCA
Es ist nur für den Fall zu beachten, dass die PCA für eine Gruppe von Dummies, die dieselbe kategoriale Variable darstellen, wenig praktischen Sinn hat, da die Korrelationen innerhalb der Gruppe von Dummies lediglich die Beziehungen zwischen den Kategorienfrequenzen widerspiegeln (wenn also alle Frequenzen gleich sind, sind alle Korrelationen gleich) bis 1 / (k-1)).is_male
Variable verwenden, im Gegensatz zu beiden Optionen? Dies ist in diesem Zusammenhang möglicherweise nicht sinnvoll und kann nur dann problematisch sein, wenn Sie zwei verschiedene Variablen haben, die tatsächlich dieselbe Information codieren (z. B. Höhe in Zoll und Höhe in cm).Antworten:
Dies hängt von den Modellen (und möglicherweise sogar von der Software) ab, die Sie verwenden möchten. Bei linearer Regression oder verallgemeinerten linearen Modellen, die anhand der maximalen Wahrscheinlichkeit (oder der kleinsten Quadrate) geschätzt werden (in R bedeutet dies die Verwendung von Funktionen†
lm
oderglm
), müssen Sie eine Spalte weglassen. Andernfalls wird eine Meldung über einige Spalten „wegen Singularitäten weggelassen“ get .Aber wenn Sie solche Modelle mit Regularisierung schätzen , zum Beispiel Grat, Lasso oder das elastische Netz, dann sollten Sie keine Säulen weglassen. Die Regularisierung berücksichtigt die Singularitäten, und was noch wichtiger ist, die Vorhersage kann davon abhängen, welche Spalten Sie weglassen. Das passiert nicht, wenn Sie keine Regularisierung verwenden .‡
Verwenden Sie bei anderen Modellen dieselben Prinzipien. Wenn die erhaltenen Vorhersagen davon abhängen, welche Spalten Sie weglassen, tun Sie es nicht. Ansonsten ist es in Ordnung.
Bisher werden in dieser Antwort nur lineare (und einige leicht nichtlineare) Modelle erwähnt. Aber was ist mit sehr nichtlinearen Modellen wie Bäumen und zufälligen Wäldern? Die Ideen zur kategorialen Codierung wie One-Hot stammen hauptsächlich aus linearen Modellen und Erweiterungen. Es gibt wenig Grund zu der Annahme, dass aus diesem Kontext abgeleitete Ideen für Bäume und Wälder unverändert gelten sollten! Für einige Ideen siehe Random Forest Regression mit spärlichen Daten in Python .
quelle