¿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!
Respuestas:
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 .
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 ω
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 categorical
le dará muchas referencias para leer. Aquí hay algunos que analicé brevemente:Gerhard Tutz, Regresión para datos categóricos, ver págs. 175-175 en Google Books . Tutz menciona los siguientes cuatro documentos:
Land y Friedman, 1997, Fusión variable: un nuevo método de regresión de señal adaptativa
Bondell y Reich, 2009, Selección simultánea de factores y niveles de colapso en ANOVA
Gertheiss y Tutz, 2010, modelado disperso de variables explicativas categoriales
Tibshirani y col. 2005, la dispersión y la suavidad a través del lazo fusionado es algo relevante incluso si no es exactamente lo mismo (se trata de variables ordinales)
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:
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:
fuente
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.
fuente
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).
fuente
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.
fuente
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.
fuente
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:
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.
fuente