Feature engineering: guía práctica

Feature engineering es el proceso de crear, transformar y seleccionar variables para que un modelo represente mejor el problema. Una buena característica incorpora conocimiento del dominio sin usar información que no estaría disponible al predecir.
No consiste en generar cientos de columnas y conservar las que mejor puntúan. Cada feature debe tener definición, momento de disponibilidad, costo y pruebas.
Ejemplo
Para predecir abandono de clientes, los datos crudos incluyen fechas de compra, tickets y contratos. Variables útiles podrían ser:
- días desde última compra;
- compras en 30 y 90 días;
- tendencia de gasto;
- tickets abiertos;
- antigüedad;
- cambio de plan reciente.
La variable objetivo “canceló en los siguientes 30 días” debe observarse después de la fecha de corte. Ninguna feature puede mirar dentro de esa ventana futura.
Definir una fecha de corte
historial permitido | fecha de corte | horizonte objetivo
--------------------|----------------|-------------------
t0 t0 + 30 días
Este diseño evita usar el estado final de la cuenta, notas de cancelación o reembolsos posteriores para “predecir” algo que ya ocurrió.
Transformaciones numéricas
- escalado y estandarización;
- logaritmo para colas largas;
- recorte justificado de extremos;
- razones con denominador controlado;
- diferencias y tasas de cambio;
- bins cuando aportan interpretación.
Un modelo lineal suele beneficiarse del escalado; árboles suelen necesitarlo menos. Evalúa según algoritmo y distribución.
Variables categóricas
Opciones:
- one-hot encoding;
- ordinal con orden real;
- frecuencia;
- target encoding dentro de validación;
- agrupación de categorías raras.
No asignes números a categorías nominales como si existiera distancia. El target encoding calculado con todo el dataset filtra la etiqueta.
Fechas y ventanas
Extraer mes o día de semana puede servir, pero una fecha absoluta rara vez se generaliza. Considera estacionalidad, antigüedad y ventanas móviles.
Toda ventana debe cerrar antes de la predicción. La guía de series temporales ayuda a separar entrenamiento y futuro.
Texto
Puedes usar longitud, conteos, TF-IDF o embeddings. El método depende de volumen, idioma y tarea. Los embeddings capturan similitud, pero requieren evaluación y control de versión.
Valores nulos
La ausencia puede ser informativa. Combina imputación con indicador cuando sea defendible:
df["ingreso_faltante"] = df["ingreso"].isna()
No calcules medianas con validación incluida. Consulta valores nulos en pandas.
Pipeline reproducible
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.impute import SimpleImputer
preparacion = ColumnTransformer([
("num", Pipeline([
("imputar", SimpleImputer(strategy="median")),
("escalar", StandardScaler()),
]), columnas_numericas),
("cat", Pipeline([
("imputar", SimpleImputer(strategy="most_frequent")),
("onehot", OneHotEncoder(handle_unknown="ignore")),
]), columnas_categoricas),
])
pipeline = Pipeline([
("features", preparacion),
("modelo", modelo),
])
La validación cruzada ajusta esta preparación dentro de cada pliegue.
Selección de variables
La selección puede basarse en:
- conocimiento del dominio;
- estabilidad;
- redundancia;
- regularización;
- importancia por permutación;
- selección dentro de validación;
- costo y disponibilidad.
La importancia de un modelo no demuestra causalidad. Variables correlacionadas pueden repartirse importancia y una variable proxy puede introducir discriminación.
Features en producción
La lógica debe ser igual en entrenamiento e inferencia. Registra:
- versión;
- fuente;
- fórmula;
- ventana;
- frescura;
- valor predeterminado;
- propietario;
- pruebas;
- distribución esperada.
Monitoriza deriva, nulos, categorías nuevas y latencia. Una feature perfecta que llega después de la decisión no es utilizable.
Evaluación incremental
Crea una línea base simple. Añade grupos de features y mide:
- mejora fuera de muestra;
- estabilidad por pliegue;
- rendimiento por subgrupo;
- costo de cálculo;
- explicabilidad;
- robustez temporal.
No compares usando semillas o particiones diferentes.
Errores frecuentes
- Filtrar información futura.
- Ajustar transformaciones con todo el dataset.
- Codificar categorías nominales como ordinales.
- Crear razones con cero.
- Conservar identificadores únicos.
- Generar variables sin disponibilidad en línea.
- Elegir por importancia en el mismo test.
- Ignorar equidad y privacidad.
- Duplicar lógica entre notebook y producción.
Feature engineering profesional es diseño de información: mejora señal, elimina fugas y conserva una ruta reproducible desde el dato original.
Preguntas frecuentes
¿Qué es feature engineering?
Es crear, transformar y seleccionar variables que representen el problema para un modelo.
¿Qué es data leakage en features?
Es usar información del futuro, del objetivo o del conjunto de evaluación que no estaría disponible al predecir.
¿Siempre debo escalar variables?
Depende del algoritmo. Modelos basados en distancia o gradiente suelen beneficiarse; árboles suelen ser menos sensibles.
¿Cómo trato categorías nuevas?
Usa un codificador con política explícita, como handle_unknown, y monitoriza su frecuencia.
¿La importancia de una feature demuestra causalidad?
No. Indica utilidad dentro de un modelo y datos concretos, con correlaciones y posibles proxies.
¿Dónde debe vivir la lógica de features?
En un pipeline versionado y reutilizable por entrenamiento e inferencia, con definiciones y pruebas.

Deja una respuesta