Machine Learning: predicciones basadas en datos con BigML

by Andrés González

La predicción de bajas de usuarios de servicios de suscripción es una de las aplicaciones más conocidas en el ámbito del Machine Learning, Big Data y Data Prediction.

Las tecnologías de predicción basadas en datos se han simplificado tanto que se han puesto al alcance no sólo de las grandes empresas, sino a las de cualquier tamaño. Herramientas como las desarrolladas por BigML están aproximando el Machine Learning a las empresas, pero no hay que olvidar que la materia prima para cualquier sistema predictivo son los datos. No en vano, el esfuerzo que estamos dedicando a la fase de recogida y tratamiento de datos previa a la algoritmia es entre un 80% y un 90% del tiempo total del proyecto. En todo caso, veamos cómo se pueden hacer predicciones con unos datos de ejemplo muy preparados.

Predicción en 3 pasos

En el anterior artículo hacíamos una pequeña introducción al Machine Learning. En este vamos a ver un ejemplo práctico, paso a paso, de cómo explotar datos que tenemos en la empresa para tomar decisiones, en este caso para evitar que un cliente se dé de baja de nuestros servicios (y que probablemente se vaya a la competencia).

Nuestra empresa ficticia ofrece servicios de telefonía y la pregunta que queremos responder es: “¿Este cliente se va a dar de baja en los siguientes X meses?”. Las posibles respuestas (nuestra predicción) son dos: sí o no.

Los 3 pasos por los que pasaremos son:

  1. Recopilar un conjunto de datos históricos de valor.
  2. Crear un modelo con los datos (entrenaremos un algoritmo).
  3. Hacer predicciones.

 

Primer paso: recopilación de datos

La selección y preparación de los datos para entrenar al sistema es una de las tareas más importantes del proceso. Como vamos a ver en el resto del artículo, las predicciones son tan sencillas de hacer con BigML que podemos tener el vicio de poner todos los datos disponibles pensando que cuantos más tengamos, mejores serán las predicciones. Pero no, no sirve cualquier dato. Necesitamos datos de calidad y bien estructurados. Si no los seleccionamos correctamente lo que haremos será introducir ruido en el sistema que producirá predicciones de poco o nulo valor. Aunque durante el proceso de entrenamiento del algoritmo el propio sistema puede detectar y descartar datos que considera superfluos, es importante hacer una labor de selección de los datos que tengan sentido para responder la pregunta que les estamos haciendo. En el caso que vamos a tratar en este artículo, esta tarea ya está hecha, pero si quieres más información, revisa esta entrada de nuestro blog que explica con más detalle por qué es importante limpiar, seleccionar y transformar los datos.

En nuestro ejemplo, vamos a caracterizar a cada cliente (o abonado) con algunos datos clave de su perfil, como por ejemplo su antigüedad o el número de llamadas que ha hecho. La pieza mínima de información que usamos para definir el perfil de los abonados la llamaremos característica (“feature” en inglés). El conjunto de abonados, junto con sus características, forman la base de datos (un fichero CSV) que es el que usaremos para hacer las predicciones.

Tipos de características

Para predecir las bajas de un servicio de telefonía podemos dividir las características en 4 grupos:

  • Características del cliente: información básica del usuario (por ejemplo edad, sexo, ciudad de residencia…).
  • Características de soporte: son datos sobre la interacción del usuario con el servicio de atención al usuario (número de llamadas, cuestiones planteadas, valoración de su satisfacción…).
  • Características de uso: uso que hace el abonado del sistema (número de interacciones con el servicio, planes contratados, gasto mensual…).
  • Características adicionales o de contexto: otro tipo de información útil para la predicción (por ejemplo, la antigüedad del cliente).

 

Vamos ya con el ejemplo concreto. Basaremos el ejercicio de este artículo en un fichero este fichero para predecir las bajas de clientes en una empresa ficticia de telefonía. Al ser un ejemplo, las características no se ajustan exactamente a las que desearíamos, pero nos sirve para hacer un paseo por el proceso de predicción.

El fichero que usaremos es un CSV tiene información de 3.333 abonados y tiene este aspecto:

tabla-datos

Cada línea corresponde a un abonado, con sus características y con una última columna que indica si ese abonado se dio de baja o no (columna “churn”). Hemos dividido el fichero original en dos, uno con el 80% de los datos y otro con el 20%. Para entrenar al sistema (crear un modelo) usaremos el fichero con el 80%. Para verificar si el modelo hace buenas predicciones usaremos el 20% restante.

Manos a la obra. Ahora toca subir los datos al sistema. Si no lo has hecho ya, crea una cuenta en BigML (es gratis). En el panel de control (“Dashboard”), pulsa en el icono de la carpeta y selecciona el fichero con el 80% de los datos en tu ordenador o simplemente arrástralo desde el escritorio al espacio de trabajo (drag&drop).

subir-datos-bigml
El fichero aparecerá en la lista de “Sources”:

Source-Upload

Pulsando en el nombre del fichero podrás ver una muestra de los datos que has subido (hasta 25 instancias). Observa que las filas se han convertido en columnas y las columnas en filas:

source-previsualizacion

BigML ha detectado el tipo de dato de cada característica. En este caso sólo tenemos datos de texto y datos numéricos, representados por “ABC” y “123” respectivamente.

Una vez subidos los datos vamos a crear un Dataset, es decir, transformar el CSV en un formato que BigML puede tratar y en el que podremos hacer un análisis previo de los datos.

Con un clic en el icono de la nube representado con un rayo creamos el Dataset (“1-CLICK DATASET”):

dataset-one-click

Aparecerá automáticamente la siguiente ventana:

 

dataset-histogram

Aquí ya podemos hacer un preanálisis de los datos. Los histogramas de la derecha sirven para analizar la variación y distribución de cada característica. No entraremos en detalle pero es interesante pasar con el ratón por las figuras para ver sus propiedades. También es interesante fijarnos en la última fila, que BigML ha marcado con una diana para indicar que es el campo objetivo, es decir, el campo que vamos a predecir (automáticamente se asigna como objetivo la última columna del fichero, pero se puede cambiar). Haz clic en el lápiz que sale al pasar el ratón por encima del nombre del campo y fíjate en la ventana que aparece:

campo-objetivo-machine-learning

También hay que destacar que la primera fila “State” tiene una admiración con la leyenda “This field is not preferred”. El sistema ha detectado que este campo no es significativo para hacer predicciones de bajas, ya que tal y como se ve en el histograma, es un dato que se puede considerar aleatorio. Es un dato que pensábamos que sería interesante para hacer la predicción, pero BigML lo descarta por no aportar valor y porque puede introducir ruido en las predicciones (aunque podríamos usarlo si consideramos que BigML se ha equivocado en su valoración).

 

Segundo paso: crear un modelo («entrenar» al sistema)

Tras crear el Dataset, vamos a crear y entrenar el modelo. En este paso BigML va a detectar los patrones de comportamiento que llevan a los abonados a darse de baja. En la vista de Dataset clicamos de nuevo al icono de la nube representado con el rayo y pulsamos esta vez en “1-CLICK MODEL”:

clic-modelo-ml

En tu pantalla aparecerá el árbol de patrones:

arbol-decisiones

Un árbol de patrones representa un modelo en el que cada nodo está asociado con una pregunta a un valor de una característica, con un número de posibles respuestas representadas por las ramas, en el que las hojas se asocian a los valores de salida. La respuesta a la primera pregunta está en el nodo superior. Según se baja por los nodos del árbol se van respondiendo a más preguntas. El valor del último nodo nos da la predicción del modelo. Cada nodo lleva asociada una confianza en tanto por ciento.

En este punto ya tenemos el modelo entrenado con datos históricos. El sistema ha detectado los patrones junto con la confianza de cada uno. Vamos ahora a hacer predicciones.

 

Tercer paso: hacer predicciones

Hay varias formas de hacer predicciones. En este artículo vamos a usar una de las más sencillas. Se trata de una predicción individual, de un único abonado, con las características que definamos nosotros.

Para empezar, en la vista del modelo pulsa en el icono de la nube representado con el rayo y después en “PREDICT”:

 

predicciones-bigml

Automáticamente aparece una pantalla para poner un valor a cada una de las características:

prediccion-machine-learning

 

Selecciona los valores que desees y pulsa en el botón verde inferior “Predict”. ¿Qué valores has puesto?¿Qué predice el modelo para este abonado?

Una predicción “uno a uno” no es práctica en muchos escenarios. Para predicciones “masivas” podemos usar un fichero de entrada con los datos de todos los usuarios de los que queremos hacer predicciones. Se hacen desde la opción “BATCH PREDICTION” que habrás visto al pulsar la última vez en el icono de la nube representado con el rayo.

Esta opción, además de servir para hacer predicciones masivas, sirve para verificar si el modelo está funcionando correctamente. ¿Te acuerdas del fichero con el 20% de los datos? Es hora de usarlo. Hay que subirlo, crear un Dataset y hacer predicciones “Batch Prediction”.

¿Ya lo has hecho? El modelo que hemos creado, ¿está haciendo predicciones fiables?¿Qué porcentaje de las predicciones ha acertado? Te adelantamos que este modelo se puede mejorar, pero eso lo explicaremos en próximos artículos. Te damos una pista por si quieres hacerlo tú mismo: “Ensembles”.

 

Conclusiones 

El Machine Learning se está acercando a las empresas. Pero sería un error pensar que lo único que necsitamos es un servicio como BigML para hacer predicciones. No se debe pasar por alto que los datos hay que recogerlos, limpiarlos, transformarlos… La calidad de una predicción depende en mucha más medida de los datos, su estructura y cómo los tratamos que del algoritmo que usemos. Por otro lado, de la misma forma que hemos visto cómo predecir bajas, ¿por qué no predecir cuál es el plan más adecuado para cada cliente? Los datos están ahí. Es hora de empezar a explotarlos para ayudar a la evolución de tu empresa. Ya no es necesario instalar infraestructuras dedicadas con grandes costes de implementación y gestión. ¿Te animas?