lunes, 29 de septiembre de 2014

Tutorial de BigML, un ejemplo práctico para conocer Machine Learning

Para trabajar con Machine Learning en BigML, solo tienes que aplicar 3 pasos:
  1. Crear un dataset (Recopilación de un conjunto de datos históricos de valor).
  2. Crear un modelo con los datos (Entrenar un algoritmo).
  3. Realizar las predicciones (Ejecutar el algoritmo).
Suena complicado, pues verás que fácil es.

Ejemplo práctico 


Vamos a ver un ejemplo práctico de cómo explotar los datos que tenemos en la empresa para tomar decisiones, en este caso evitar que un cliente se dé de baja de nuestros servicios.
Imaginemos una empresa ficticia que ofrece servicios de telefonía. El objetivo que pretende nuestra empresa es mantener los clientes, por lo tanto, la pregunta es: ¿un cliente seleccionado se va a dar de baja en los siguientes X meses?. Las posibles respuestas son dos: sí o no. (será nuestra predicción).

Paso 1: Crear un dataset


Una de las tareas más importantes en el proceso de predicción es la selección y preparación de los datos para entrenar al sistema. Muchas veces pensamos que teniendo más datos, mejores serán las predicciones. Pero en la realidad no funciona así, se necesitan datos de calidad y bien estructurados. Si los datos que hemos seleccionados no son de calidad lo que estamos haciendo es introducir ruido en el sistema produciendo predicciones de poco valor o nulas. 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 datos que tengan sentido para responder la pregunta que nos estamos haciendo.

En nuestra empresa ficticia, vamos a representar cada cliente con algunos datos clave de su cuenta, por ejemplo, su antigüedad y el número de llamadas que ha realizado. La pieza mínima de información que usamos para definir el perfil de los clientes se llama característica (feature en inglés). El conjunto de clientes, junto con sus características, forman una dataset (un fichero CSV) que es el que utilizaremos para realizar las predicciones.


Características del dataset

Para predecir las bajas de un servicio de telefonía podríamos dividir las características en 4 grupos:
  1. Características del cliente: datos básicos del usuario (por ejemplo edad, sexo, ciudad de residencia).
  2. 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).
  3. Características de uso: uso que hace el cliente del sistema (número de interacciones con el servicio, planes contratados, gasto mensual).
  4. Características adicionales o de contexto: otro tipo de información útil para la predicción (por ejemplo, antigüedad del cliente).
Usaremos un fichero que se encuentra a nuestra disposición en BigML 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 ilustrar el proceso de predicción.

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


Cada fila corresponde a un cliente, con sus características y en la última columna se indica si ese cliente se dio de baja o no (columna "churn"). El fichero original lo hemos dividido en dos.Una parte con el 80% de los datos para crear un modelo (entrenar el sistema). El otro 20% restante para verificar si el modelo hace buenas predicciones.

Si no tienes cuenta en BigML , create una (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).


Una vez subido, el fichero aparecerá en la lista de Sources:


Pulsando en el nombre del fichero que has subido, podrás ver una muestra de los datos (hasta 25 instancias). Observa que las filas se han convertido en columnas y las columnas en filas:
Como puedes observar, 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, procedemos a crear un Dataset, es decir, transformar el CSV en un formato que BigML puede entender y tratar. De esta forma podremos realizar un análisis previo de los datos.

Con un clic en el icono de la nube representado con un rayo creamos el Dataset en "1-CLICK DATASET":

Aparecerá la siguiente ventana:

Una vez que tenemos el dataset podemos hacer un pre-análisis de los datos. En la parte derecha, podemos visualizar los histogramas, que sirven para analizar la variación y distribución de cada característica. (Pasa el ratón por delante de las figuras para ver sus propiedades). 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 utilizaremos para predecir (automáticamente se asigna como objetivo la última columna del fichero, pero se puede cambiar):


También hay que destacar que la primera fila State, que 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 podría ser 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).

¿Interesante hasta ahora no? pues espera a ver lo que viene.

Paso 2: Crear un modelo de datos


Tras crear el Dataset, procedemos a crear y entrenar el modelo. En este paso BigML va a detectar los patrones de comportamiento que llevan a los clientes a darse de baja. En la vista de Dataset hacemos clic de nuevo en el icono de la nube representado con el rayo y pulsamos esta vez en "1-CLICK MODEL":


Aparecerá una ventana con el árbol de patrones:


¿Qué es un árbol de patrones? pues este 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 porcentaje.

Hasta este punto tenemos el modelo entrenado con datos históricos. El sistema ha detectado los patrones junto con la confianza de cada uno. Llego el momento de realizar las predicciones.

Paso 3: Realizar predicciones


Existen varias formas de realizar las predicciones. En este ejemplo usaremos una de las más sencillas. Se trata de una predicción individual, de un único cliente, con las características que nosotros definamos.

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


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


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 para muchos escenarios y ejemplos. Para predicciones "masivas" podemos usar un fichero de entrada con los datos de todos los usuarios de los que queremos hacer predicciones. Esta se realiza 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.


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 el artículo "Ensembles".

Conclusiones 


Una herramienta como BigML puede facilitarnos el trabajo de realizar predicciones. Si queremos integrar una aplicación para darle un valor agregado sin programar nada, podriamos entrar en unos de sus planes de pago y utilizarla con un costo razonable.

Solamente te digo que de la misma manera que este ejemplo facilita la información de cómo predecir las 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?

Fuenteclevertask

6 comentarios: