Wygląda na to, że rozumiesz, że możesz mieć n
poziomy, w przeciwieństwie do n-1
, ponieważ w przeciwieństwie do regresji liniowej nie musisz martwić się o idealną kolinearność.
(Podchodzę do tego z perspektywy R., ale zakładam, że tak samo jest w Pythonie.) To zależy od kilku rzeczy, takich jak 1) jakiego pakietu używasz i 2) ile poziomów czynników masz.
1) Jeśli używasz randomForest
pakietu R , to jeśli masz <33 poziomy współczynników, możesz iść dalej i pozostawić je w jednej funkcji, jeśli chcesz. Jest tak, ponieważ w losowej implementacji lasu R sprawdzi, które poziomy czynników powinny znajdować się po jednej stronie podziału, a które po drugiej (np. 5 z twoich poziomów może być zgrupowanych po lewej stronie, a 7 może być zgrupowanych razem po prawej). Jeśli podzielisz funkcję kategorialną na n
manekiny, algorytm nie będzie miał do dyspozycji tej opcji.
Oczywiście, jeśli konkretny pakiet, którego używasz, nie obsługuje funkcji jakościowych, musisz po prostu utworzyć n
zmienne zastępcze.
2) Jak wspomniałem powyżej, losowa implementacja lasu R może obsłużyć tylko 32 poziomy czynników - jeśli masz ich więcej, musisz podzielić swoje czynniki na mniejsze podzbiory lub utworzyć zmienną zastępczą dla każdego poziomu.
randomForest
jakościowe są kodowane automatycznie, powinienem pójść zn
manekinami, ponieważ kolinearność nie jest problemem dla RF?sklearn
... Praktycznie jest dowód (doświadczenie praktyczne, badania itp.), Że „zmumifikowane” zmienne będą działały gorzej niż „zgrupowane” zmienne kategoryczne [w R]Istnieje inne podejście do radzenia sobie ze zmiennymi kategorialnymi, które nazywa się kodowaniem docelowym / uderzeniowym.
W tym schemacie chodzi o zakodowanie obiektu za pomocą pojedynczej kolumny zmiennoprzecinkowej, w której wartość jest średnią zmiennej docelowej we wszystkich wierszach, które dzielą tę kategorię. Jest to szczególnie przydatne w przypadku modeli opartych na drzewach, ponieważ narzuca relację rzędu w obrębie cechy (tj. Wartości po prawej stronie kategorii mają wyższą średnią odpowiedź niż wartości po lewej) i ułatwia podział przestrzeni predyktorów.
Oto ładne wyjaśnienie tego tematu:
https://towardsdatascience.com/why-you-should-try-mean-encoding-17057262cd0
A oto link do artykułu, w którym pierwotnie zaproponowano kodowanie: http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.pdf
Jest jeszcze kilka szczegółów, aby uniknąć oszacowania średniej w kategoriach o niskiej liczbie, a także istnieje inny model, CatBoost, proponujący rozwiązanie promowania wprowadzonego przez to kodowanie, ale z mojego doświadczenia jest to prosty i bardzo użyteczny sposób kodowania zmiennych kategorialnych o wysokiej liczności .
źródło