Ingeniería de características en ciencia de datosFeature engineering in data science

En este artículo se explica el propósito del diseño de características y se ofrecen ejemplos de su rol en el proceso de mejora de los datos del aprendizaje automático.This article explains the purposes of feature engineering and provides examples of its role in the data enhancement process of machine learning. Los ejemplos usados para ilustrar este proceso se extraen de Azure Machine Learning Studio.The examples used to illustrate this process are drawn from Azure Machine Learning Studio.

Esta tarea constituye un paso del proceso de ciencia de datos en equipos (TDSP).This task is a step in the Team Data Science Process (TDSP).

La ingeniería de características intenta aumentar la eficacia predictiva de los algoritmos de aprendizaje creando características de los datos sin procesar que facilitan el proceso de aprendizaje.Feature engineering attempts to increase the predictive power of learning algorithms by creating features from raw data that help facilitate the learning process. La ingeniería y la selección de características forman parte del proceso TDSP descrito en ¿Cuál es el ciclo de vida de la ciencia de datos en equipos (TDSP)?The engineering and selection of features is one part of the TDSP outlined in the What is the Team Data Science Process lifecycle? La selección y la ingeniería de características son partes del paso del desarrollo de características del TDSP.Feature engineering and selection are parts of the Develop features step of the TDSP.

  • Ingeniería de características: este proceso trata de crear más características pertinentes a partir de las que tengamos sin procesar en los datos, así como de mejorar la eficacia predictiva del algoritmo de aprendizaje.feature engineering: This process attempts to create additional relevant features from the existing raw features in the data, and to increase the predictive power of the learning algorithm.
  • Selección de características: este proceso selecciona el subconjunto de claves de las características de datos originales en un intento por reducir la dimensionalidad del problema de entrenamiento.feature selection: This process selects the key subset of original data features in an attempt to reduce the dimensionality of the training problem.

Normalmente, la ingeniería de características se aplica primero para generar características adicionales y, a continuación, se realiza el paso de selección de características para eliminar características irrelevantes, redundantes o altamente correlacionadas.Normally feature engineering is applied first to generate additional features, and then the feature selection step is performed to eliminate irrelevant, redundant, or highly correlated features.

Los datos de entrenamiento que se usan en el aprendizaje automático a menudo pueden mejorarse gracias a la extracción de características desde los datos sin procesar que se han recopilado.The training data used in machine learning can often be enhanced by extraction of features from the raw data collected. Un ejemplo de una característica diseñada en el contexto de aprender cómo clasificar las imágenes de caracteres manuscritos es la creación de un mapa de densidad de bits construido a partir de los datos de distribución de bits sin procesar.An example of an engineered feature in the context of learning how to classify the images of handwritten characters is creation of a bit density map constructed from the raw bit distribution data. Este mapa puede ayudar a ubicar los bordes de los caracteres de manera más eficiente usando simplemente la distribución sin procesar directamente.This map can help locate the edges of the characters more efficiently than simply using the raw distribution directly.

Para crear características para los datos en entornos específicos, consulte los artículos siguientes:To create features for data in specific environments, see the following articles:

Pruebe Azure Machine Learning Studio disponible con opciones de pago y gratis.Try Azure Machine Learning Studio available in paid or free options.

Creación de características a partir de sus datos: diseño de característicasCreate features from your data - feature engineering

Los datos de entrenamiento constan de una matriz compuesta de ejemplos (registros u observaciones almacenados en filas), cada uno de los cuales cuenta con un conjunto de características (variables o campos almacenados en columnas).The training data consists of a matrix composed of examples (records or observations stored in rows), each of which has a set of features (variables or fields stored in columns). Se espera que las características especificadas en el diseño experimental caractericen los patrones de los datos.The features specified in the experimental design are expected to characterize the patterns in the data. A pesar de que muchos de los campos de datos sin procesar se pueden incluir directamente en el conjunto de características seleccionado que se usa para entrenar un modelo, a menudo se da el caso de que se requiere construir características adicionales (diseñadas) a partir de las características existentes en los datos sin procesar para generar un conjunto de datos de entrenamiento mejorado.Although many of the raw data fields can be directly included in the selected feature set used to train a model, it is often the case that additional (engineered) features need to be constructed from the features in the raw data to generate an enhanced training dataset.

