Ich habe Fragen zur Codierung kategorialer Features durchgesehen, konnte jedoch keine finden, die mein Problem diskutieren. Entschuldigung, wenn ich es verpasst habe.
Nehmen wir an, wir haben einen Datensatz mit binären und nominalen Variablen von jeweils ungefähr gleicher Bedeutung.
Die meisten Klassifizierer können sich nicht direkt mit kategorialen Typen befassen, daher müssen diese transformiert werden - beispielsweise mithilfe der One-Hot-Codierung (Dummy-Variablen), wie in dieser Antwort erläutert .
Wenn eine kategoriale Variable eine hohe Kardinalität aufweist, würde sie dann nicht auf diese Weise andere (zum Beispiel binäre) Variablen "überwältigen"? Mit "Kardinalität" meine ich die Anzahl der Kategorien in einer nominalen Variablen.
Wenn unser Klassifikatormodell die Beziehungen zwischen Variablen kennt, würde es dann nicht unnötig versuchen, Beziehungen zwischen eingeführten binären Dummy- "Komponenten" derselben Variablen zu finden?
Und wenn ja, wie könnte dies angegangen werden?
Die beste Lösung, die ich mir vorstellen kann, besteht darin, Eigenschaften mit hoher Kardinalität logisch in "Buckets" zu gruppieren. Wenn jedoch genügend eindeutige Werte vorhanden sind, um ein Problem zu verursachen, wäre das manuelle Gruppieren ebenfalls arbeitsaufwendig.
Bearbeiten: Dies ist trivial und behebt das Problem nur teilweise, aber eines der Dinge, die ich letztendlich getan habe, ist, alle relativ seltenen kategorialen Werte durch eine neue, "andere" Kategorie zu ersetzen. Es kann zeitaufwändig sein, den Schwellenwert zu optimieren, wenn der Wert als "selten" eingestuft wird, aber zumindest dieser Ansatz kann automatisiert werden.
quelle
Antworten:
Wenn eine kategoriale Variable eine hohe Kardinalität aufweist, würde sie dann nicht auf diese Weise andere (zum Beispiel binäre) Variablen "überwältigen"?
Das hängt vom Algorithmus ab.
Algorithmen, die auf der Stichprobe der Spalten basieren (zufällige Wälder, extrem zufällige Bäume, Gradientenverstärkung oder ein Bagged-Klassifikator ...), trainieren viele Modelle auf Teilstichproben der Daten. Wenn 90% Ihrer Spalten eine "dummifizierte" Variable darstellen, ist es wahrscheinlich, dass eine große Anzahl der Modelle tatsächlich an derselben Variablen arbeitet, wodurch sie korrelierter werden als sie sein sollten, wodurch die Leistung aktiviert wird.
Lineare Regressionsmethoden werden nicht beeinflusst, sie geben einfach jeder binären Variablen, die von der codierten Variablen erzeugt wird, ein Gewicht.
Bei nächsten Nachbarn und auf Ähnlichkeit basierenden Methoden (wie Kernel-SVMs) sollte die Auswirkung ebenfalls begrenzt sein. Unabhängig von der Anzahl der Spalten ist am Ende nur das innere Produkt oder der Abstand zwischen zwei Zeilen Ihrer Daten von Bedeutung. Die Anzahl der Spalten, die sich aus einer nominalen Variablen ergeben, der Abstand (oder das innere Produkt) kann jedoch nur 0 oder 1 sein (die nominalen Variablen waren gleich oder nicht).
Wenn unser Klassifikatormodell die Beziehungen zwischen Variablen kennt, würde es dann nicht unnötig versuchen, Beziehungen zwischen eingeführten binären "Komponenten" derselben Variablen zu finden?
Wie ist sich Ihr Klassifikator der Beziehungen zwischen Variablen "bewusst"? Ich bin nicht sicher, ob ich diese Frage beantworten kann.
Und wenn ja, wie könnte dies angegangen werden?
Bei jedem Verfahren, das sich auf Stichproben der Spalten stützt, könnten die Spalten vorher gewichtet werden (so dass sie nicht mit den gleichen Wahrscheinlichkeiten ausgewählt werden). Ich habe jedoch keine Implementierungen im Sinn, die dies tun. Eine schnelle Lösung könnte darin bestehen, die anderen Spalten zu wiederholen, so dass die Wahrscheinlichkeit einer künstlichen Auswahl zunimmt.
quelle