Feature Engineering: ¿qué es y cómo funciona?

17min

Si estás trabajando en un proyecto de Machine Learning debes saber que la calidad de los datos que usas para el entrenamiento suele ser más determinante que la complejidad del modelo. En este contexto, el Feature Engineering se convierte en una disciplina clave, ya que conecta los datos brutos con el rendimiento real de los algoritmos. Es esencial porque permite extraer señales útiles, reducir el ruido y representar mejor el problema a resolver.

Índice

¿Qué es Feature  Engineering?

Vamos a empezar definiendo qué es Feature  Engineering o ingeniería de características. En pocas palabras es el proceso de transformar datos brutos en variables (las features) que mejoren el rendimiento de los modelos de Machine Learning. Durante ese proceso se extraen y se crean atributos relevantes a partir de los datos disponibles, de modo que los algoritmos puedan aprender patrones de forma más efectiva.

Esta disciplina es esencial porque los modelos de aprendizaje automático no entienden los datos tal como los percibimos los humanos. Por eso necesitan variables «cocinadas» que capturen la información relevante del problema, área donde donde el feature engineering se desarrolla. Es importante para conseguir buenos resultados, ya que una buena representación de los datos puede marcar una diferencia muy grande, incluso más que el propio algoritmo utilizado para Machine Learning.

Fases principales del Feature Engineering

Las fases principales de la ingeniería de características abarcan distintos puntos que vamos a ver a continuación, desde la comprensión del problema de negocio y la selección de las características críticas, hasta la evaluación del impacto de las variables en el rendimiento del modelo.

Comprensión del problema de negocio y exploración inicial de las variables brutas

Antes de aplicar cualquier técnica, es imprescindible entender el contexto del problema que estamos manejando. Esto quiere decir que previamente debemos conocer objetivos del modelo y dejar muy claros qué datos por tanto le deberían interesar más. A su vez, también incluye definir las métricas de evaluación de las características y el significado de cada variable disponible.

Para la realización de esta fase se debe componer un análisis exploratorio de datos (conocido por las siglas EDA), donde se estudian distribuciones, correlaciones, valores faltantes y posibles inconsistencias en los datos. Esta exploración permite detectar patrones iniciales de los datos en bruto que estamos explorando y orientar las decisiones que tendremos que realizar posteriormente para la transformación de los datos en las características que hemos definido como relevantes para mejorar el aprendizaje.

Imputación de valores nulos y filtrado de valores atípicos

Otra cosa que debemos tener en cuenta es que los datos reales suelen contener valores faltantes y datos que pueden distorsionar el aprendizaje del modelo. En esta fase necesitamos reemplazar los valores nulos mediante estrategias que nos permitan conservar información útil del conjunto de datos, sin perder filas ni sesgar la distribución de las variables. Para ello se utilizan estrategias diversas como la media, mediana, moda o incluso modelos predictivos.

Por otro lado, necesitamos localizar los valores atípicos, para tomar decisiones con ellos. En resumen, tendremos que decidir si esos datos atípicos deben eliminarse o tratarse como variables, dependiendo de si representan errores o casos reales aunque poco frecuentes. Este paso también es clave para evitar sesgos y mejorar la estabilidad del modelo.

Creación y diseño de nuevas características mediante transformaciones matemáticas

Luego llegamos a la fase de creación y diseño de nuevas características, que es una de las partes más creativas del Feature Engineering. Este paso consiste en la generación de nuevas variables a partir de las existentes, de modo que el modelo vea mejor la información que a nosotros nos ha parecido relevante. Para ello se realizan las transformaciones, que pueden incluir operaciones matemáticas simples o transformaciones más complejas.

Por ejemplo, a partir de una fecha se pueden derivar variables como el día de la semana, el mes o si es fin de semana. Otro ejemplo, si tienes peso y altura puedes sacar el índice de masa corporal. Con estas nuevas características se trata de capturar patrones que no son evidentes en los datos originales.

Selección de características críticas y eliminación de variables redundantes

Pero debemos considerar que no todas las variables aportan valor. De hecho, algunas pueden ser irrelevantes o incluso perjudiciales debido a ruido o redundancia. Así pues, la selección de características requiere que seamos capaces de identificar cuáles son realmente útiles para el modelo.

Con esa información se pasa a eliminar variables innecesarias y con ello no solo mejora el rendimiento, sino que también se reduce la complejidad computacional.

Evaluación del impacto de las nuevas variables en el rendimiento del modelo

Todo lo anterior no lo realizaremos simplemente como intuición y asumiendo que nuestras decisiones son siempre acertadas. Al contrario, la ingeniería de características debe realizarse de modo que sepamos con certeza que cada transformación tiende a mejorar el rendimiento del modelo. Para ello es fundamental que cada nueva feature se valide.

Para conseguir esa validación se entrena modelos con distintas combinaciones de variables y se evalúa el rendimiento de ellos usando métricas relevantes para cada problema.

Data Engineering vs. Feature Engineering

Estas dos disciplinas dentro del ecosistema de Machine Learning no son excluyentes sino más bien complementarias. En Data Engineering nos ocupamos de construir la infraestructura y los procesos para recoger, limpiar y preparar los datos que necesitamos para el entrenamiento de los modelos. Por otra parte, el Feature Engineering se centra en conseguir variables útiles a partir de esos datos, para que el modelo aprenda mejor.

Diferencias en el ciclo de vida del dato

El Data Engineering se centra en la ingestión, almacenamiento y procesamiento de datos a gran escala para el entrenamiento de los modelos. En este caso nos preocupamos de asegurar la disponibilidad y calidad de los datos.

Por otro lado, en la disciplina de Feature Engineering nos encontramos en una fase posterior, preparando esos datos para su uso en modelos de Machine Learning. Por tanto, son puntos distintos del ciclo de vida del dato.

Roles y perfiles técnico

El Data Engineer se enfoca en infraestructuras para la obtención y procesamiento de datos. Es un rol más técnico que el de Deature Engineer, que está más alineado con el Data Scientist o Machine Learning Engineer.

Herramientas e infraestructura de almacenamiento frente a entornos de desarrollo de modelos

Dado que son dos etapas distintas del proceso, con objetivos bien distintos, requieren tecnologías distintas para poder realizarse. Data Engineering tiene como objetivo el manejar grandes volúmenes de datos de forma eficiente, mientras que Feature Engineering tiene el foco en la experimentación y el entrenamiento de modelos.

Por poner algunos ejemplos de tecnologías de Data Engineering podemos nombrar a Hadoop, Spark, Kafka o bases de datos NoSQL. Por su parte, el Feature Engineering se apoya en herramientas como pandas, scikit-learn o frameworks de Machine Learning

Delimitación del pipeline

El pipeline de datos separa responsabilidades y optimiza cada fase del proceso. En este sentido, incluye desde la recolección hasta la preparación inicial de los datos.

Cada disciplina tiene una responsabilidad distinta. Data Engineering es más previa, asociada en la obtención y almacenamiento y Feature Engineering se sitúa en la etapa donde los datos ya están disponibles y listos para ser transformados en variables útiles.

Optimización de bases de datos distribuidas frente al ajuste de rendimiento predictivo

El Data Engineering también tiene otras áreas de optimización, más relacionadas con las consultas y el almacenamiento, lo que nos permitirá mejorar el acceso a los datos. El Feature Engineering, en cambio, optimiza la calidad de las variables para mejorar métricas relevantes para el entrenamiento del modelo, como precisión, recall o error cuadrático medio.

Metodologías y procesos clave: feature engineering algorithms

Pero te preguntarás: ¿Cuáles son las metodologías y procesos que hacen posible el Feature Engineering? ¿Qué técnicas se usan para convertir datos brutos en variables más útiles para un modelo?

Aquí es donde encontramos las mencionadas «transformaciones», algoritmos muchas veces matemáticos para la selección y extracción de características. Mediante estas técnicas se busca mejorar la calidad de la información, reducir ruido y aumentar la capacidad predictiva, sin complicar innecesariamente el modelo.

Técnicas de transformación básicas como Escalado, normalización y codificación categórica (One-Hot Encoding)

Las técnicas básicas como escalado o normalización permiten adaptar los datos a los requisitos de los algoritmos. El escalado ajusta las variables a un rango común, mientras que la normalización transforma los datos para que tengan propiedades estadísticas específicas.

Luego tenemos la codificación categórica, One-Hot Encoding, que convierte variables cualitativas en representaciones numéricas que los modelos pueden procesar.

Algoritmos de selección basados en correlación, Lasso y Random Forest

También podemos destacar varios métodos automáticos para seleccionar características relevantes, como los basados en correlación que eliminan variables redundantes. También tenemos Lasso, que introduce regularización para reducir el número de variables o los «Random Forest», que son modelos que permiten estimar la importancia de cada feature, facilitando la selección de las más influyentes.

Reducción de la dimensionalidad mediante extracción de características complejas (PCA y t-SNE)

La dimensionalidad es el número de variables o características que describen un dataset o conjunto de datos. Cuantas más dimensiones tiene un dataset, más información puede contener, pero a la vez aumenta su complejidad, lo que hace más difícil analizarlo y modelarlo.

Cuando el número de variables es muy alto, se pueden aplicar técnicas de reducción de dimensionalidad como PCA (Análisis de Componentes Principales) que transforma las variables en nuevas combinaciones lineales que capturan la mayor varianza posible. También tenemos t-SNE, que resulta útil para visualizar datos en espacios de menor dimensión, especialmente en tareas exploratorias.

La nueva era de la automatización con AI Feature Engineering

Hoy, gracias a la Inteligencia Artificial, el Feature Engineering deja de depender tanto del trabajo manual y pasa a apoyarse en sistemas capaces de automatizar la selección, creación y optimización de variables. Con ello es posible gastar mucho menos tiempo en la disciplina de Feature Engineering y a la vez conseguir mayor consistencia en modelos de Machine Learning.

El impacto de los modelos de lenguaje masivos en el descubrimiento autónomo de variables

Los modelos de lenguaje masivos han abierto la puerta a una nueva forma de abordar el Feature Engineering, gracias a su capacidad para entender contexto, semántica y relaciones complejas. Con ellos podemos obtener variables derivadas que tradicionalmente requerían intervención manual y además podemos conseguirlo en muy poco tiempo.

Gracias a los modelos de lenguaje es prácticamente inmediato el análisis de los datos y  documentación, incluso dirigirlo mediante consultas en lenguaje natural para conseguir nuevas features relevantes. Esto acelera el proceso de descubrimiento y reduce la dependencia de atención humana en etapas iniciales.

Extracción automática de características complejas en bases de datos relacionales con algoritmos avanzados

Como sabes, las bases de datos relacionales contienen una gran cantidad de información estructurada distribuida en múltiples tablas. Tradicionalmente, combinar estos datos requería joins manuales y un profundo conocimiento del esquema de la base de datos.

Sin embargo, en la actualidad podemos hacer uso de algoritmos avanzados para recorrer automáticamente relaciones entre tablas, generar agregaciones y construir features complejas como conteos, promedios o frecuencias. Gracias a este enfoque es posible capturar patrones temporales y relacionales sin necesidad de diseñarlos explícitamente.

Automatización del pipeline de características en entornos de producción bajo metodologías MLOps

Machine Learning Operations, MLOps, es un conjunto de prácticas para desarrollar, desplegar, monitorear y mantener modelos de Machine Learning. Estas prácticas tienen como objetivo llevar al terreno operativo todo el ciclo de vida del modelo, desde la preparación de datos y el entrenamiento hasta la puesta en producción, así como el reentrenamiento continuo del modelo.

Las técnicas relacionadas con MLOps han hecho posible la automatización del ciclo de vida completo de las características, desde su generación hasta su validación y despliegue. Para ello se integra todo el proceso en pipelines reproducibles. Con ello además conseguimos que las mismas transformaciones aplicadas en entrenamiento se mantengan en producción, evitando inconsistencias.

Generación sintética de variables informativas mediante Inteligencia Artificial generativa

Como hemos dicho, la Inteligencia Artificial generativa permite crear nuevas variables a partir de patrones observados en los datos. Estas variables sintéticas pueden capturar relaciones no lineales o dependencias complejas, que serían difíciles de modelar con técnicas tradicionales.

Por ejemplo, usando modelos generativos se pueden producir embeddings o representaciones latentes que condensan múltiples variables en una sola, mejorando la capacidad predictiva sin necesidad de intervención manual o al menos sin tanta intervención humana.

Reducción del tiempo de desarrollo de modelos mediante plataformas de AutoML integradas

Por último se deben destacar las plataformas de AutoML, que integran procesos de Feature Engineering desde la selección de variables al entrenamiento de modelos, en un flujo automatizado.

Gracias a AutoML se consigue reducir significativamente el tiempo necesario para desarrollar soluciones de Machine Learning. Pero no solo eso, también permite explorar múltiples combinaciones de transformaciones y algoritmos de forma eficiente, facilitando la identificación de configuraciones óptimas sin tanto esfuerzo.

Buenas prácticas sobre Feature  Engineering

Algunas recomendaciones para realizar un mejor proceso de Feature  Engineering se resumen en los siguientes puntos:

Prevención sistemática del Data Leakage durante la división de los conjuntos de datos:

El data leakage ocurre cuando información del conjunto de test se filtra en el entrenamiento, lo que lleva a generar resultados artificialmente optimistas. Esto es especialmente sensible cuando trabajamos con variables derivadas de agregaciones o de datos temporales.

Obviamente se debe evitar y para ello se aplican transformaciones de features únicamente con datos de entrenamiento, para luego replicarlas en validación y test.

Incorporación prioritaria del conocimiento del dominio de negocio en el diseño de variables

Entender muy bien el dominio en el que estamos trabajando es uno de los factores más importantes en la calidad de las features. Este dominio nos ofrece un contexto sobre el cual se deben diseñar variables que reflejen mejor la realidad del problema.

Por ejemplo, en un sistema de recomendaciones, conocer el comportamiento del usuario puede ayudar a crear variables más representativas y útiles.

Implementación y centralización de Feature Stores para garantizar la consistencia en producción

Un feature store es un sistema centralizado para almacenar, gestionar y servir características usadas por modelos de Machine Learning. Gracias a ellos se pueden reutilizar esas características tanto en entrenamiento como en inferencia.

Usar las feature stores es esencial para trabajar con las características de manera consistente. Puedes tratar esta herramienta como capa intermedia que asegura que las mismas definiciones de variables se utilicen en todos los entornos de la misma manera.

Documentación rigurosa y control de versiones de las transformaciones matemáticas aplicadas

Por supuesto, cada transformación aplicada a los datos debe estar documentada y versionada para poder entender el proceso completo y poder mantenerlo durante la evolución del sistema. Esto incluye fórmulas, parámetros y supuestos utilizados.

Con ello conseguiremos una deseable trazabilidad, que permite reproducir experimentos, auditar modelos y entender cómo evolucionan las features a lo largo del tiempo.

Búsqueda del equilibrio óptimo entre la complejidad de las variables y la interpretabilidad del modelo

A lo largo del tiempo es normal que se generen features más complejas. Ellas aumentan la capacidad predictiva pero también hace que disminuya la interpretabilidad. Corre por nuestra cuenta encontrar el equilibrio adecuado entre la complejidad de las variables y la interpretabilidad del modelo.

Ten en cuenta que no siempre un modelo altamente complejo es lo ideal. De hecho, en muchas ocasiones un conjunto de variables más simple pero bien diseñado puede ser preferible a un modelo difícil de interpretar y mantener.

Feature Engineering para datos no estructurados

Muchas veces tenemos que trabajar con datos que no vienen estructurados. Sacar datos de tablas puede ser sencillo pero a veces el problema nos obliga a procesar texto en prosa, imágenes o series de datos arbitrarios. En estos casos el feature engineering debe intentar convertir estos datos en representaciones numéricas útiles, a partir de las cuales detectar patrones y aprender con mayor precisión.

Procesamiento de Lenguaje Natural (NLP)

Gracias al procesamiento de lenguaje natural podemos partir de datos textuales y transformarlos en representaciones numéricas.  Existen técnicas clásicas como bolsa de palabras (Bag of Words) y TF-IDF, que cuantifican la relevancia de términos. También hay enfoques más avanzados, se utilizan embeddings generados por modelos de lenguaje, que capturan relaciones semánticas entre palabras y frases. En estos últimos casos se consiguen representaciones que permiten a los modelos entender similitudes contextuales, más allá de la simple frecuencia de términos.

Visión por computador clásica

Cuando trabajamos con imágenes, el Feature Engineering tradicional se basa en la extracción de patrones visuales como bordes, texturas o formas. A través de técnicas como SIFT, SURF o HOG se consigue describir características locales, que pueden utilizarse en tareas de clasificación o detección. De todos modos, en la actualidad los modelos de Deep Learning han reducido la necesidad de diseñar features manualmente.

Análisis de series temporales mediante la creación de variables de retardo (lags), medias móviles y descomposición de estacionalidad

En series temporales, las características se producen a partir de la propia evolución de los datos. Para ello tenemos los lags, que permiten incorporar valores pasados como variables predictoras, mientras que las medias móviles suavizan el ruido y resaltan tendencias.

Además se pueden capturar patrones recurrentes y mejorar la capacidad predictiva del modelo mediante la descomposición en tendencia, estacionalidad y componente residual, lo que permite entender contextos más dinámicos.

Ingeniería de variables geoespaciales

También se puede trabajar con datos geográficos, en cuyo caso es importante realizar transformaciones específicas, que tengan en cuenta la localización y la distancia. Algunas técnicas habituales son el cálculo de distancias entre puntos, clustering geográfico o la codificación de coordenadas en regiones.

Herramientas y librerías indispensables para agilizar tu flujo de Feature Engineering

Ya para acabar vamos a enumerar una serie de herramientas y librerías muy útiles para agilizar el ciclo de Feature Engineering.

  • Pandas y NumPy: Estas librerías son la base del procesamiento de datos en Python. Permiten manipular estructuras tabulares, realizar transformaciones vectorizadas y gestionar grandes volúmenes de datos de forma eficiente.
  • Scikit-Learn Pipelines: Es una herramienta que permite encadenar transformaciones y modelos en un flujo reproducible, lo que facilita la aplicación consistente de pasos como el escalado, codificación o selección de variables.
  • Featuretools: se trata de una librería especializada en la generación automática de características a partir de datos relacionales, utilizando técnicas de Deep Feature Synthesis para crear variables complejas mediante combinaciones de tablas y agregaciones.
  • Category Encoders: herramienta que ofrece implementaciones avanzadas para la codificación de variables categóricas.
Fernando Fuentes

Productos relacionados: