¿Forma de principios de colapsar variables categóricas con muchos niveles?

58

¿Qué técnicas están disponibles para contraer (o agrupar) muchas categorías a unas pocas, con el fin de usarlas como entrada (predictor) en un modelo estadístico?


Considere una variable como estudiante universitario mayor (disciplina elegida por un estudiante universitario). Es desordenada y categórica, pero puede tener docenas de niveles distintos. Digamos que quiero usar major como predictor en un modelo de regresión.

El uso de estos niveles tal como está para modelar conduce a todo tipo de problemas porque hay muchos. Se desperdiciaría mucha precisión estadística para usarlos, y los resultados son difíciles de interpretar. Raramente estamos interesados ​​en especializaciones específicas; es mucho más probable que nos interesen las categorías amplias (subgrupos) de especializaciones. Pero no siempre está claro cómo dividir los niveles en categorías de nivel superior, o incluso cuántas categorías de nivel superior utilizar.

Para los datos típicos, me encantaría utilizar el análisis factorial, la factorización matricial o una técnica discreta de modelado latente. Pero las especializaciones son categorías mutuamente excluyentes, por lo que dudo en explotar su covarianza para cualquier cosa.

Además, no me importan las categorías principales por sí mismas. Me importa producir categorías de nivel superior que sean coherentes con respecto a mi resultado de regresión . En el caso de resultados binarios, eso me sugiere algo como el análisis discriminante lineal (LDA) para generar categorías de nivel superior que maximicen el rendimiento discriminativo. Pero LDA es una técnica limitada y eso me parece un dragado de datos sucio. Además, cualquier solución continua será difícil de interpretar.

Mientras tanto, algo basado en covarianzas, como el análisis de correspondencia múltiple (MCA), me parece sospechoso en este caso debido a la dependencia inherente entre variables ficticias mutuamente excluyentes: son más adecuadas para estudiar múltiples variables categóricas, en lugar de múltiples categorías de misma variable

editar : para ser claros, se trata de contraer categorías (no seleccionarlas), y las categorías son predictores o variables independientes. En retrospectiva, este problema parece un momento apropiado para "regularizarlos a todos y dejar que Dios los resuelva". ¡Me alegra ver que esta pregunta es interesante para tanta gente!

Shadowtalker
fuente
2
En mi comentario en stats.stackexchange.com/questions/230636/… ¡Tengo una larga lista de preguntas similares aquí! Eche un vistazo ... Además, busque en este sitio con palabras clave "muchos niveles", encontrará muchas preguntas similares, pocas buenas respuestas.
kjetil b halvorsen
3
Volveré a esto cuando tenga tiempo ... Mientras tanto, el siguiente es un documento muy relevante que parece responder a la pregunta, en parte: epub.ub.uni-muenchen.de/12164/1/petry_etal_TR102_2011. pdf
kjetil b halvorsen
2
No creo que tenga la pregunta, mi impulso natural sería en realidad agregar más variables ficticias para codificar las jerarquías (posiblemente tantas jerarquías diferentes como se pueda imaginar) y luego usar la regularización L1 / L2 para asegurar que las categorías de nivel superior se seleccionan en lugar de las categorías de nivel más fino. El problema con las especialidades, etc. es que obviamente no hay similitud (cuando se representa como una variable ficticia), por lo que para obtener un buen modelo (que permita la generalización) debe proporcionar esa similitud
seanv507
1
@ssdecontrol, sí, mi ejemplo prototípico son los números de teléfono (u otras identificaciones). Básicamente, la respuesta correcta cuando se le pregunta cómo modelar usando estos es: ¡no lo haga!
seanv507
2
Si desea inferir jerarquías, puede buscar esquemas de incrustación de redes neuronales. Esencialmente, utilizan un conjunto reducido de neuronas entre categorías y el resto del modelo, por lo que el modelo debe encontrar proyecciones lineales de categorías similares en la resolución. Es esencialmente una versión no linealizada de máquinas de factorización. tensorflow.org/guide/embedding
seanv507

Respuestas:

41

Si entendí correctamente, imaginas un modelo lineal en el que uno de los predictores es categórico (por ejemplo, especialidad universitaria); y espera que para algunos subgrupos de sus niveles (subgrupos de categorías) los coeficientes puedan ser exactamente los mismos. Entonces, quizás los coeficientes de regresión para Matemáticas y Física sean los mismos, pero diferentes de los de Química y Biología.

