Feature Engineering, un resumen general

Feature Engineering (ingeniería de atributos, en traducción libre) es la preparación de datos brutos que se utilizarán en modelos de Machine Learning (ML) o aprendizaje automático. En ML hay dos tipos de datos: entradas y salidas (inputs y outputs, en inglés). Independientemente del modelo que se utilice, las entradas son los datos que se introducen en el modelo y las salidas son los resultados.

En el aprendizaje supervisado, se conocen las entradas y salidas. Por lo tanto, un ser humano guía el modelo hasta que las predicciones sean altamente precisas. En el aprendizaje no supervisado, las entradas son conocidas, pero no las salidas. El algoritmo debe identificar patrones en los datos, detectar anomalías y luego hacer predicciones por sí mismo. El aprendizaje semi-supervisado es una combinación de ambos.

El éxito de un modelo siempre depende de la calidad de las entradas. Los datos de entrada son generalmente presentados en filas y columnas. Los valores en las columnas son atributos de los datos, mientras que la Feature Engineering es la preparación de los atributos y el conjunto de datos. Jason Brownlee, Ph.D., científico de datos y conocido bloguero, afirma que la preparación impacta directamente en los resultados que un modelo puede lograr. Crear atributos ideales en cualquier modelo requiere conocimiento de dominio y creatividad. En este sentido, muchas startups y proveedores de nube están automatizando el proceso de Feature Engineering.

Uno de los problemas que se producen al exportar datos a una hoja de cálculo o archivo es que algunos campos tendrán valores que faltan. Sin embargo, se pueden utilizar herramientas y técnicas para limpiar los datos para que sean consistentes en todos los ámbitos. Generar predicciones altamente precisas depende de ello. Según Forbes, CrowdFlower realizó una encuesta entre científicos de datos y descubrió que la preparación de datos representa el 80% del trabajo.

Fuente: Fortune

Aunque la Feature Engineering es importante para crear el modelo correcto, el bloguero Jason Brownlee afirma que los resultados logrados en un modelo dependen de los atributos, el modelo, los datos y el encuadre (framing) de los objetivos. En otras palabras, crear un modelo de aprendizaje automático de alto rendimiento depende de elegir el algoritmo correcto, la calidad de los datos, crear las funciones correctas y hacer las preguntas correctas.

Técnicas de Feature Engineering

Emre Rencberoglu, científico de datos, enumera nueve técnicas para la ingeniería de atributos o Feature Engineering. Unas son mejores que otras. En términos de cuál usar en un modelo en particular, depende del caso de uso. Emre incluyó scripts de Python para cada técnica en su entrada de blog. Todo lo que se requiere es la instalación de NumPy y Pandas

Ambos son paquetes críticos de Python para científicos de datos. Permiten a los desarrolladores crear objetos de matriz multidimensionales. NumPy (Numerical Python) es una biblioteca de Python que viene repleta de funciones matemáticas y proporciona un cálculo matemático rápido en arreglos y matrices. En una nota aparte, NumPy, Scikit-learn, Matplotlib, TensorFlow, Pandas y otras herramientas crean el “Ecosistema de Aprendizaje Automático de Python”.

Nueve técnicas de Feature Engineering

1. Imputación: se ocupa de los valores que faltan, que son el resultado de errores humanos, interrupciones del flujo de datos, etc. Algunos programas eliminan las filas con valores faltantes, mientras que otros no aceptan conjuntos de datos con valores faltantes. Emre cree que es mejor descartar las filas o columnas con valores faltantes. Aquí está el código de Python que soluciona el problema con los valores que faltan. Ignorar las letras iniciales.

  •  threshold = 0.7

#Dropping columns with missing value rate higher than threshold

data = data[data.columns[data.isnull().mean() < threshold]]

#Dropping rows with missing value rate higher than threshold

data = data.loc[data.isnull().mean(axis=1) < threshold]

