Parece que comprende que puede tener n
niveles, en lugar de hacerlo n-1
, porque a diferencia de la regresión lineal, no necesita preocuparse por una colinealidad perfecta.
(Llego a esto desde una perspectiva R, pero supongo que es lo mismo en Python). Eso depende de un par de cosas, como 1) qué paquete está usando y 2) cuántos niveles de factor tiene.
1) Si está utilizando el randomForest
paquete de R , entonces si tiene <33 niveles de factor, puede continuar y dejarlos en una función si lo desea. Esto se debe a que en la implementación de bosque aleatorio de R, verificará qué niveles de factores deben estar en un lado de la división y cuáles en el otro (por ejemplo, 5 de sus niveles podrían agruparse en el lado izquierdo y 7 podrían agruparse juntos a la derecha). Si divide la característica categórica en n
dummies, entonces el algoritmo no tendría esta opción a su disposición.
Obviamente, si el paquete particular que está utilizando no puede manejar características categóricas, entonces solo necesitaría crear n
variables ficticias.
2) Como mencioné anteriormente, la implementación de bosque aleatorio de R solo puede manejar 32 niveles de factores; si tiene más que eso, entonces necesita dividir sus factores en subconjuntos más pequeños o crear una variable ficticia para cada nivel.
randomForest
se codifican automáticamente, debería ir conn
dummies porque la colinealidad no es un problema para RF.sklearn
... Hablando en términos prácticos, ¿hay evidencia (experiencia práctica, investigación, etc.) de que las variables "dummified" funcionarán peor que las variables categóricas "agrupadas" [en R]Hay otro enfoque para tratar con variables categóricas que se denomina codificación de destino / impacto.
En este esquema, la idea es codificar la entidad utilizando una sola columna flotante en la que el valor es el promedio de la variable objetivo en todas las filas que comparten la categoría. Esto es especialmente útil para los modelos basados en árboles, ya que impone una relación de orden dentro de la característica (es decir, los valores a la derecha de la categoría tienen una respuesta media más alta que los valores a la izquierda) y facilita la división del espacio del predictor.
Aquí hay una buena explicación del tema:
https://towardsdatascience.com/why-you-should-try-mean-encoding-17057262cd0
Y aquí hay un enlace al documento que originalmente propuso la codificación: http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.pdf
Hay algunos detalles más para evitar estimar la media en categorías con recuentos bajos y también hay otro modelo, CatBoost, que propone una solución al sesgo introducido por esta codificación, pero en mi experiencia es una forma simple y muy útil de codificar variables categóricas de alta cardinalidad. .
fuente