Aby użyć SVM lub sieci neuronowej, należy przekształcić (zakodować) zmienne kategorialne w zmienne numeryczne, normalną metodą w tym przypadku jest użycie wartości binarnych 0-1 z przekształconą k-tą wartością kategorialną na (0,0, .. ., 1,0, ... 0) (1 jest w pozycji k-tej). Czy istnieją inne metody, aby to zrobić, zwłaszcza gdy istnieje duża liczba wartości jakościowych (np. 10000), tak że reprezentacja 0-1 wprowadzi dużą liczbę dodatkowych wymiarów (jednostek wejściowych) w sieci neuronowej, co wydaje się niezupełnie pożądane lub oczekiwane ?
Pytam o ogólne strategie.
machine-learning
neural-networks
categorical-data
svm
categorical-encoding
użytkownik68589
źródło
źródło
Odpowiedzi:
W NLP, w którym słowa są zwykle kodowane jako 1-z-k, ostatnio pojawiło się stosowanie osadzania słów. Strona Wikipedii z odnośnikami to dobry początek.
Ogólną ideą jest nauczenie się reprezentacji wektorowej dla każdego słowa i, gdzie semantycznie podobne słowa są blisko w tej przestrzeni. W związku z tym dane wejściowe mają rozmiar n zamiast rozmiaru słownictwa.xja∈ R.n ja n
Może możesz przenieść ten pomysł do swojego ustawienia.
źródło
Metody „standardowe” to: kodowanie „na gorąco” (o czym wspomniałeś w pytaniu). Jeśli istnieje zbyt wiele możliwych kategorii, ale potrzebujesz kodowania 0-1, możesz użyć sztuczki haszującej .
Inną często stosowaną metodą jest uśrednianie odpowiedzi według kategorii: patrz zdjęcie z komentarza w kaggle .
źródło
Możesz używać
dummyVars
w R zcaret
pakietu. Automatycznie utworzy różne kolumny na podstawie liczby poziomów. Następnie możesz użyćcbind
i dołączyć do oryginalnych danych. Inne opcje obejmująmodel.matrix
isparse.model.matrix
.źródło
Możesz wypróbować kodowanie binarne, które jest bardziej kompaktowe i czasami przewyższa jeden raz. Na przykład możesz zaimplementować osadzanie kategoryczne w Keras.
źródło
Możesz użyć kodowania encji , która jest bardziej wyrafinowaną strukturą sieci. Dodaje od 1 dok - 1 ukryte, liniowe neurony między wejściem jakościowym a pierwszą w pełni połączoną warstwą. Ma to za sobą kilka dobrych wyników empirycznych.
„Osadzanie zmiennych kategorialnych” Cheng Guo, Felix Berkhahn
źródło