Załóżmy, że twoimi czterema kategoriami są kolory oczu (kod): brązowy (1), niebieski (2), zielony (3), piwny (4) - na razie zapala się heterochromię, fiolet, czerwony, szary itp.
W żaden sposób (co obecnie mogę sobie wyobrazić) nie oznaczałoby, że zielony brązowy lub ten piwny = 2 × niebieski, jak sugerują nasze kody, nawet jeśli 3 = 3 × 1 i 4 = 2 × 2 .= 3 ×= 2 ×3 = 3 × 14 = 2 × 2
Dlatego (chyba że z jakiegoś powodu chcemy , aby takie znaczenie znalazło się w naszych analizach), musimy użyć pewnego rodzaju kodowania. Kodowanie atrapy jest jednym przykładem, który eliminuje takie związki ze statystycznych opowieści, które chcemy opowiedzieć o kolorze oczu. Kodowanie efektów i kodowanie Heckmana to inne przykłady.
Aktualizacja: twój przykład dwóch zmiennych dla czterech kategorii nie zgadza się z moim rozumieniem użycia terminu „kod fikcyjny”, który zazwyczaj pociąga za sobą zastąpienie kategorii (powiedzmy 4) zmiennymi k - 1 fikcyjnymi (sortowanie obserwacji według kategorii):kk - 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
Tutaj kategoria 4 jest kategorią referencyjną, przy założeniu, że w modelu występuje stała, na przykład:
y= β0+ β1re1 + β2)re2 + β3)re3 + ε
gdzie jest średnią wartością y, gdy kategoria = 4, a terminy β związane z każdym manekinem wskazują, o ile y zmienia się z β 0 dla tej kategorii.β0yβyβ0
Jeśli nie masz w modelu stałego ( ), potrzebujesz jeszcze jednego „fałszywego” predyktora (być może rzadziej nazywanego „zmiennymi wskaźnikowymi”), w efekcie manekiny zachowują się jak stała modelu dla każdej kategorii :β0
y= β1re1 + β2)re2 + β3)re3 + β4re4 + ε
To by pomogło rozwiązać problem tworzenia bezsensownych ilościowych związków między kodami kategorii, o których wspomniałem na początku, ale dlaczego nie zastosować kodowania user12331, jak sugerujesz? kod A użytkownik 12331 kandydat 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
masz całkowitą rację, wskazując, że można przedstawić 4 wartości za pomocą 2 zmiennych binarnych (tj. dwóch bitów). Niestety, jedno podejście do tego (kod 1 dla kategorii 1 i 2 oraz kod 2 dla kategorii 3 i 4) pozostawia niejednoznaczność wskazywaną przez znaki zapytania: jakie wartości by tam poszły ?!
A co z drugim podejściem, nazwij go kandydatem B kodującym użytkownika12331:
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
Tam! Bez dwuznaczności, prawda? Dobrze! Niestety, całe to kodowanie reprezentuje wartości liczbowe 1–4 (lub 0–3) w notacji binarnej , co pozostawia nienaruszony problem nadania tych niepożądanych zależności ilościowych kategoriom.
Stąd potrzeba innego schematu kodowania.
β
Podchodzę do tego pytania, że kodowanie czterech możliwych stanów za pomocą tylko dwóch zmiennych jest mniej ekspresyjne przy niektórych algorytmach uczenia maszynowego niż przy użyciu 4 zmiennych.
Na przykład wyobraź sobie, że chcesz przeprowadzić regresję liniową, a twoje prawdziwe mapowanie odwzorowuje wartości 0,1 i 2 na 0 oraz wartość 3 na 1. Możesz szybko sprawdzić, czy nie ma możliwości uczenia się tego mapowania za pomocą regresji liniowej podczas kodowania twoja zmienna kategorialna z tylko dwoma zmiennymi binarnymi (po prostu spróbuj dopasować odpowiednią płaszczyznę do twojej głowy). Z drugiej strony, gdy użyjesz kodowania 1-Of-K, nie będzie to problemem.
źródło
Alternatywą jest również kod fikcyjny. Wybierasz sztuczny kod, który najlepiej wyraża relację do zmiennej zależnej. Np. Kolor może być wyrażony jako 1 z n, lub możesz przekształcić się w numeryczne komponenty rgb, lub możesz podzielić na kategorie: girly / muddy / ... 1 z n oznacza w zasadzie, że każda instancja jest uczona osobno, co jest dobre, jeśli nie ma związku. ... ale tam, gdzie istnieje relacja, marnujesz swoje dane .. musisz osobno oszacować współczynnik dla każdego wystąpienia kategorii ... uznać pracę za zmienną kategoryczną. Możesz ponownie sklasyfikować jako sektor rynku i staż pracy.
źródło