Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Scikit-learn desde cero, Unidad 13 — Siguientes pasos, 13.2 — Ruta recomendada en comoprogramar.es ·

Feature engineering

Feature engineering

Introducción

Feature engineering es una de las etapas más cruciales en el flujo de un proyecto de machine learning (ML). Es la transformación y creación de características a partir de los datos originales para mejorar el rendimiento del modelo. En este artículo, exploraremos por qué es importante feature engineering, cómo realizarlo efectivamente, cuáles son las trampas comunes que se deben evitar, y finalmente proporcionaremos una lista de verificación accionable.

Explicación principal

Feature engineering no es solo sobre la manipulación de datos; es más bien sobre la creación de características para mejorar el rendimiento del modelo. En Scikit-learn, esto puede implicar transformaciones como escalado, codificación de variables categóricas y agregación de nuevas características.

A continuación se presenta un ejemplo de feature engineering con scikit-learn:

import numpy as np
from sklearn.preprocessing import StandardScaler, OneHotEncoder

# Supongamos que tenemos los siguientes datos:
X = np.array([[1.05, 2], ['low', 'high'], [3.4]])

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X[:, [0]])

encoder = OneHotEncoder(sparse=False)
X_encoded = encoder.fit_transform(X[:, [1]])

# Ahora combinamos las características
X_engineered = np.hstack((X_scaled, X_encoded))
print(X_engineered)

En este ejemplo, StandardScaler se utiliza para escalar la primera columna y OneHotEncoder para codificar la segunda columna. Finalmente, las dos columnas transformadas se concatenan para formar características más útiles para el modelo.

Errores típicos / trampas

  1. Falta de interpretación: Uno de los errores más comunes es realizar feature engineering sin un entendimiento profundo del problema subyacente y de las características en sí. Es crucial entender la relación entre las características originales y cómo se transforman para mejorar el rendimiento del modelo.
  1. Oversampling o undersampling mal implementados: Estas técnicas pueden ser útiles para equilibrar conjuntos de datos desequilibrados, pero su uso debe ser cuidadoso. Oversampling puede generar características artificiales que no existen en la realidad y oversampling sin estratificación puede distorsionar las relaciones entre las variables.
  1. Transformaciones inapropiadas: Algunas transformaciones pueden distorsionar la distribución de datos, lo cual puede afectar negativamente el rendimiento del modelo. Por ejemplo, aplicar sqrt a una variable con valores muy bajos o negativos no tiene sentido.

Checklist accionable

  1. Entender el problema: Analiza en profundidad qué se está intentando predecir y por qué.
  2. Exploración de datos: Realiza análisis exploratorios para identificar patrones, relaciones y posibles transformaciones.
  3. Transformar variables numéricas: Usa técnicas como escalado, normalización o logaritmo.
  4. Codificación de variables categóricas: Utiliza OneHotEncoder, OrdinalEncoder o LabelEncoder según el caso.
  5. Creación de nuevas características: Combinar y crear nuevas características a partir de las existentes puede mejorar significativamente la calidad del modelo.
  6. Validación de transformaciones: Evalúa cómo cada transformación afecta al rendimiento del modelo mediante validación cruzada.
  7. Evitar data leakage: Asegúrate de que ninguna característica generada no se produzca usando información en el conjunto de prueba.
  8. Documentar todo: Mantén un registro detallado de todas las transformaciones y cambios realizados.

Cierre con "Siguientes pasos"

Siguientes pasos

  1. Continúa aprendiendo feature engineering avanzado: Métodos como la agregación de características, creación de variables lag o lead pueden mejorar aún más el rendimiento del modelo.
  2. Ejercicios prácticos: Aplica estos conceptos a proyectos reales para ganar experiencia práctica.
  3. Participa en competiciones de Kaggle: Estos desafíos te permiten aplicar tus habilidades de feature engineering y mejorar con el feedback constante.

En resumen, feature engineering es una parte esencial del flujo de un proyecto de machine learning. Al invertir tiempo en este paso, se puede lograr un mayor rendimiento y precisión en los modelos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).