¿Qué tipo de características se deben crear para mejorar el conjunto de datos cuando se entrena un modelo?What kind of features should be created to enhance the dataset when training a model? Las características diseñadas que mejoran el entrenamiento proporcionan información que ayuda a diferenciar de mejor manera los patrones de los datos.Engineered features that enhance the training provide information that better differentiates the patterns in the data. Se espera que las características nuevas proporcionen información adicional que no está claramente capturada o no sea fácilmente evidente en el conjunto de características original o existente.The new features are expected to provide additional information that is not clearly captured or easily apparent in the original or existing feature set. Pero este proceso es, en cierto modo, un arte.But this process is something of an art. Las decisiones acertadas y productivas a menudo requieren cierto conocimiento especializado.Sound and productive decisions often require some domain expertise.

Al comenzar con Azure Machine Learning, es más fácil comprender este proceso de manera concreta si se usan ejemplos proporcionados en Studio.When starting with Azure Machine Learning, it is easiest to grasp this process concretely using samples provided in the Studio. Aquí se muestran dos ejemplos:Two examples are presented here:

Ejemplo 1: Incorporación de características temporales para un modelo de regresiónExample 1: Add temporal features for a regression model

Usemos el experimento "Previsión de demanda de bicicletas" en Azure Machine Learning Studio para mostrar cómo diseñar características para una tarea de regresión.Let's use the experiment "Demand forecasting of bikes" in Azure Machine Learning Studio to demonstrate how to engineer features for a regression task. El objetivo de este experimento es predecir la demanda de bicicletas, es decir, el número de bicicletas alquiladas dentro de un mes/día/hora específico.The objective of this experiment is to predict the demand for the bikes, that is, the number of bike rentals within a specific month/day/hour. El conjunto de datos "Conjunto de datos de UCI de alquiler de bicicletas" se usa como los datos de entrada sin procesar.The dataset "Bike Rental UCI dataset" is used as the raw input data. Este conjunto de datos se basa en datos reales provenientes de la empresa Capital Bikeshare que mantiene una red de alquiler de bicicletas en Washington DC, en Estados Unidos.This dataset is based on real data from the Capital Bikeshare company that maintains a bike rental network in Washington DC in the United States. El conjunto de datos representa el número de bicicletas alquiladas dentro de una hora específica durante un día en el año 2011 y 2012 y contiene 17379 filas y 17 columnas.The dataset represents the number of bike rentals within a specific hour of a day in the years 2011 and year 2012 and contains 17379 rows and 17 columns. El conjunto de características sin procesar contiene condiciones climáticas (temperatura/humedad/velocidad del viento) y el tipo de día (festivo/día de semana).The raw feature set contains weather conditions (temperature/humidity/wind speed) and the type of the day (holiday/weekday). El campo para la predicción es el contador "cnt", que representa las bicicletas alquiladas dentro de una hora específica y cuyos intervalos van de 1 a 977.The field to predict is the "cnt" count, which represents the bike rentals within a specific hour and which ranges from 1 to 977.

Con el objetivo de construir características eficaces en los datos de entrenamiento, se crean cuatro modelos de regresión con el mismo algoritmo, pero con cuatro conjuntos de datos de entrenamiento distintos.With the goal of constructing effective features in the training data, four regression models are built using the same algorithm but with four different training datasets. Los cuatro conjuntos de datos representan los mismos datos de entrada sin procesar, pero con un número creciente del conjunto de características.The four datasets represent the same raw input data, but with an increasing number of features set. Estas características se agrupan en cuatro categorías:These features are grouped into four categories:

  1. A = características de clima + festivo + día de semana + fin de semana correspondiente al día de la predicciónA = weather + holiday + weekday + weekend features for the predicted day
  2. B = el número de bicicletas alquiladas en cada una de las 12 horas anterioresB = number of bikes that were rented in each of the previous 12 hours
  3. C = el número de bicicletas alquiladas en cada uno de los 12 días anteriores a la misma horaC = number of bikes that were rented in each of the previous 12 days at the same hour
  4. D = el número de bicicletas arrendadas en cada una de las 12 semanas anteriores a la misma hora y el mismo díaD = number of bikes that were rented in each of the previous 12 weeks at the same hour and the same day

