Welche Algorithmen erfordern eine One-Hot-Codierung?

12

Ich bin mir nie sicher, wann ich eine One-Hot-Codierung für nicht geordnete kategoriale Variablen verwenden soll und wann nicht. Ich benutze es immer dann, wenn der Algorithmus eine Distanzmetrik verwendet, um Ähnlichkeit zu berechnen. Kann jemand eine allgemeine Faustregel geben, welche Arten von Algorithmen erfordern würden, dass nicht geordnete kategoriale Merkmale einmalig codiert werden und welche nicht?

cosmosa
quelle
2
Fragen Sie nach der Notwendigkeit, kategoriale Daten in eine Art von "Kontrastvariablen" oder speziell in einen Dummy-Typ (One-Hot) zu codieren ?
ttnphns
1
Diese Frage ist etwas weit gefasst, aber eine einfache Antwort, die sich mit der Natur von OHE befasst, kann die Verwirrung des OP beseitigen. Das Vorhandensein solcher Antworten impliziert, dass diese Frage beantwortet werden kann. Ich stimme dafür, offen zu lassen.
Gung - Reinstate Monica
@ttnphns ehrlich gesagt weiß ich nicht, was du mit Kontrastvariable meinst. Ich bin nur mit Dummy vertraut.
Cosmosa
Cosmos, Dummy (= Indikator = One-Hot) ist nur eine von vielen Möglichkeiten, kategoriale Cariables in Analysen zu kodieren. Diese Wege werden einheitlich "Kontrastvariablen" genannt. Siehe stats.meta.stackexchange.com/q/4669/3277 und stats.stackexchange.com/a/221868/3277
ttnphns
1
Ich denke, die vollständige Liste, nach der Sie fragen, wird schwer zu erstellen sein.
Mdewey

Antworten:

6

Die meisten Algorithmen (lineare Regression, logistische Regression, neuronales Netzwerk, Support Vector Machine usw.) erfordern eine Art Codierung für kategoriale Variablen. Dies liegt daran, dass die meisten Algorithmen nur numerische Werte als Eingaben verwenden.

Algorithmen, die keine Codierung erfordern, sind Algorithmen, die direkt mit gemeinsamen diskreten Verteilungen wie Markov-Kette / Naive Bayes / Bayesian-Netzwerk, baumbasiert usw. umgehen können .

Zusätzliche Kommentare:

Haitao Du
quelle
Es ist immer noch nicht klar, ob für die meisten Algorithmen eine Hot-Codierung erforderlich ist. Sie sagen nur, dass eine Codierung erforderlich ist. Aber ist es eine heiße Codierung?
Prometheus
4

Kann jemand eine Liste geben, für welche Algorithmen kategoriale Funktionen erforderlich wären, um eine Hotcodierung durchzuführen, und für welche nicht?

AFAIU, es hat mehr mit den bestimmten Daten zu tun , weniger mit dem bestimmten Algorithmus . Insbesondere hängt es davon ab, ob die Kategorien eine sinnvolle Reihenfolge aufweisen oder nicht.

Betrachten Sie zwei Fälle. In der ersten haben Sie die Kategorien schlecht, meh, gut und in der zweiten haben Sie Apfel, Orange, Birne . Im ersten Fall gibt es eine natürliche Ordnung, weil meh wahrscheinlich zwischen schlecht und gut liegt , aber wahrscheinlich passiert nichts Ähnliches bei Apfel, Orange, Birne .

Wenn Sie im ersten Fall eine One-Hot-Codierung vermeiden, "verlieren" Sie die Informationen über die Bestellung. Wenn Sie für den zweiten Fall eine One-Hot-Codierung verwenden, weisen Sie den Kategorien eine Reihenfolge zu, die natürlich nicht zutrifft.

Ich mache es immer dann, wenn der Algorithmus eine Distanzmetrik verwendet, um die Ähnlichkeit zu berechnen.

Warum? Angenommen, eine der Funktionen ist eine kategorische schlechte, meh, gut , und Sie haben drei Instanzen, 1, 2 und 3, in denen sie identisch sind, außer dass 1 schlecht , 2 meh und 3 gut ist. Sie möchten dem Algorithmus wahrscheinlich mitteilen, dass 1 2 ähnlicher ist als 3.

Ami Tavory
quelle
2
Das ist eine gute Antwort. Ich hätte die Frage jedoch klären sollen, um auch nicht geordnete kategoriale Variablen einzubeziehen. In diesem Fall sollte es immer eine Hot-Codierung sein?
Cosmosa
@ cosmos1990 IMHO ist als Faustregel für nicht geordnete kategoriale Daten die One-Hot-Codierung der richtige Weg (im Gegensatz zur Zuweisung numerischer Werte).
Ami Tavory
2

Kein Algorithmus für maschinelles Lernen erfordert eine Hot-Codierung. Es ist eine Methode für den Umgang mit kategorialen Variablen. Dummy-Variablen ist eine andere. Traditionell waren Dummy-Variablen die bevorzugte Lösung. Beispielsweise erstellt die R-Funktion lm () automatisch Dummy-Variablen für kategoriale Daten. Wenn Sie Python und Scikt-Learn verwenden, dann glaube ich, dass viele seiner Algen eine One-Hot-Codierung von kategorialen Variablen erfordern. Ich glaube, dass tensorFlow auch eine One-Hot-Codierung erfordert. Hier können Sie festlegen, wie die Variable codiert werden soll. Es gibt keinen Grund, warum Dummy-Variablen nicht stattdessen im Code verwendet werden könnten. Dies alles muss sich mit der tatsächlichen Code-Implementierung des Algorithmus befassen.

Wie hxd1011 hervorhebt, ist das Problem der Beschreibung des 'Abstandes' zwischen kategorialen Variablen ein heikles Thema. Zusätzlich zu den genannten Entfernungen gibt es auch Jaccard-Entfernungen. Einige ML-Methoden, insbesondere SVMs, sind für kategoriale Daten ungeeignet, und das Hinzufügen kategorialer Variablen kann / wird (beide, Sie entscheiden) zu Modellen mit sehr schlechter Vorhersagekraft führen. Die meisten Ensemble-Modelle verarbeiten kategoriale Daten unverändert und erfordern keine Vorverarbeitung.

meh
quelle