Warum müssen wir kategoriale Variablen blind codieren?

22

Ich bin nicht sicher, warum wir kategoriale Variablen Dummy-Code benötigen. Wenn ich zum Beispiel eine kategoriale Variable mit vier möglichen Werten 0,1,2,3 habe, kann ich sie durch zwei Dimensionen ersetzen. Wenn die Variable den Wert 0 hätte, hätte sie 0,0 in zwei Dimensionen, wenn sie 3 hätte, hätte sie 1,1 in zwei Dimensionen und so weiter.

Ich bin mir nicht sicher, warum wir das tun müssen?

user12331
quelle

Antworten:

20

Angenommen, Ihre vier Kategorien sind Augenfarben (Code): braun (1), blau (2), grün (3), haselnussbraun (4) - momentan werden Heterochromie, Violett, Rot, Grau usw. angezeigt.

In keiner Weise (das kann ich mir derzeit vorstellen) meinen wir Grün Braun oder Hasel Blau, wie unsere Codes implizieren, obwohl und .= 2 × 3 = 3 × 1 4 = 2 × 2=3×=2×3=3×14=2×2

Daher müssen wir (es sei denn, wir möchten aus irgendeinem Grund , dass diese Bedeutung in unsere Analysen einfließt) eine Art Codierung verwenden. Dummy-Codierung ist ein Beispiel, bei dem solche Beziehungen aus den statistischen Berichten über die Augenfarbe gestrichen werden. Effektcodierung und Heckman-Codierung sind weitere Beispiele.

Update: Ihr Beispiel für zwei Variablen für vier Kategorien entspricht meines Erachtens nicht dem Begriff "Dummy-Code", bei dem normalerweise Kategorien (z. B. 4) durch Dummy-Variablen ersetzt werden (Sortieren der Beobachtungen nach Kategorien):k - 1kk-1

id  category  dummy1 dummy2 dummy3
 1         1       1      0      0
 2         1       1      0      0
 3         2       0      1      0
 4         2       0      1      0
 5         3       0      0      1
 6         3       0      0      1
 7         4       0      0      0
 8         4       0      0      0

Hier ist Kategorie 4 die Referenzkategorie, sofern in Ihrem Modell eine Konstante vorhanden ist, z.

y=β0+β1d1+β2d2+β3d3+ε

Dabei ist der Mittelwert von wenn Kategorie = 4, und die mit jedem Dummy verknüpften Terme geben an, um wie viel sich von für diese Kategorie ändert . y β y β 0β0yβyβ0

Wenn Sie im Modell keinen konstanten ( ) Term haben, benötigen Sie einen weiteren "Dummy" -Prädiktor (möglicherweise weniger häufig als "Indikatorvariablen" bezeichnet). In der Tat verhalten sich die Dummies dann jeweils als Modellkonstante für jede Kategorie:β0

y=β1d1+β2d2+β3d3+β4d4+ε

Dies würde sich also mit der Frage befassen, wie man unsinnige quantitative Beziehungen zwischen den zuerst erwähnten Kategoriencodes herstellt. Aber warum nicht die von Ihnen vorgeschlagene user12331-Codierung verwenden ? user12331-Kodierungskandidat A:

id  category   code1  code2
 1         1       0      ?
 2         1       0      ?
 3         2       1      ?
 4         2       1      ?
 5         3       ?      0
 6         3       ?      0
 7         4       ?      1
 8         4       ?      1

Sie können zu Recht darauf hinweisen, dass man mit 2 binären Variablen (dh zwei Bits) 4 Werte darstellen kann . Leider hinterlässt ein Ansatz (Code1 für die Kategorien 1 und 2 und Code2 für die Kategorien 3 und 4) die Unklarheit, die durch die Fragezeichen angezeigt wird: Welche Werte würden dahin gelangen ?!

Wie wäre es mit einem zweiten Ansatz? Nennen Sie ihn User12331-Kodierungskandidat B:

id  category   code1  code2
 1         1       0      0
 2         1       0      0
 3         2       0      1
 4         2       0      1
 5         3       1      0
 6         3       1      0
 7         4       1      1
 8         4       1      1

Dort! Keine Mehrdeutigkeit, oder? Recht! Leider stellt diese Codierung nur die numerischen Größen 1–4 (oder 0–3) in binärer Notation dar , was das Problem der Zuordnung dieser unerwünschten quantitativen Beziehungen zu den Kategorien unberührt lässt.

Daher die Notwendigkeit eines anderen Kodierungsschemas.

Ich werde schließen mit dem Vorbehalt , dass die verschiedenen Kodierungsschemata sind mehr oder weniger eine Sache oder Art (zB was macht man ein bestimmtes will bedeuten ) , es sei denn man auch Interaktionsbedingungen mit den Kategorien im Modell enthält. Dann führt die Dummy-Codierung zu einer künstlichen Heteroskedastizität und verzerrt die Standardfehler. In diesem Fall sollten Sie die Effektcodierung beibehalten (es kann auch andere Codierungssysteme geben, die unter diesen Umständen eine sichere Codierung gewährleisten, mit denen ich jedoch nicht vertraut bin).β

Alexis
quelle
5
Während diese Antwort den Grund zeigt, warum wir nicht eine Variable verwenden können (dh, dass wir tatsächlich 'irgendeine Art von Codierung' benötigen), erklärt sie (noch) nicht, warum wir es nicht mit zwei Variablen tun können , wie schlägt das OP in der Frage vor.
Glen_b
@ Glen_b Danke. Ich hoffe mein Update hat geholfen zu adressieren.
Alexis
2
Beachten Sie, dass 2 Binärvariablen ausreichen, um 4 Kategorien [(0,0), (0,1), (1,0), (1,1)] darzustellen. Dies ist jedoch nicht die geeignete Methode, um Code für die Analyse zu ersetzen. Das OP scheint falsch zu codieren.
Ellis Valentiner
@ user12202013 Ja. Wie in meinem letzten Beispiel.
Alexis
Was wäre, wenn ich eine Binärcodierung mit zwei Variablen durchführen würde, wie von OP vorgeschlagen, aber wenn das Ziel die Vorhersage ist, würde ein nicht parametrischer, nicht linearer Klassifizierer / Regressor dann nicht gleich gut funktionieren?
tool.ish
1

Ich gehe von dieser Frage aus, dass die Codierung der vier möglichen Zustände mit nur zwei Variablen bei einigen Algorithmen für maschinelles Lernen weniger aussagekräftig ist als die Verwendung von vier Variablen.

Stellen Sie sich beispielsweise vor, Sie möchten eine lineare Regression durchführen, und Ihre echte Zuordnung ordnet die Werte 0,1 und 2 zu 0 sowie den Wert 3 zu 1 zu. Sie können schnell überprüfen, ob es beim Codieren keine Möglichkeit gibt, diese Zuordnung mit linearer Regression zu erlernen Ihre kategoriale Variable mit nur zwei binären Variablen (versuchen Sie einfach, die entsprechende Ebene in Ihren Kopf einzupassen). Wenn Sie dagegen eine 1-Of-K-Codierung verwenden, ist dies kein Problem.

Tobias
quelle
0

Ihre Alternative ist auch ein Dummy-Code. Sie wählen den Dummy-Code, der die Beziehung zu Ihrer abhängigen Variablen am besten ausdrückt. Zum Beispiel könnte Farbe als 1 von n ausgedrückt werden, oder Sie könnten sich in numerische RGB-Komponenten verwandeln, oder Sie könnten kategorisieren: girly / muddy / ... 1 von n bedeutet im Grunde, dass jede Instanz separat gelernt wird, was gut ist, wenn es keine Beziehung gibt. .. aber wo es eine Beziehung gibt, verschwenden Sie Ihre Daten .. Sie müssen den Koeffizienten für jede Instanz der Kategorie separat schätzen ... Job als kategoriale Variable betrachten. Sie können als Marktsektor und Dienstalter eingestuft werden.

seanv507
quelle