2. Manejo de valores atípicos (outliers): la mejor manera de manejar un valor atípico (datos separados) es trazarlo en un gráfico. Dos métodos estadísticos para trabajar los valores atípicos son la desviación estándar y los percentiles.

3. Binning: es la agrupación de datos numéricos en contenedores (bins), también conocida como cuantificación. Útil en los casos en que las columnas tienen una cantidad tan alta de valores que dificulta crear un modelo. También es útil cuando los valores caen fuera de los rangos esperados (distribución normal). 

4. Log Transform: comúnmente utilizado para la transformación matemática. Esta técnica es capaz de cambiar los datos sesgados en una distribución normal. Además, minimiza el impacto de los valores atípicos, ayudando a que el modelo se vuelva más robusto.  

5. Codificación One-Hot: es un método de codificación que asigna 0 y 1 a los valores de una columna. Los métodos alteran los datos a un formato numérico que podría ser más fácil de entender para el modelo. 

6. Operaciones de agrupación: o grouping operations, es un método que utiliza Tidy. “Los conjuntos de datos Tidy son fáciles de manipular, modelar y visualizar, y tienen una estructura específica: cada variable es una columna, cada observación es una fila y cada tipo de unidad de observación es una tabla”. Tres formas diferentes de consolidar columnas son a través de la alta frecuencia, tabla dinámica y codificación One-Hot. 

7. División de atributos: feature split es un enfoque que divide un atributo y, a veces, la hace significativa en Machine Learning. Por ejemplo, una columna que contiene el nombre y el apellido se puede dividir en dos columnas. De esta manera, una columna representa el nombre y la otra el apellido.

8. Escalado: se trata de un método que utiliza cálculo k-NN y k-Means para normalizar los datos en rangos fijos utilizando 0 y 1. 

9. Fecha de extracción: aproximación que extrae fechas y las normaliza, ya que las fechas se pueden presentar de diferentes formatos como 01/01/1985 o 01/01/85. 

Las nueve técnicas descritas anteriormente son específicas de Emre Rencberoglu. Lo cierto es que cada científico de datos tiene un método para la Feature Engineering. El bloguero Jason Brownlee lo ve de manera diferente. Él define la Feature Engineering de la siguiente manera:

Feature Engineering es el proceso de transformar los datos crudos en atributos que representan mejor el problema subyacente a los modelos predictivos, lo que resulta en una mayor precisión del modelo en los datos no vistos”.

En un artículo de blog, Jason escribe extensamente sobre el tema de la Feature Engineering. Sin embargo, va más allá del alcance de este artículo. Tres aspectos interesantes que destacan son los siguientes:

  • La Feature Engineering es un problema de representación, donde el modelo de ML debe encontrar una solución a partir de los conjuntos de datos.
  • Se le pueden asignar puntuaciones a los atributos. Los atributos con puntuaciones más altas se pueden usar en un modelo y los atributos con puntuaciones más bajas se pueden descartar.
  • La construcción de los atributos correctos requiere que el usuario pase mucho tiempo revisando datos de muestra y aprendiendo formas de exponer los datos a los modelos de aprendizaje automático.

En resumen, la Feature Engineering es la preparación de datos brutos que se utilizarán en modelos de Machine Learning. Los datos generalmente se representan en columnas y filas. Las columnas suelen ser los atributos y la creación de los atributos correctos afecta el desempeño (precisión) del modelo. Cuatro factores importantes para mejorar la precisión del modelo son los atributos, los datos, el modelo y el encuadre de los objetivos.

La limpieza de datos es una parte importante de la Feature Engineering. Hay varias herramientas y técnicas disponibles para ayudar al científico de datos con el proceso. Después de exportar los datos sin procesar a un archivo, es probable que falten valores en las columnas. Las nueve técnicas mencionadas en este post identifican los valores faltantes y, dependiendo del caso de uso, eliminan la fila con los valores faltantes. NumPy y Pandas son bibliotecas y herramientas de Python que ayudan con la limpieza de datos. Todo lo que se necesita es un simple script de Python, y la herramienta limpiará los datos.

Scroll to Top