mathematical-modeling-in-engineering
Cómo manejar las variables categóricas en los modelos de árboles de decisión
Table of Contents
Introducción: Por qué las variables cateóricas importan en los árboles de decisión
Este modelo de soporte de la decisión es uno de los algoritmos de aprendizaje de la máquina más interpretables, haciéndolos una opción de clasificación y tareas de regresión en ámbitos como la financiación, la atención médica y la comercialización. Sus reglas de decisión transparente permiten a los interesados comprender por qué se hace una predicción. Sin embargo, el rendimiento y la confiabilidad de un árbol de decisión dependen en gran medida de cómo se preprocesan las variables categóricas.
Comprensión de variables cagorísticas
Las variables categóricas representan datos que pueden tener un número limitado y fijo de valores posibles. Se encuentran en dos tipos principales:
- Variables nominales] – categorías sin orden intrínseco (por ejemplo, color: rojo, azul, verde; ciudad: Nueva York, Londres, Tokio).
- Variables ordinal] – categorías con un orden claro y significativo (por ejemplo, nivel educativo: secundaria, licenciatura, maestría, doctorado; satisfacción: bajo, medio, alto).
La distinción es crítica porque cada tipo requiere una estrategia de codificación diferente para preservar la información inherente al orden. Los árboles de decisión tratan inherentemente las características como si fueran continuas evaluando los umbrales de división; para características categóricas sin codificación, el árbol sólo puede realizar divisiones binarias basadas en si una categoría está presente o no (cuando se utiliza una instantánea) o tratar etiquetas de enteros como se ordenó (cuando se utiliza el método de codificación de etiquetas).
Métodos comunes de codificación
Existen varias técnicas de codificación, cada una con desvíos en términos de dimensionalidad, interpretación y compatibilidad con algoritmos de árboles de decisión. A continuación examinamos los métodos más utilizados.
Codificación de etiquetas (Codificación de la ordina)
La codificación de etiquetas asigna un entero único a cada categoría, típicamente 0, 1, 2,... para las categorías K. Este método es sencillo y eficiente en memoria porque no aumenta el número de características. Sin embargo, implica una relación ordinaria artificial que puede engañar un árbol de decisión. Por ejemplo, un árbol podría aprender que la división ]]]
Cuando se utiliza:] Sólo para las características ordinal categóricas donde el orden entero refleja la verdadera jerarquía. Muchas implementaciones de scikit‐learn requieren que usted suministre el orden correcto manualmente a través de una asignación, o use con una lista de categorías predefinidas.
Codificación de 1 minuto
El codificación de un solo toque crea variables de dummy binario K, cada una representando la presencia (1) o ausencia (0) de una categoría. Este método elimina cualquier orden artificial y es generalmente seguro para datos nominales. La mayoría de las bibliotecas de los árboles de decisión, incluyendo scikit‐learn , trabajan bien con características de una sola instantánea porque las divisiones son simples “está categoría presente?” pruebas.
]Drawbacks: Sufrirá el ]]curso de la dimensionalidad cuando K es grande. Una columna con 1000 valores únicos inflará el espacio de características por 999 columnas, aumentando el uso de la memoria y el tiempo de entrenamiento. Además, la codificación de un solo toque puede conducir a la esparidad de datos, que puede degradar el rendimiento muy profundo.
Consejo práctico:] Un código de contacto sólo después de dividir los datos en conjuntos de entrenamiento y prueba para evitar fugas de datos. Dejar una categoría (utilizar en pandas get dummies) para modelos lineales, pero para los árboles de decisión que mantienen todas las columnas K generalmente está bien porque el árbol las tratará de forma independiente.
Frecuencia / Codificación de objetivos
La codificación de frecuencias reemplaza a cada categoría por su conteo (o frecuencia relativa) en el conjunto de entrenamiento. La codificación de objetivos reemplaza las categorías con la media de la variable de destino para esa categoría (o una versión lisa). Estos métodos son populares para características de alta cardiopatía porque evitan la ampliación de la matriz de características.
Advertencia:] Objetivo de codificación filtra información sobre el objetivo en la característica, que puede causar sobreconfiguración severa si no se maneja con la validación cruzada o el suavizado. LightGBM y CatBoost ofrecen codificación de objetivos incorporados con regularización que mitigue este riesgo. Para otras bibliotecas, utilice un conjunto de retención separado o aplique un esquema de compvalidación cruzada.
La codificación de frecuencias no filtra el objetivo, pero pierde la correlación entre la categoría y el objetivo. Funciona mejor cuando la frecuencia en sí es predictiva (por ejemplo, las categorías raras indican comportamientos más avanzados).
Codificación binaria
El encoding binario convierte primero categorías a etiquetas enteros (0 a K‐1) y luego representa cada entero en forma binaria, creando nuevas columnas log2(K). Es un compromiso entre la codificación de una instantánea y la etiqueta: produce menos características que divisiones de una instantánea pero menos interpretables. Algunos practicantes lo encuentran eficaz para características de alta cardiopatía en modelos basados en árboles.
Hashing Encoding
El corte de la característica (o el truco de la piratería) aplica una función de hash a cada categoría y toma el modulo del número de contenedores de salida. Esto puede reducir drásticamente las dimensiones y es útil cuando el número de categorías es enorme (por ejemplo, direcciones IP). Sin embargo, las colisiones (diferentes categorías de asignación a la misma cubo) pueden degradar la calidad del modelo. Es raramente la primera opción para los árboles de decisiones a menos que las limitaciones de memoria son severas.
Apoyo nativo en las bibliotecas de árboles de decisión
Las bibliotecas modernas de impulso de gradientes han desarrollado un manejo categórico nativo que a menudo supera la codificación manual. Entendiendo lo que ofrece cada biblioteca puede ahorrar tiempo y mejorar la precisión.
scikit‐learn (DecisionTree / RandomForest / GradientBoosting)
scikit‐learn no ] maneja características categóricas. Toda entrada debe ser numérica. Usted debe codificar variables categóricas antes de alimentarlas en el modelo. Sin embargo, versiones recientes (≥0.24) introducidas y que aceptan características categóricas directamente a través del parámetro limitado
scikit‐learn OrdinalEncoder documentation
LightGBM
LightGBM tiene un excelente soporte nativo para características categóricas. Simplemente declara la característica como (o utiliza el parámetro ). En el interior utiliza un algoritmo que agrupa categorías basadas en las estadísticas de gradiente del objetivo, encontrando divisiones óptimas sin una expansión de instantánea. Esto es tanto rápido como eficiente en memoria, especialmente para columnas de alta cardionidad.
Soporte de características clasificadas de Ligero (
CatBoost
CatBoost está diseñado específicamente para manejar características categóricas de forma óptima. Se aplica codificación de objetivos ordenada con un enfoque basado en la permutación que reduce la fuga de objetivos y la sobreajuste. Por defecto, CatBoost trata todas las características como numéricas a menos que estén marcadas explícitamente como categóricas a través de .
CatBoost categorical features documentation
XGBoost
A partir de la versión 1.6, XGBoost introdujo soporte experimental para características categóricas a través del parámetro y el argumento . Utiliza un enfoque basado en divisiones similar a LightGBM. Sin embargo, la implementación sigue madurando; muchos practicantes siguen utilizando codificación manual con XGBoost.
Elegir la Estrategia de codificación adecuada
La selección de un método de codificación depende de varios factores:
- Cardinalidad] – Para características nominales de baja cardinidad (≤10 categorías), la codificación de un solo toque es simple y eficaz. Para la cardenalidad moderada (10–100), considere la codificación binaria o codificación de objetivos. Para la elevada cardenalidad (cada 1); el apoyo nativo (LightGBM/CatBoost) o la frecuencia/encodización de objetivos.
- Modeloteca] – Si ya estás usando CatBoost o LightGBM, deja que la biblioteca maneje categóricas. Para scikit‐learn, debes codificar manualmente.
- ) Orden de categorías] – Las características ordinal deben usar el codificación ordinal. La codificación de etiquetas sin el orden de preservación es arriesgado para datos nominales.
- Interpretabilidad] – Las características codificadas de un solo toque producen divisiones transparentes (por ejemplo, ). La codificación binaria o de objetivos reduce la interpretabilidad, que puede ser aceptable para tareas centradas en la predicción pero no para requisitos regulatorios.
- Profundidad y sobreajuste – La codificación de objetivos puede causar sobreajuste si no regularizado; la codificación de una dosis de calor puede llevar a divisiones muy poco profundas para categorías raras. La validación cruzada y la afinación de hiperparametro se vuelven más importantes con las codificaciónes más sofisticadas.
Manejo de características de alta cardinalidad
Las características clasificatorias de alta-cardinidad (por ejemplo, códigos ZIP, IDs de usuario, IDs de producto) son notoriamente difíciles. La codificación tradicional de una sola instantánea crea miles de columnas de muñeco, muchas de las cuales aparecen en sólo unas pocas filas.
- Aumentar el uso de la memoria y el tiempo de entrenamiento dramáticamente.
- Causar que el árbol se divida en categorías raras que no generalizan.
- Hacer que el modelo sea sensible a las nuevas categorías que aparecen en la producción (si no se maneja con una captura “no conocida”).
Las soluciones incluyen:
- Evento encodificación con suavidad] – Reemplazar cada categoría con el objetivo medio, pero reducir las estimaciones para pequeñas categorías hacia el medio global. La codificación de objetivos ordenada de CatBoost es una aplicación robusta.
- Codificación de frecuencia] – Usar el recuento de cada categoría como una característica numérica. Esto a menudo funciona bien con los modelos de árboles porque las categorías frecuentes son más propensas a ser confiables.
- La piratería] – Las categorías de mapas a un número fijo de bins (por ejemplo, 2^16) utilizando una función de hash. Esta es una opción práctica para la cardenalidad muy alta, pero puede introducir ruido de colisiones.
- Grouping rare categories] – Combine todas las categorías que aparecen menos que, digamos, 5 veces en un único grupo “otro”; esto reduce la cardinalidad y estabiliza el modelo.
- Usando métodos específicos de árboles – Las bibliotecas como LightGBM pueden manejar las cardenalidades hasta varios miles de eficientemente sin explotar la matriz de características porque aprenden a las categorías de grupos internamente.
Impacto en el rendimiento modelo e interpretación
El método de codificación afecta directamente tanto la exactitud como la interpretación de los árboles de decisión. Por ejemplo, una codificación de un solo toque produce divisiones que son fáciles de explicar: “si la ocupación es ‘motor’ luego rama izquierda.” En contraste, la codificación de etiquetas puede producir condiciones de división como “ocupación >= 3.5”, que es sin sentido a menos que las etiquetas correspondan a un orden verdadero. La estructura del árbol puede ser menos intuitiva.
Desde una perspectiva de rendimiento, la elección puede alterar las variables seleccionadas como divisiones de raíz. La codificación incorrecta puede hacer que el árbol favorezca las características que aparecen con más frecuencia o tienen mayor variabilidad en valores codificados, lo que conduce a divisiones suboptimales. Los experimentos han demostrado que usando la codificación ordinal correcta (por ejemplo, mapear la educación nivel a 0,12,3) mejora constantemente la precisión sobre la codificación de etiquetas simples en función ordinal uno de etiquetas a menudo nominal.
]Objetivos de investigación: Un estudio de 2020 que compara los métodos de codificación para los árboles gradiente-boosted encontró que la manipulación categórica incorporada de CatBoost logró el error de generalización más bajo en una variedad de conjuntos de datos, seguido de la codificación de objetivos con la validación cruzada, mientras que la codificación de un solo toque se realizó mejor para la cardenalidad muy baja.
Consejos prácticos y mejores prácticas
- Siempre dividido antes de la codificación] – Computar estadísticas de codificación (por ejemplo, los medios de destino, frecuencias) en el conjunto de entrenamiento solamente, luego aplicar las mismas asignaciones al conjunto de pruebas. Nunca utilice el conjunto de datos completo para calcular las codificacións.
- Usar un oleoducto] – En la scikit‐learn, combinar y encoders en un para evitar fugas de datos y simplificar la validación cruzada.
- Comprobar categorías invisibles] – En producción pueden aparecer nuevas categorías. Decide sobre una estrategia: ignorar (drop), mapear un valor especial “no conocido”, o mantener un retroceso (por ejemplo, media global para la codificación de objetivos).
- Prueba múltiples codificacións] – El mejor método depende del conjunto de datos. Ejecute un pequeño experimento de validación cruzada que compare una instantánea, etiqueta, frecuencia y codificación de objetivos (con la validación adecuada) de un conjunto de validación.
- Apoyo nativo de distancia cuando sea posible – Si eres libre de elegir la biblioteca modelo, elige CatBoost o LightGBM para evitar dolores de cabeza de codificación manuales, especialmente con características de alta cardiopatía.
- Mantente atento de la codificación de etiquetas para datos nominales] – Casi siempre daña el rendimiento. Si debes usar la codificación de etiquetas (por ejemplo, debido a limitaciones de memoria), al menos aleatoriza la asignación de etiquetas para reducir el efecto de pedido espurioso.
- Categorías raras de color o grupo – Una buena regla de pulgar: combina categorías que aparecen en menos del 1% de los datos de entrenamiento en un solo grupo. Esto reduce el ruido y estabiliza el modelo.
- Esperar la fuga de datos en la codificación de objetivos] – Utilizar siempre la validación cruzada o los pliegues separados para calcular los medios de destino, o utilizar bibliotecas que implementen el pedido (como CatBoost). La codificación de objetivos conducidos puede causar un rendimiento sobre-optimista durante la validación y la mala generalización.
Conclusión
Las variables categóricas son una parte fundamental de muchos conjuntos de datos del mundo real. Mientras que los modelos de árboles de decisión son robustos e interpretables, su éxito se centra en la preparación correcta de características categóricas. Este artículo ha cubierto las principales estrategias de codificación: etiqueta, instantánea, frecuencia, objetivo, binario y escoces, así como las capacidades nativas de las bibliotecas populares basadas en árboles.
- Coincide con el encoding al tipo variable (ordinal vs. nominal).
- Para características de alta cardiopatía, prefiera codificación de objetivos con regularización o utilizar bibliotecas con soporte categórico incorporado.
- Evite las fugas de datos computando codificacións sólo en datos de entrenamiento.
- Experimente con diferentes métodos usando la validación cruzada para encontrar la mejor configuración para su conjunto de datos específico.
Al manejar cuidadosamente variables categóricas, puede desbloquear todo el potencial de los modelos de árboles de decisión, lo que permite una mejor precisión predictiva manteniendo la interpretabilidad que hace que los árboles sean tan valiosos.