Fases para construir un modelo predictivo de IA

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

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, que contiene información histórica de descuentos creados en la compañía sobre productos y la 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 ¿si el cupón ha sido usado? ¿cuánto tiempo tardará en usarse un descuento? El objetivo será el valor de la información que queremos predecir.

En 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. Por tanto vamos a predecir el éxito que un descuento tendrá entre los usuarios, esto nos permitirá estudiarlo y ajustarlo (dirigirlo a una zona geográfica concreta, un rango de edad, etc) antes de su lanzamiento 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 te 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.

Segunda fase – Entrenamiento del modelo

Tras el saneado de datos, vamos a preparar nuestro modelo predictivos en base a unos resultados conocidos. Esto es disponemos de las diferentes variables y el resultado real que se dió para cada una de ellas. Lo que vamos a hacer básicamente es reservar aproximadamente un 80% de los datos para crear y entrenar el modelo predictivo y con el 20% restante vamos a probar 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” hace 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 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 por nuestra máquina, vamos a empezar a entrenar nuestro modelo.

Tercera fase – Crear y entrenar el modelo predictivo

Ya es la hora de crear un modelo predictivo. Para esto es necesario saber, principalmente qué tipo de resultado esperamos que llamaremos objetivo. El objetivo… ¿Es un valor binario del tipo verdadero/falso, sí/no? ¿El resultado será una cantidad numérica? ¿O será 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 intentábamos predecir una categoría conocida, con valores 1 y 0 (sí y no), utilizamos un método conocido como stochastic gradient descent o SGD (clasificador lineal como SVM) como punto de partida ya que es conveniente no decantarse por un método de clasificación al instante, sino hay que probar varios y escoger el que mejor resultado proporcione.

¿Qué hacemos con el modelo?

Tras estos pasos ya tenemos unos datos “limpios”, un modelo entrenado y tras probar varios clasificadores (en nuestro caso)  ya hemos escogido uno bastante eficiente y… ¿ahora qué?

Una vez hecho todo el proceso, queremos usar ese modelo entrenado en casos de uso reales. Para esto debemos hacer que persista para poder aplicarle los datos nuevos que van generando. En este caso de ejemplo que nos ocupa hemos usado la librería “joblib” que  con a penas unas líneas, nos permitió 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 en el que debemos prestar mucha atención para conseguir unos buenos resultados.

 

 

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *