Wybierz wiele funkcji kategorycznych: alternatywy dla kodowania na gorąco?
Buduję model do przewidywania wartości klienta od początku życia w oparciu o relacyjne dane, które o nim mamy. Tabela użytkownika zawiera kilka tabel podrzędnych typu jeden do wielu, które mogą być predykcyjne. Rażąco uproszczone funkcje potomne sprowadzają się do takich rzeczy, jak:
- lista kategorii przedmiotów, które kupili w przeszłości
- lista dominujących kolorów w reklamach, w które kliknęli
- itd itd
W każdym przypadku oczywistą cechą jest lista ~ 0-10 opcji do wyboru ze zmiennej kategorialnej. Mam kilka z tych funkcji, z których niektóre mają nawet ~ 10k dyskretnych wartości, więc kodowanie na gorąco byłoby bardzo szerokie i bardzo szybkie.
Na marginesie: jeśli istnieje termin sztuki dla tego rodzaju „funkcji listy tagów”, którą nazywam „wybierz wiele kategorii”, proszę, powiedz mi.
Pytanie: Czy istnieje gęsty schemat kodowania, który działa z wieloma funkcjami kategorycznymi do wyboru?
Odpowiedzi
Jeśli twój algorytm jest oparty na optymalizacji zstępowania gradientu, możesz użyć osadzeń, które są gęstymi przestrzeniami reprezentacji dla elementów dyskretnych.
Osadzenia są obsługiwane przez większość platform uczenia głębokiego, takich jak pytorch lub tensorflow.
Aktualizacja: fakt, że chcesz mieć wiele dyskretnych wartości, nie wyklucza możliwości użycia osadzeń: możesz po prostu dodać wszystkie wektory do jednej wartości. Najprostszym podejściem do tego byłoby ustalenie stałej długości listy (równej maksymalnej liczbie elementów na wszystkich listach lub rozsądnej wartości maksymalnej), wypełniając „dopełnieniem” niepotrzebnych pozycji. Jeśli chcesz wziąć pod uwagę sekwencyjny wygląd elementów, zamiast dodawać razem wektory, możesz zastosować warstwy splotowe lub LSTM na osadzonych wektorach.
Istnieje wiele sposobów kodowania cech kategorialnych w bibliotece koderów kategorii , możesz znaleźć ich wiele.
Ten, który wydaje się bardziej obiecujący, biorąc pod uwagę Twoje dane, to kodowanie docelowe