Powiedzmy, że chcę utworzyć klasyfikator logistyczny do filmu M. Moje funkcje to coś w rodzaju wieku osoby, płci, zawodu, lokalizacji. Więc zestaw treningowy wyglądałby tak:
- Wiek Płeć Zawód Lokalizacja Lubię (1) / Nie lubię (0)
- 23 M Oprogramowanie US 1
- 24 F Doctor UK 0
i tak dalej .... Teraz mam pytanie, jak skalować i przedstawiać moje funkcje. Pomyślałem jeden sposób: Podziel wiek na grupy wiekowe, więc 18-25, 25-35, 35-powyżej, Płeć jako M, F, Lokalizacja jako USA, Wielka Brytania, Inne. Teraz utwórz funkcję binarną dla wszystkich tych wartości, dlatego wiek będzie miał 3 funkcje binarne, każda odpowiadająca grupie wiekowej i tak dalej. Tak więc 28-letni mężczyzna z USA byłby reprezentowany jako 010 10 100 (010-> Grupa wiekowa 25-35, 10 -> Mężczyzna, 100 -> USA)
Jaki może być najlepszy sposób na przedstawienie funkcji tutaj? Zauważyłem też w niektórych np. sklearn, że wszystkie funkcje zostały w jakiś sposób skalowane / znormalizowane, np. Płeć jest reprezentowana przez dwie wartości, 0,0045 i -0,0045 dla mężczyzny i kobiety. Nie mam pojęcia, jak skalować / mormalizować w ten sposób?
źródło
Odpowiedzi:
Sprawa binarna
Jeśli chcesz, aby Twoje cechy, aby być binarny, dobre reprezentacje na kategoryczne (odp. Realny ) wartości stanowią jeden gorący (resp. Termometr ) kodującego. Ty nie musisz ich normalizacji.
Dla jednego hot kodowania z kategorycznym funkcji, wystarczy zarezerwować jeden bit dla każdej klasy. Długość tego kodowania jest więc liczbą klas twojej funkcji. Weźmy przykład kraju,
W przypadku kodowania termometrem funkcji rzeczywistej / całkowitej należy wybrać długość i progi. Jako przykład wieku wybrałeś podział wieku według progów 18, 25 i 35. Kodowanie będzie
Ciągły przypadek
Jak powiedział BGreene, powinieneś następnie znormalizować tę wartość, aby zachować średnią 0 i odchylenie standardowe 1, co zapewnia stabilność wielu modeli regresji. W tym celu wystarczy odjąć średnią empiryczną i podzielić przez standardowe odchylenie empiryczne.
źródło