Jakie algorytmy wymagają jednorazowego kodowania?

12

Nigdy nie jestem pewien, kiedy zastosować kodowanie „na gorąco” w przypadku niez uporządkowanych zmiennych kategorialnych, a kiedy nie. Używam go, ilekroć algorytm używa metryki odległości do obliczenia podobieństwa. Czy ktokolwiek może podać ogólną ogólną zasadę, jakie typy algorytmów wymagają, aby niez uporządkowane funkcje kategorialne były zakodowane na gorąco, a które nie?

kosmosa
źródło
2
Czy pytasz o potrzebę zakodowania danych kategorialnych w jakimś rodzaju „zmiennych kontrastowych” lub konkretnie w fikcyjnym (jednorazowym) typie?
ttnphns
1
To pytanie jest dość ogólne, ale prosta odpowiedź, która dotyczy natury BHP, może wyjaśnić zamieszanie PO. Istnienie takich odpowiedzi oznacza, że ​​na to pytanie można odpowiedzieć. Głosuję za pozostawieniem otwartego.
gung - Przywróć Monikę
@ttnphns szczerze mówiąc nie wiem, co rozumiesz przez zmienną kontrastową. Znam tylko manekina.
cosmosa
Kosmos, manekin (= wskaźnik = jeden gorący) jest tylko jednym z wielu sposobów kodowania kategorycznych kariabetów w analizach. Te sposoby jednostkowo nazywane są „zmiennymi kontrastowymi”. Zobacz stats.meta.stackexchange.com/q/4669/3277 i stats.stackexchange.com/a/221868/3277
ttnphns
1
Myślę, że pełna lista, o którą poprosisz, będzie trudna do przygotowania.
mdewey

Odpowiedzi:

6

Większość algorytmów (regresja liniowa, regresja logistyczna, sieć neuronowa, maszyna wektorów wsparcia itp.) Wymaga pewnego rodzaju kodowania zmiennych kategorialnych. Jest tak, ponieważ większość algorytmów przyjmuje tylko wartości liczbowe jako dane wejściowe.

Algorytmy, które nie wymagają kodowania, to algorytmy, które mogą bezpośrednio radzić sobie ze wspólnymi dyskretnymi rozkładami, takimi jak łańcuch Markowa / Naive Bayes / sieć Bayesa, oparte na drzewie itp.

Dodatkowe komentarze:

Haitao Du
źródło
Nadal nie jest jasne, czy wymagane jest jedno gorące kodowanie dla WIĘKSZOŚCI ALGORYTMÓW. Po prostu mówisz, że kodowanie jest wymagane. Ale czy to jedno gorące kodowanie?
Prometeusz
4

Czy ktoś może podać listę algorytmów, które wymagałyby, aby cechy kategoryczne były zakodowane na gorąco, a które nie?

AFAIU, ma więcej wspólnego z konkretnymi danymi , mniej z konkretnym algorytmem . W szczególności zależy to od tego, czy w kategoriach występuje jakiś znaczący porządek, czy nie.

Rozważ dwa przypadki. W pierwszym masz kategorie złe, meh, dobre , aw drugim masz jabłko, pomarańczę, gruszkę . Jest to naturalny porządek w pierwszym przypadku, ponieważ meh jest prawdopodobnie pomiędzy zły i dobry , ale prawdopodobnie nic podobnego dzieje się w jabłko, pomarańcza, gruszka .

Jeśli unikniesz jednorazowego kodowania w pierwszym przypadku, „tracisz” informacje o zamówieniu. Jeśli użyjesz kodowania „na gorąco” dla drugiego przypadku, przypisujesz porządek do kategorii, co z natury nie jest prawdą.

Robię to za każdym razem, gdy algorytm używa metryki odległości do obliczenia podobieństwa.

Czemu? Załóżmy, że jedna z funkcji jest kategorycznie zła, aha, dobra i masz trzy instancje, 1, 2 i 3, w których są one identyczne, z wyjątkiem tego, że 1 jest zła , 2 to meh , a 3 jest dobra. Prawdopodobnie chcesz wyrazić algorytmowi, że 1 jest bardziej podobny do 2 niż do 3.

Ami Tavory
źródło
2
To dobra odpowiedź. Powinienem był wyjaśnić to pytanie, aby uwzględnić również nieporządkowane zmienne kategorialne. W takim przypadku zawsze powinno być zakodowane na gorąco?
cosmosa
@ cosmos1990 IMHO, jako ogólna zasada, w przypadku niez uporządkowanych danych kategorialnych, jednym podejściem jest kodowanie na gorąco (w przeciwieństwie do przypisywania wartości liczbowych).
Ami Tavory
2

Żaden algorytm uczenia maszynowego nie wymaga jednego kodowania na gorąco. Jest to jedna metoda radzenia sobie ze zmiennymi kategorialnymi. Zmienne manekina to kolejne. Tradycyjnie preferowanym rozwiązaniem były zmienne fikcyjne. Na przykład funkcja R lm () automatycznie tworzy zmienne zastępcze dla danych kategorycznych. Jeśli używasz Pythona i scikt-learn, to uważam, że wiele z jego algos wymaga jednorazowego kodowania zmiennych kategorialnych. Uważam, że tensorFlow wymaga również jednokrotnego kodowania. Są to wybory sposobu kodowania zmiennej. Nie ma powodu, dla którego zmienne zastępcze nie mogłyby być użyte w kodzie. Wszystko to musi dotyczyć faktycznej implementacji kodu algorytmu.

Jak wskazuje hxd1011, kwestia opisania „odległości” między zmiennymi kategorycznymi jest delikatną kwestią. Oprócz wspomnianych odległości istnieje również odległość Jaccard. Niektóre metody ML, szczególnie SVM, są nieodpowiednie dla danych jakościowych, a dodanie zmiennych jakościowych może (lub obie, decydujesz) prowadzić do modeli o bardzo słabej mocy predykcyjnej. Większość modeli zestawów obsługuje dane kategoryczne „takie, jakie są” i nie wymagają wstępnego przetwarzania.

meh
źródło