Feature Engineering
La ingeniería de características transforma los datos sin procesar en entradas que un modelo puede aprender con facilidad, mediante conocimientos del dominio. Técnicas clave, riesgos de fuga de datos, usos y código.
La ingeniería de características consiste en crear, transformar y seleccionar las variables de entrada, o características, a partir de las cuales aprende un modelo de aprendizaje automático, utilizando el conocimiento del dominio y de los datos. Una marca de tiempo sin procesar se convierte en la hora del día y el día de la semana; una lista de transacciones con tarjeta se convierte en el gasto de un cliente durante los últimos 30 días, y la distancia y la duración de un viaje se convierten en su velocidad. Las características bien elegidas permiten que un modelo sencillo detecte patrones que, de otro modo, no encontraría. Son especialmente importantes para los datos tabulares y de series temporales, en los que un modelo solo puede utilizar las columnas que recibe. Los modelos de aprendizaje profundo aprenden sus propias características a partir de imágenes, audio y texto sin procesar; esto ha desplazado la ingeniería de características en esos campos hacia la preparación de datos y la creación de características a partir de las salidas del modelo.
Técnicas habituales#
- Escalado y normalización: Estandarizar las características para que tengan media cero y varianza unitaria evita que las características con unidades grandes dominen los modelos basados en distancias y el entrenamiento basado en gradientes; además, una transformación logarítmica comprime valores sesgados, como los ingresos o los precios.
- Codificación de variables categóricas: La codificación one-hot convierte una categoría, como un color, en columnas binarias; la codificación por objetivo sustituye cada categoría por la media del objetivo correspondiente, calculada en particiones separadas para que la codificación no revele la etiqueta de cada propia fila.
- Proporciones e interacciones: La relación entre deuda e ingresos, el precio por metro cuadrado y el índice de masa corporal combinan dos valores sin procesar en la magnitud que realmente determina el resultado.
- Características de fecha y hora: La hora, el día de la semana, el mes y los indicadores de festivos muestran patrones cíclicos; las codificaciones seno y coseno de la hora sitúan las 23:00 junto a las 00:00.
- Retardos y ventanas móviles: Los valores anteriores, las medias móviles y los recuentos de ventanas recientes proporcionan al modelo el historial reciente de un sensor, una cuenta o un producto.
- Agrupación en intervalos: Agrupar valores continuos en rangos, como franjas de edad, permite captar efectos escalonados y limita la influencia de los valores extremos.
- Reducción de dimensionalidad con PCA: El análisis de componentes principales comprime muchas características correlacionadas en unas pocas que no están correlacionadas.
- Selección de características: Los métodos de filtrado ordenan las características según su correlación o información mutua con el objetivo; los métodos envolventes prueban subconjuntos de características con un modelo, y los métodos integrados, como la regularización L1, descartan características durante el entrenamiento.
Una característica de razón muestra por qué funciona. Un árbol de decisión con profundidad limitada solo puede dividirse según una característica cada vez, por lo que aproxima mal la regla «velocidad media superior a 90 km/h» usando únicamente la distancia y la duración, y la aplica exactamente cuando se calcula la velocidad:
import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
# 1,000 trips: raw distance (km) and duration (h); label = average speed above 90 km/h
rng = np.random.default_rng(0)
distance = rng.uniform(10, 300, 1000)
hours = rng.uniform(0.5, 4.0, 1000)
y = (distance / hours > 90).astype(int)
raw = np.column_stack([distance, hours])
engineered = (distance / hours).reshape(-1, 1) # domain knowledge: speed = distance / time
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
for name, X in [("Raw distance and duration", raw), ("Engineered speed", engineered)]:
print(f"{name}: accuracy {cross_val_score(tree, X, y, cv=5).mean():.3f}")Con el mismo árbol de profundidad 2, la precisión de la validación cruzada pasa de 0,861 con la distancia y la duración sin procesar a 1,000 con la característica de velocidad diseñada, porque el límite diagonal en el espacio de distancia y duración se convierte en un único umbral sobre la velocidad.
Validación de características sin fugas de datos#
Una característica solo es válida si se conoce su valor en el momento de hacer la predicción. Un modelo de abandono que usa el «número de llamadas al servicio de asistencia durante el mes posterior a la cancelación», o una codificación del objetivo calculada en todo el conjunto de datos, obtiene buenos resultados en las pruebas y falla en producción: es una forma de fuga de datos. Por tanto, cada transformación con parámetros aprendidos, como las medias del escalador o las codificaciones de categorías, se ajusta solo con los pliegues de entrenamiento, tal como hacen automáticamente las canalizaciones de scikit-learn, y cada característica nueva se conserva únicamente si mejora la puntuación de validación cruzada. Los sistemas de producción también deben calcular cada característica exactamente igual que durante el entrenamiento, algo que resuelven los almacenes de características al ofrecer las mismas definiciones de características a ambos.
Ingeniería de características en visión artificial#
La visión artificial clásica se basaba en características diseñadas manualmente, como mapas de bordes, descriptores de puntos clave SIFT e histogramas de gradientes orientados, que después clasificadores como las máquinas de vectores de soporte etiquetaban. Desde que AlexNet ganó el desafío ImageNet en 2012, las redes neuronales convolucionales aprenden sus propios mapas de características a partir de los píxeles, y el esfuerzo de ingeniería se desplazó hacia los datos de entrenamiento, mediante el aumento de datos, y hacia las salidas de los modelos de visión. El SpeedEstimator de Ultralytics crea una característica de velocidad a partir de la salida del seguimiento de objetos de YOLO26: cuando una trayectoria tiene cinco posiciones, convierte en metros el desplazamiento en píxeles entre la primera y la última mediante la escala meter_per_pixel y lo divide por el tiempo transcurrido para obtener la velocidad en km/h.
Aplicaciones#
- Riesgo crediticio: Los prestamistas calculan la ratio deuda-ingresos, la utilización del crédito y los meses transcurridos desde el último impago a partir de los registros brutos de las cuentas; estas características predicen el impago mejor que los saldos sin procesar.
- Mantenimiento predictivo: Las medias móviles, las tasas de cambio y la energía por bandas de frecuencia calculadas a partir de flujos de vibración y temperatura revelan el desgaste incipiente antes de que ninguna lectura bruta supere un límite de alarma.
- Detección de fraudes: Las características de frecuencia, como el número de transacciones con tarjeta durante la última hora y la distancia entre una compra y la ubicación habitual del titular de la tarjeta, permiten distinguir el fraude del gasto normal.
- Previsión de la demanda: Los modelos minoristas combinan retardos de ventas, medias móviles, cambios de precios, indicadores de promociones e indicadores de festivos para cada tienda y producto.
Ingeniería de características y términos relacionados#
- Extracción de características: Calcula características automáticamente mediante un algoritmo fijo o un modelo aprendido, como PCA o la red troncal de una red neuronal. A menudo, ambos términos se usan indistintamente, aunque la ingeniería de características abarca un proceso más amplio, guiado por el dominio.
- Preprocesamiento de datos: Limpia y da formato a los datos corrigiendo errores, rellenando valores ausentes y convirtiendo tipos; es el paso previo al diseño de características.
- Embeddings: Vectores densos que un modelo aprende durante el entrenamiento para representar palabras, imágenes o usuarios. En la mayoría de los sistemas de lenguaje y visión sustituyen a características creadas manualmente, como los recuentos de palabras.










