Fases para construir un modelo predictivo de Inteligencia Artificial
Big-Data

Fases para construir un modelo predictivo de Inteligencia Artificial

Hoy hablaré sobre la inteligencia artificial aplicada a los datos o, más concretamente, sobre el Machine Learning. Una de las tecnologías emergentes que todo el mundo quiere tener implantada en sus procesos con el fin de optimizarlos. Para explicar esta tecnología utilizaré un caso de uso bastante típico.

Big-Data

Casos de Uso

 

Desarrollaremos un caso de uso del sector del retail en el cual disponemos de una base de datos con más de 100.000 filas. Dicha base contiene información histórica de descuentos creados en la compañía sobre productos e información sobre el uso de estos descuentos por parte de los usuarios.

 

En todo análisis de datos de predicción tenemos que definir un objetivo y qué quiero saber con antelación. ¿El cupón ha sido utilizado previamente? ¿Cuánto tiempo tardará en usarse un descuento? El objetivo será el valor de la información que queremos predecir.

 

EnEn el desarrollo de nuestro caso de uso tomamos como objetivo conocer cómo debemos crear un descuento para asegurarnos, con una alta probabilidad, que será canjeado por los usuarios.

 

En Por tanto, vamos a predecir el éxito que un descuento tendrá entre los usuarios, para que podamos estudiarlo y ajustarlo antes de lanzarlo (lo dirigiremos a una zona geográfica concreta, a un rango de edad, etc.), con el fin de obtener éxito comercial.

Primera fase – Tratamiento y saneamiento de los datos

 

El objetivo de esta fase consiste principalmente en hacer que los datos recibidos sean útiles para el análisis y se puedan emplear para entrenar el modelo.

 

¿Cómo es este proceso? A simple vista parece fácil, pero, en realidad, es la tarea que, por lo general, más tiempo ocupa en este tipo de trabajos, alrededor del 80% del tiempo. Esto se debe a que en casi la totalidad de los casos, los datos que recibimos no necesitan ningún tipo de saneamiento porque van a ser leídos y procesados por un humano. Pero ahora la cosa es distinta y tendremos que lograr que una máquina aprenda el significado de cada una de las columnas.

 

Para que nos hagamos una idea: si en datos tenemos 60 métricas diferentes, es muy posible que tan solo 20 sean las estrictamente necesarias, y el resto de datos en muchas ocasiones, o bien serán duplicados/nulos sin valor para el modelo, o aportarán tan poco que los podemos considerar como despreciables.

 

En esta fase, para la mayoría de tareas de análisis podemos utilizar la librería “matplotlib“. Se trata de una librería para python que permite hacer diferentes tipos de gráficas a través de las cuales, podemos observar la repercusión que tiene la variación de diferentes columnas con respecto al valor que queremos predecir.

Entrenamiento-del-modelo

Segunda fase – Entrenamiento del modelo

 

Tras el saneado de datos, vamos a preparar nuestro modelo predictivo en base a unos resultados conocidos. Esto es: disponemos de las diferentes variables y el resultado real que se dio para cada una de ellas. Reservaremos aproximadamente un 80% de los datos para crear y entrenar el modelo predictivo y con el 20% restante probaremos la eficacia del modelo.

 

Esta tarea se realiza dividiendo todos los datos en cuatro ficheros diferentes, “train_Y”, “test_Y”, “train_x” y “test_x”. “Train” y “Test” hacen referencia al uso que le daremos a ese archivo en concreto, “train_x” y “train_Y” se usarán para entrenar el modelo mientras que “test_x” y “test_Y” serán ese 20% restante que se utilizarán para validar la eficacia del modelo. Por X nos referimos a las diferentes “features” o columnas de datos que emplearemos para predecir y “labels”/objetivo será la columna que queremos obtener.

 

Tras la primera fase, hemos eliminado las filas que tenían celdas vacías, columnas inservibles, categorizado algunas columnas en concreto (ej: hombre/mujer=0/1, No/si=0/ 1…) y damos por hecho que todo está, dentro de la medida de lo posible, en un estado legible para nuestra máquina. Ahora vamos a empezar a entrenar a nuestro modelo.

Desarrollo Software
Crear-y-entrenar

Tercera fase – Crear y entrenar el modelo predictivo

 

Ahora crearemos un modelo predictivo. Para esto es necesario saber, principalmente, qué tipo de resultado esperamos, y a este resultado lo llamaremos objetivo. El objetivo: ¿es un valor binario del tipo verdadero/falso, sí/no? ¿El resultado será una cantidad numérica o una cadena de texto? La eficacia del modelo dependerá del objetivo buscado y de la cantidad y calidad de los datos que dispongamos.

 

En nuestro caso, dado que intentamos predecir una categoría conocida, con valores 1 y 0 (sí y no), utilizaremos como punto de partida un método conocido como stochastic gradient descent o SGD (clasificador lineal como SVM), ya que es conveniente no decantarse por un método de clasificación al instante, sino que deberemos probar varios y escoger el que mejor resultado proporcione.

 

¿Qué hacemos con el modelo?

 

Tras seguir estos pasos, disponemos de unos datos “limpios” y de un modelo entrenado y tras probar varios clasificadores (en nuestro caso), hemos escogido uno bastante eficiente.

Ahora queremos usar este modelo entrenado en casos de uso reales. Para esto debemos hacer que persista para aplicarle los datos nuevos que van generando. En este caso de ejemplo que nos ocupa hemos usado la librería “joblib” que, con apenas unas líneas, nos permite guardar en un archivo el modelo entrenado para poder cargarlo en cualquier situación sin dificultades.

Un aspecto a tener en cuenta en cuanto a espacio y rendimiento es el cómo persistimos el modelo, la librería que vamos a utilizar y el tipo de modelo que hayamos entrenado. La diferencia puede ser desde unos Kb hasta otros que ocupen decenas de Mb, como, por ejemplo, modelos de tratamiento de imágenes.

Conclusión

 

El proceso de aplicar inteligencia a los datos es un proceso basado en fases donde la parte más importante y costosa recae principalmente en el entendimiento, clasificación y preparación de los datos, que suele ocupar el 80% del tiempo en la preparación de un modelo predictivo.

 

Por otra parte, la selección de las herramientas que participan en la creación del modelo es un arte al que debemos prestar mucha atención para conseguir unos buenos resultados.

Compartir artículo
Jaime Satorres
jaime.satorres@pfstech.es