Upuszczenie jednej z kolumn podczas kodowania na gorąco

22

Rozumiem, że w uczeniu maszynowym może być problem, jeśli zestaw danych ma wysoce skorelowane funkcje, ponieważ skutecznie kodują te same informacje.

Ostatnio ktoś zauważył, że gdy wykonujesz kodowanie na gorąco na zmiennej kategorialnej, masz skorelowane cechy, więc powinieneś upuścić jedną z nich jako „odniesienie”.

Na przykład kodowanie płci jako dwóch zmiennych is_malei is_femaledaje dwie cechy, które są całkowicie ujemnie skorelowane, dlatego zasugerowano użycie jednej z nich, skutecznie ustawiając linię podstawową na powiedzenie „mężczyzna”, a następnie sprawdzając, czy kolumna is_female jest ważna w algorytmie predykcyjnym .

To miało dla mnie sens, ale nie znalazłem w Internecie niczego, co mogłoby sugerować, że tak jest, więc czy to źle, czy coś pomijam?

Możliwa (bez odpowiedzi) duplikat: czy kolinearność funkcji zakodowanych w trybie „single hot” ma znaczenie dla SVM i LogReg?

dasboth
źródło
8
you end up with correlated features, so you should drop one of them as a "reference"Zmienne manekina lub zmienne wskaźnikowe (są to dwie nazwy używane w statystykach, synonimiczne dla „kodowania na gorąco” w uczeniu maszynowym) i tak są skorelowane parami, niezależnie od tego, czy wszystkie są zmiennymi k lub k-1. Tak więc lepsze słowo to „statystycznie / zbędne” zamiast „skorelowane”.
ttnphns
Zestaw wszystkich k manekinów jest zestawem wielokoliniowym, ponieważ jeśli znasz wartości manekinów k-1 w danych, automatycznie znasz wartości tego ostatniego manekina. Niektóre metody lub algorytmy analizy danych wymagają upuszczenia jednego z k. Inni są w stanie poradzić sobie ze wszystkimi k.
ttnphns
@ttnphns: dzięki, to ma sens. Czy utrzymywanie wszystkich wartości k teoretycznie czyni je słabszymi cechami, które można / należy wyeliminować dzięki redukcji wymiarów? Jednym z argumentów przemawiających za użyciem PCA jest często usunięcie skorelowanych / zbędnych funkcji. Zastanawiam się, czy utrzymanie wszystkich k zmiennych należy do tej kategorii.
dasboth
Does keeping all k values theoretically make them weaker features. Nie (choć nie jestem w 100% pewien, co rozumiesz przez „słabszy”). using something like PCAZauważ, na wszelki wypadek, że PCA na zestawie manekinów reprezentujących tę samą zmienną kategorialną ma niewiele praktycznych zalet, ponieważ korelacje w zestawie manekinów odzwierciedlają jedynie relacje między częstotliwościami kategorii (więc jeśli wszystkie częstotliwości są równe, wszystkie korelacje są równe do 1 / (k-1)).
ttnphns
Mam na myśli to, że kiedy używasz swojego modelu do oceny ważności cechy (np. Z losowym lasem), czy nie doceni ona ważności tej zmiennej, jeśli uwzględnisz wszystkie wartości k? Czy w takim przypadku otrzymujesz „prawdziwsze” oszacowanie znaczenia płci, jeśli używasz is_malezmiennej, w przeciwieństwie do obu opcji? Może nie ma to sensu w tym kontekście i może to być problem tylko wtedy, gdy dwie różne zmienne faktycznie kodują tę samą informację (np. Wysokość w calach i wysokość w cm).
dasboth

Odpowiedzi:

24

lmglm

W przypadku innych modeli stosuj te same zasady. Jeśli uzyskane prognozy zależą od tego, które kolumny pominiesz, nie rób tego. W przeciwnym razie jest w porządku.

Jak dotąd w tej odpowiedzi wspomniano tylko modele liniowe (i niektóre lekko nieliniowe). Ale co z bardzo nieliniowymi modelami, takimi jak drzewa i losowe lasy? Pomysły na kodowanie kategoryczne, takie jak „jedno-gorące”, wywodzą się głównie z modeli liniowych i rozszerzeń. Nie ma powodu, aby sądzić, że pomysły wywodzące się z tego kontekstu powinny obowiązywać bez modyfikacji drzew i lasów! dla niektórych pomysłów zobacz Losowa regresja lasu z rzadkimi danymi w Pythonie .

β,β2,β3β1=0β2β1,β3β1. So those two differences will be shrinked. If you leave out another column, other contrasts in the original parameters will be shrinked. So this changes the criterion function being optimized, and there is no reason to expect equivalent solutions! If this is not clear enough, I can add a simulated example (but not today).

kjetil b halvorsen
źródło
Mogę się zgodzić, że wybór zmiennej referencyjnej wpłynie na wynik regresji regulowanej, ale nie jestem pewien, czy pozostawienie wszystkich zmiennych w stanie niezmienionym jest lepsze niż odrzucenie jednej. Czy masz na to jakiś powód?
Kota Mori
Cóż, tylko dwie alternatywy ... Utrzymanie wszystkich poziomów utrzymuje niezmienność i nie ma arbitralności. Jeśli masz inne powody, dla których chcesz zmniejszyć liczbę poziomów, takich jak zbyt wiele z nich, powinieneś nam o tym powiedzieć
kjetil b halvorsen