En un caso más simple, que tendría un "ANOVA" modelo lineal con un único predictor categórico: donde codifica el nivel de la variable categórica (la categoría). Pero es posible que prefiera una solución que contraiga algunos niveles (categorías) juntos, por ejemplo,i { α 1 = α 2 , α 3 = α 4 = α 5 .

yij=μ+αi+ϵij,
i
{α1=α2,α3=α4=α5.

Esto sugiere que uno puede intentar usar una penalización de regularización que penalizaría las soluciones con diferentes alfa. Un término de penalización que viene inmediatamente a la mente esEsto se asemeja al lazo y debería imponer la escasez de las , que es exactamente lo que desea: desea que muchas de ellas sean cero. El parámetro de regularización debe seleccionarse con validación cruzada.α i - α j ω

L=ωi<j|αiαj|.
αiαjω

Nunca he tratado con modelos como ese y lo anterior es lo primero que se me ocurrió. Entonces decidí ver si hay algo así implementado. Hice algunas búsquedas en Google y pronto me di cuenta de que esto se llama fusión de categorías; la búsqueda lasso fusion categoricalle dará muchas referencias para leer. Aquí hay algunos que analicé brevemente:

Gertheiss y Tutz 2010, publicado en Annals of Applied Statistics, parece un artículo reciente y muy legible que contiene otras referencias. Aquí está su resumen:

Los métodos de reducción en el análisis de regresión generalmente están diseñados para predictores métricos. En este artículo, sin embargo, se proponen métodos de contracción para predictores categoriales. Como aplicación consideramos los datos del estándar de alquiler de Munich, donde, por ejemplo, los distritos urbanos se tratan como un predictor categorial. Si las variables independientes son categoriales, son necesarias algunas modificaciones a los procedimientos habituales de reducción. Dos métodos basados -penalty para la selección de los factores y la agrupación de las categorías se presentan y se investigaron. El primer enfoque está diseñado para niveles de escala nominales, el segundo para predictores ordinales. Además de aplicarlos al estándar de alquiler de Munich, los métodos se ilustran y comparan en estudios de simulación.L1

Me gustan sus caminos de solución tipo lazo que muestran cómo los niveles de dos variables categóricas se fusionan cuando aumenta la intensidad de la regularización:

Gertheiss y Tutz 2010

ameba dice Reinstate Monica
fuente
1
Y sólo después de escribir todo lo que me di cuenta de que @Kjetil dio un enlace a uno de los trabajos de Tutz hace ya una semana ...
ameba dice Restablecer Monica
1
¡Gracias por profundizar en la literatura sobre esto! Este es definitivamente un buen punto de partida, especialmente teniendo un nombre para esta técnica ("fusión") que puedo buscar
shadowtalker
10

He luchado con esto en un proyecto en el que he estado trabajando, y en este punto he decidido que realmente no hay una buena manera de fusionar categorías, así que estoy probando un modelo jerárquico / de efectos mixtos donde mi equivalente a tu especialidad es un efecto aleatorio.

Además, en situaciones como esta parece haber dos decisiones de fusión: 1) cómo fusionar las categorías que tiene cuando se ajusta al modelo, y 2) qué categoría fusionada se convierte en "otra" donde, por defecto, incluirá cualquier nueva mayores que alguien sueña después de que se ajuste a su modelo. (Un efecto aleatorio puede manejar este segundo caso automáticamente).

Cuando la fusión tiene algún juicio involucrado (a diferencia de los procedimientos totalmente automatizados), soy escéptico de la categoría "otro" que a menudo es una bolsa de agarre de las categorías con pocas cosas en ellas en lugar de cualquier tipo de agrupación basada en principios.

Un efecto aleatorio maneja muchos niveles, agrupa dinámicamente ("extrae la fuerza de") diferentes niveles, puede predecir niveles nunca antes vistos, etc. Una desventaja podría ser que la distribución de los niveles casi siempre se supone que es normal.

Wayne
fuente
1
¿Ha visto usar una matriz de proximidad como matriz de distancia para agrupar? stats.stackexchange.com/questions/270201/… ?
Keith
7

Zz1,...,zKYZImpact(Z)

Impact(zk)=E(Y | Z=zk)E(Y)

YYlogitEE

Hay una implementación de Python en la biblioteca category_encoders [2].

Se implementó una variante llamada "codificación de impacto" en el paquete R Vtreat [3] [4]. El paquete (y la codificación de impacto en sí) se describe en un artículo de esos autores de 2016 [5], y en varias publicaciones de blog [6]. Tenga en cuenta que la implementación actual de R no maneja respuestas multinomiales (categóricas con más de 2 categorías) o multivariadas (con valor vectorial).

  1. Daniele Micci-Barreca (2001). Un esquema de preprocesamiento para atributos categóricos de alta cardinalidad en problemas de clasificación y predicción. Boletín de Exploraciones SIGKDD de ACM , Volumen 3, Número 1, julio de 2001, páginas 27-32. https://doi.org/10.1145/507533.507538
  2. Codificadores de categoría. http://contrib.scikit-learn.org/categorical-encoding/index.html
  3. John Mount y Nina Zumel (2017). vtreat: un procesador / acondicionador 'data.frame' estadísticamente sólido. Paquete R versión 0.5.32. https://CRAN.R-project.org/package=vtreat
  4. Win-Vector (2017). vtreat. Repositorio de GitHub en https://github.com/WinVector/vtreat
  5. Zumel, Nina y Mount, John (2016). vtreat: un procesador data.frame para modelado predictivo. 1611.09477v3, impresiones electrónicas ArXiv . Disponible en https://arxiv.org/abs/1611.09477v3 .
  6. http://www.win-vector.com/blog/tag/vtreat/
Shadowtalker
fuente
¿Qué es logit E? ¿Podría por favor compartir la fórmula en sí?
Optimus Prime
@OptimusPrime logit E es el logit de la expectativa
shadowtalker
Bueno. Entonces, en ese caso, Impacto (zk) = log (E (Y | Z = zk) −E (Y)) O Impacto (zk) = log (E (Y | Z = zk)) - log (E (Y) )?
Optimus Prime
2
Este es un aprendizaje supervisado y requerirá ajustes complejos para reconocer el número de grados de libertad que están siendo "robados" de Y.
Frank Harrell,
3
Sin duda, cualquier método que use Y para guiar cómo se manejan las categorías para el predictor categórico estará sujeto a un sobreajuste y será difícil obtener intervalos de incertidumbre que sean lo suficientemente amplios como para ser precisos. Me estaba enfocando en el aprendizaje no supervisado para que esos problemas no ocurran.
Frank Harrell
6

Si tiene una variable independiente auxiliar que es lógico usar como un ancla para el predictor categórico, considere el uso del algoritmo de puntuación óptimo de Fisher, que está relacionado con su análisis discriminante lineal. Suponga que desea asignar la especialidad universitaria en una sola métrica continua, y suponga que un ancla adecuada es un puntaje de prueba cuantitativa SAT de preadmisión. Calcule la puntuación cuantitativa media para cada especialidad y reemplace la especialidad con esa media. Puede extender esto fácilmente a múltiples anclas, creando más de un grado de libertad para resumir las principales.

Tenga en cuenta que, a diferencia de algunas de las sugerencias anteriores, la calificación óptima representa un enfoque de aprendizaje no supervisado, por lo que los grados de libertad (número de parámetros estimados frente a Y) son pocos y están bien definidos, resultando en una inferencia estadística adecuada (si es frecuente, errores estándar precisos, confianza (compatibilidad) intervalos y valores p).

Me gusta mucho la sugerencia de penalización de https://stats.stackexchange.com/users/28666/amoeba @amoeba.

Frank Harrell
fuente
¿Sería tan amable de echar un vistazo a mi pregunta stats.stackexchange.com/q/383887/44368 ? Gracias.
Hans
¿El puntaje óptimo es el método descrito en la diapositiva 15 de esta conferencia ? Es un poco difícil buscar esos términos, todos ellos son comunes en otros contextos.
shadowtalker
1
Estoy seguro de que es 0.85
Frank Harrell
Esto suena como (una mejor) versión de la idea de la codificación de destino del aprendizaje automático, por ejemplo stats.stackexchange.com/questions/398903/…
kjetil b halvorsen
2

El documento " Un esquema de preprocesamiento para atributos categóricos de alta cardinalidad en problemas de clasificación y predicción " aprovecha la estructura jerárquica en los atributos de categoría en un esquema 'empírico Bayes' anidado en cada grupo / nivel para mapear la variable categórica en una probabilidad de clase posterior, que se puede usar directamente o como entrada en otros modelos.

Sealander
fuente
Esto es básicamente lo que sugirió @Wayne (modelos de efectos mixtos ~ versión frecuentista de modelos jerárquicos bayesianos), y lo que sugerí en un comentario para preguntar. Sin embargo, OP quiere inferir jerarquías.
seanv507
1

Aquí hay varias preguntas, y algunas de ellas se hacen y responden antes. Si el problema es que el cálculo lleva mucho tiempo: hay varios métodos para lidiar con eso, vea la regresión a gran escala con una matriz de características dispersas y el documento de Maechler y Bates .

Pero bien podría ser que el problema es con el modelado, no estoy tan seguro de que los métodos habituales de tratamiento de variables predictoras categóricas realmente den una guía suficiente cuando se tienen variables categóricas con muchos niveles, consulte este sitio para ver la etiqueta [many-categories]. Ciertamente, hay muchas maneras en que uno podría intentar, una podría ser (si esta es una buena idea para su ejemplo, no puedo saberlo, no nos dijo su aplicación específica) un tipo de variable (s) jerárquica (s) categórica (s), es decir, inspirada según el sistema utilizado en la clasificación biológica, consulte https://en.wikipedia.org/wiki/Taxonomy_(biology). Allí, un individuo (planta o animal) se clasifica primero en Dominio, luego Reino, Filo, Clase, Orden, Familia, Género y finalmente Especie. Entonces, para cada nivel en la clasificación, podría crear una variable de factor. Si sus niveles son, por ejemplo, productos vendidos en un supermercado, podría crear una clasificación jerárquica comenzando con [alimentos, utensilios de cocina, otros], luego los alimentos podrían clasificarse como [carne, pescado, verduras, cereales, ...] y pronto. Solo una posibilidad, que da una jerarquía previa, no específicamente relacionada con el resultado.

Pero tu dijiste:

Me importa producir categorías de nivel superior que sean coherentes con respecto a mi resultado de regresión.

Luego, puede probar el lazo fusionado , ver otras respuestas en este hilo, que podría verse como una forma de colapsar los niveles en grupos más grandes, basados ​​completamente en los datos, no una organización previa de los niveles como lo implica mi propuesta de una jerarquía organización de los niveles.

kjetil b halvorsen
fuente