Wiele algorytmów uczenia maszynowego, na przykład sieci neuronowe, oczekuje obsługi liczb. Tak więc, jeśli masz dane kategoryczne, musisz je przekonwertować. Przez kategoryczne rozumiem na przykład:
Marki samochodów: Audi, BMW, Chevrolet ... ID użytkownika: 1, 25, 26, 28 ...
Mimo że identyfikatory użytkowników są liczbami, są tylko etykietami i nie oznaczają niczego w kategoriach ciągłości, takich jak wiek lub suma pieniędzy.
Tak więc podstawowe podejście wydaje się wykorzystywać wektory binarne do kodowania kategorii:
Audi: 1, 0, 0 ... BMW: 0, 1, 0 ... Chevrolet: 0, 0, 1 ...
Jest OK, gdy jest kilka kategorii, ale poza tym wygląda to trochę nieefektywnie. Na przykład, gdy masz 10 000 identyfikatorów użytkowników do zakodowania, to 10 000 funkcji.
Pytanie brzmi, czy jest lepszy sposób? Może z udziałem prawdopodobieństw?
źródło
Odpowiedzi:
Zawsze możesz traktować swoje identyfikatory użytkownika jak worek słów: większość klasyfikatorów tekstu radzi sobie z setkami tysięcy wymiarów, gdy dane są rzadkie (wiele zer, których nie musisz przechowywać jawnie w pamięci, na przykład, jeśli używasz skompresowanych wierszy rzadkich reprezentacja macierzy danych).
Pytanie jednak brzmi: czy warto traktować identyfikatory użytkowników jako funkcje? Czy nie byłoby rozsądniej denormalizować danych relacji i używać funkcji użytkownika (wiek, lokalizacja, charakterystyka pseudonimu online, historia transakcji ...) zamiast ich identyfikatorów?
Możesz także przeprowadzić grupowanie surowych wektorów użytkownika i użyć N najlepszych najbliższych centrów jako aktywowanych funkcji zamiast identyfikatorów użytkownika.
źródło
Kodowanie równoboczne jest prawdopodobnie tym, czego szukasz, próbując zakodować klasy w sieci neuronowej. Zwykle działa lepiej niż kodowanie „1 z n”, o którym mowa w innych postach. W celach informacyjnych mogę zasugerować: http://www.heatonresearch.com/wiki/Equilateral
źródło