Free Trial

Blog

Visiones e ideas de las mentes más brillantes en el campo del análisis.

A menudo, cuando queremos comenzar a desarrollar un modelo de machine learning, nos encontramos con que debemos preparar los datos con mucho detalle para conseguir que lleguen a un estado que nuestros modelos puedan interpretar. Esto, además, depende del tipo de modelo de machine learning que queramos utilizar, ya que algunos admiten valores que otros no son capaces de manejar.

 

Por eso, cuando preparamos los datos para probar con múltiples modelos y evaluar cuál nos da un resultado mejor, lo ideal es preparar los datos de una manera que nos permita alimentarlos a cualquier tipo de modelo, por lo que ciertas tareas como el escalado de variables numéricas, para que todas las variables numéricas se encuentren distribuidas en rangos similares y por tanto influyan de una manera proporcional a su importancia, o tareas como la conversión de variables categóricas a números que sean entendibles por los modelos, son inevitables.

 

En esta ocasión, la macro que acompaña a este post trata precisamente de esta última tarea, enfocada en convertir en numéricas variables que son de naturaleza categórica, un proceso llamado one-hot encoding. Por medio de este proceso, creamos una nueva columna de tipo flag para cada categoría distinta existente en una columna no numérica, y según el valor de cada fila, solo uno de los flags creado valdrá 1. Visualmente, sería esta situación:

 

IgnacioVilaplana_0-1674738908148.png

 

Un aspecto importante cuando realizamos esta tarea en el entrenamiento de un modelo de machine learning es que todas las nuevas columnas que creemos en este proceso, para cada una de las variables categóricas que queramos convertir a numéricas, tenemos que ser capces de volver a repetir este proceso, de manera idéntica, cuando vayamos a hacer la predicción de nuevos casos en el futuro. Por tanto, debemos guardar, junto al modelo entrenado, los valores de las columnas nuevas que crearemos, para no crear nuevas columnas desconocidas para el modelo, ni tampoco que falten columnas necesarias, aunque su valor sea 0.

 

La macro creada es muy sencila, y permite indicar si estamos usando esta herramienta en un workflow de entrenamiento de modelo predictivo, o bien se trata de un workflow de scoring. La diferencia permitirá el almacenamiento de los valores one-hot en la carpeta seleccionada, o su carga desde dicha carpeta.

 

IgnacioVilaplana_2-1674738954790.png

 

Además, la macro nos va a permitir seleccionar cuáles de las variables categóricas de nuestro dataset queremos que pasen por el proceso de one-hot encoding, así como el número máximo de categorías que queremos que se generen para una misma variable. Esto último es importante ya que si tenemos variables con una alta dimensionalidad, o valores distintos, podemos acabar con un número tan grande de columnas de tipo flag que compliquen mucho la vida a los modelos, por lo que la macro creará valores solo para las n columnas más comunes de dicha variable.

 

Es importante resaltar que deberemos usar siempre la misma configuración elegida en la etapa de entrenamiento que en la de predicción, para que el proceso de creación de columnas de tipo flag sea idéntico en ambas fases, y los modelos funcionen sin problemas.

 

¡Espero que os sea útil esta herramienta!

Etiquetas