Aparte del conjunto de funciones A, que ya existe en los datos sin procesar originales, los otros tres conjuntos de funciones se crean mediante el proceso de diseño de funciones.Besides feature set A, which already exists in the original raw data, the other three sets of features are created through the feature engineering process. El conjunto de características B captura cada demanda de bicicletas reciente.Feature set B captures very recent demand for the bikes. El conjunto de características C captura la demanda de bicicletas en una hora específica.Feature set C captures the demand for bikes at a particular hour. El conjunto de características D captura la demanda de bicicletas en una hora específica y un día de la semana específico.Feature set D captures demand for bikes at particular hour and particular day of the week. Los conjuntos de datos de entrenamiento incluyen el conjunto de características A, A+B, A+B+C y A+B+C+D, respectivamente.The four training datasets each includes feature set A, A+B, A+B+C, and A+B+C+D, respectively.

En el experimento de Azure Machine Learning, estos cuatro conjuntos de datos de entrenamiento se forman a través de cuatro ramas del conjunto de datos de entrada procesado previamente.In the Azure Machine Learning experiment, these four training datasets are formed via four branches from the pre-processed input dataset. Con la excepción de la rama que se encuentra más a la izquierda, cada una de estas ramas contiene un módulo Ejecutar script R, en el que las características derivadas (conjuntos de características B, C y D) se construyen y anexan respectivamente al conjunto de datos importado.Except the leftmost branch, each of these branches contains an Execute R Script module, in which the derived features (feature set B, C, and D) are respectively constructed and appended to the imported dataset. En la siguiente figura se muestra el script de R que se usa para crear el conjunto de características B en la segunda rama a la izquierda.The following figure demonstrates the R script used to create feature set B in the second left branch.

crear funciones

La comparación de los resultados de rendimiento de los cuatro modelos se resume en la siguiente tabla:A comparison of the performance results of the four models is summarized in the following table:

comparación de resultados

Las características A+B+C muestran los mejores resultados.The best results are shown by features A+B+C. Observe que la tasa de errores disminuye cuando se incluyen conjuntos de datos adicionales en los datos de entrenamiento.Note that the error rate decreases when additional feature set are included in the training data. Esto verifica la presunción con respecto a que los conjuntos de características B y C proporcionan información pertinente adicional para la tarea de regresión.It verifies the presumption that the feature set B, C provide additional relevant information for the regression task. Sin embargo, agregar la característica D no parece proporcionar reducción adicional ninguna en lo que respecta a la tasa de errores.But adding the D feature does not seem to provide any additional reduction in the error rate.

Ejemplo 2: Creación de características en minería de textoExample 2: Creating features in text mining

El diseño de características se aplica ampliamente en las tareas relacionadas con la minería de texto, como la clasificación de documentos y el análisis de opiniones.Feature engineering is widely applied in tasks related to text mining, such as document classification and sentiment analysis. Por ejemplo, cuando quiere clasificar documentos en varias categorías, una hipótesis típica es que las palabras/frases incluidas que se encuentran en una categoría de documento tienen menos probabilidades de presentarse en otra categoría de documento.For example, when you want to classify documents into several categories, a typical assumption is that the word/phrases included in one doc category are less likely to occur in another doc category. Dicho de otro modo, la frecuencia de la distribución de palabras/frases puede caracterizar distintas categorías de documento.In other words, the frequency of the words/phrases distribution is able to characterize different document categories. En las aplicaciones de minería de texto, debido a que partes individuales de contenidos de texto normalmente sirven como los datos de entrada, es necesario el proceso de diseño de características para crear las características que implican las frecuencias de palabras/frases.In text mining applications, because individual pieces of text-contents usually serve as the input data, the feature engineering process is needed to create the features involving word/phrase frequencies.

Para llevar a cabo esta tarea, se aplica una técnica llamada hash de características para convertir eficazmente las características arbitrarias de texto en índices.To achieve this task, a technique called feature hashing is applied to efficiently turn arbitrary text features into indices. En lugar de asociar cada característica de texto (palabras/frases) a un índice determinado, este método funciona mediante la aplicación de una función de hash a las características y el uso de sus valores de hash como índices directamente.Instead of associating each text feature (words/phrases) to a particular index, this method functions by applying a hash function to the features and using their hash values as indices directly.

