Es bien sabido que muchos Los modelos de aprendizaje automático no pueden procesar características categóricas de forma nativa. Si bien existen algunas excepciones, generalmente corresponde al profesional decidir sobre una representación numérica de cada característica categórica. Hay Muchas maneras para lograr esto, pero una estrategia que rara vez se recomienda es codificación de etiquetas.
La codificación de etiquetas reemplaza cada valor categórico con un número arbitrario. Por ejemplo, si tenemos una característica que contiene letras del alfabeto, la codificación de etiquetas podría asignar a la letra «A» un valor de 0, a la letra «B» un valor de 1 y continuar este patrón hasta «Z», a la que se le asigna 25. Después de este proceso, técnicamente hablando, cualquier algoritmo debería poder manejar la característica codificada.
¿Pero cuál es el problema con esto? ¿No deberían los modelos sofisticados de aprendizaje automático poder manejar este tipo de codificación? ¿Por qué a las bibliotecas les gusta impulso de gato y otras estrategias de codificación ¿Existe para tratar características categóricas de alta cardinalidad?
Este artículo explorará dos ejemplos que demuestran por qué La codificación de etiquetas puede ser problemática para los modelos de aprendizaje automático. Estos ejemplos nos ayudarán a apreciar por qué hay tantos alternativas para etiquetar la codificación y profundizará nuestra comprensión de la relación entre la complejidad de los datos y el rendimiento del modelo.
Una de las mejores formas de adquirir intuición para un concepto de aprendizaje automático es comprender cómo funciona en un espacio de baja dimensión e intentar extrapolar el resultado a dimensiones superiores. Esta extrapolación mental no siempre se alinea con la realidad, pero para nuestros propósitos, todo lo que necesitamos es una característica única para ver por qué necesitamos mejores estrategias de codificación categórica.
Una característica con 25 categorías
Comencemos mirando un conjunto de datos de juguetes básico con una característica y un objetivo continuo. Aquí están las dependencias que necesitamos:
import numpy as np
import polars as pl
import matplotlib.pyplot as plt
from sklearn.preprocessing import LabelEncoder
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from…