Próbuję zrozumieć, w jaki sposób mogę kodować zmienne kategorialne za pomocą oszacowania prawdopodobieństwa, ale jak dotąd nie odniosłem sukcesu.
Wszelkie sugestie będą mile widziane.
feature-engineering
mały karzeł
źródło
źródło
Odpowiedzi:
Uczyłem się również tego tematu i oto, co znalazłem:
Ten rodzaj kodowania jest nazywany kodowanie prawdopodobieństwo , wpływ kodowania lub cel kodowania
Pomysł polega na kodowaniu zmiennej jakościowej za pomocą zmiennej docelowej (ciągłej lub jakościowej w zależności od zadania). Na przykład, jeśli masz zadanie regresji, możesz zakodować zmienną kategorialną za pomocą średniej celu. Dla każdej kategorii obliczasz odpowiednią średnią celu (wśród tej kategorii) i zamieniasz wartość kategorii na tę średnią.
Jeśli masz zadanie klasyfikacji, obliczasz względną częstotliwość celu w odniesieniu do każdej wartości kategorii.
Z matematycznego punktu widzenia to kodowanie oznacza prawdopodobieństwo twojego celu, zależne od wartości każdej kategorii.
Jeśli zrobisz to w prosty sposób, jak opisałem powyżej, prawdopodobnie uzyskasz tendencyjne oszacowanie. Dlatego w społeczności Kaggle używają zwykle 2 poziomów weryfikacji krzyżowej. Przeczytaj ten komentarz raddar tutaj . Odpowiedni notatnik jest tutaj .
Cytat:
Kolejna implementacja tego kodowania jest tutaj .
W bibliotece vtreat mają implementację kodowania wpływu. Zobacz ten post .
W bibliotece CatBoost mają wiele opcji kodowania zmiennych jakościowych , w tym kodowania docelowego.
W sklearn nie ma jeszcze takiego kodowania.
źródło
Kodowanie docelowe jest teraz dostępne w sklearn poprzez pakiet category_encoders.
Jak zauważył Josh w powyższym komentarzu.
źródło
Kodowanie prawdopodobieństwa jest nadal niedostępne w scikit learn. Możesz to zrobić, tworząc słownik, a następnie wykonując funkcję zamiany.
źródło