En Azure Machine Learning, existe un módulo llamado Hash de características que crea oportunamente estas características de palabras/frases.In Azure Machine Learning, there is a Feature Hashing module that creates these word/phrase features conveniently. La figura siguiente muestra un ejemplo del uso de este módulo.Following figure shows an example of using this module. El conjunto de datos de entrada contiene dos columnas: la clasificación de libro, que va de 1 a 5, y el contenido mismo de la reseña.The input dataset contains two columns: the book rating ranging from 1 to 5, and the actual review content. El objetivo de este módulo Hash de características es recuperar una gran cantidad de características nuevas que muestran la frecuencia de repetición de las palabras/frases correspondientes dentro de la reseña de ese libro en especial.The goal of this Feature Hashing module is to retrieve a bunch of new features that show the occurrence frequency of the corresponding word(s)/phrase(s) within the particular book review. Para usar este módulo, complete los siguientes pasos:To use this module, complete the following steps:

  • Primero, seleccione la columna que contiene el texto de entrada ("Col2" en este ejemplo).First, select the column that contains the input text ("Col2" in this example).
  • Segundo, defina el "Tamaño de bits de hash" en 8,lo que significa que se crearán 2^8=256 características.Second, set the "Hashing bitsize" to 8, which means 2^8=256 features will be created. La palabra/frase en todo el texto tendrá hash en 256 índices.The word/phase in all the text will be hashed to 256 indices. El parámetro "Tamaño de bits de hash" va de 1 a 31.The parameter "Hashing bitsize" ranges from 1 to 31. Es menos probable que las palabras/frases tengan hash en el mismo índice si este valor se define para que sea un número mayor.The word(s)/phrase(s) are less likely to be hashed into the same index if setting it to be a larger number.
  • Tercero, defina el parámetro "N-gramas" en 2.Third, set the parameter "N-grams" to 2. Con este valor se obtiene la frecuencia de repetición de unigramas (una característica para cada palabra única) y bigramas (una características para cada par de palabras adyacentes) a partir del texto de entrada.This value gets the occurrence frequency of unigrams (a feature for every single word) and bigrams (a feature for every pair of adjacent words) from the input text. El parámetro "N-gramas" va de 0 a 10, lo que indica el número máximo de palabras secuenciales que se incluirán en una característica.The parameter "N-grams" ranges from 0 to 10, which indicates the maximum number of sequential words to be included in a feature.

Módulo "Hash de características"

En la figura siguiente se muestra cómo se ven estas nuevas características.The following figure shows what these new feature look like.

Ejemplo de "Hash de características"

ConclusiónConclusion

Las funciones diseñadas y seleccionadas aumentan la eficiencia del proceso de entrenamiento, el que intenta extraer la información clave contenida en los datos.Engineered and selected features increase the efficiency of the training process, which attempts to extract the key information contained in the data. También mejoran la eficacia de estos modelos para clasificar los datos de entrada de manera precisa y para predecir resultados de interés de manera más sólida.They also improve the power of these models to classify the input data accurately and to predict outcomes of interest more robustly. El diseño y la selección de características también se pueden combinar para que sea posible hacer un mejor seguimiento computacional del aprendizaje.Feature engineering and selection can also combine to make the learning more computationally tractable. Para ello, mejora y luego reduce el número de características que se necesitan para calibrar o entrenar un modelo.It does so by enhancing and then reducing the number of features needed to calibrate or train a model. Matemáticamente hablando, las características seleccionadas para entrenar el modelo son un conjunto mínimo de variables independientes que explican los patrones existentes en los datos y, a continuación, predicen correctamente los resultados.Mathematically speaking, the features selected to train the model are a minimal set of independent variables that explain the patterns in the data and then predict outcomes successfully.

No siempre es necesario realizar el diseño o la selección de funciones.It is not always necessarily to perform feature engineering or feature selection. Esta necesidad depende de los datos que se tengan o que se hayan recopilado, del algoritmo seleccionado y del objetivo del experimento.Whether it is needed or not depends on the data to hand or collected, the algorithm selected, and the objective of the experiment.