Machine Learning. Intro fácil a qué, cómo, cuándo y dónde.

En este último FITUR 2016, digitalmeteo estuvimos presentando nuestros nuevos servicios basados en máquinas de detección de patrones y aprendizaje, aplicando a OTA’s, servicios hoteleros, etc.

Y me pidieron que escribiese un pequeño artículo para el Blog ThinkBig de Telefónica al respecto, a nivel “básico” para que todo el mundo pudiera entender los conceptos, la “idea”.

Os dejo aquí el enlace al artículo que se publicó finalmente el 1 de Febrero:
http://blogthinkbig.com/machine-learning-que-como-cuando-donde/

Pero si no os apetece seguir el enlace, os dejo aquí una copia del mismo y aprovecho para recomendaros otro al artículo al respecto las Learning Machine escrito por mi socio Andrés Hevia: “Machine Learning, el futuro ya está aquí“.

 


 

 

¡Vaya meses que llevamos! Y lo que nos espera…

Si eres un tecno-trastornado que te gusta estar al día de “lo último”, seguro que llevas meses escuchando conversaciones y leyendo artículos sobre Machine Learning y otros términos similares que despiertan fantasías, miedos y oportunidades de evolución y mejora a nuestro día a día.

 

Voy a intentar explicar de forma muy sencilla qué es una Machine Learning, qué posibilidades ofrece actualmente y cómo funcionan; de forma muy básica, sin desarrollar aquí complicados algoritmos o fórmulas matemáticas.

Qué es una Machine Learning

 

Decir que una Machine Learning es una máquina que aprende, es una definición que se queda corta, muy corta. Básicamente porque, aunque suene raro, no aprende, sino que adapta su comportamiento. No hablamos de IA (inteligencia artificial), sino de un software, un sistema, que es capaz de construir un algoritmo que se va auto-adaptando en base a los datos que se le va suministrando.  Esos datos que se le suministran deben tener siempre unos valores de entrada y de salida, es decir, la respuesta que tendría que dar la máquina si se le preguntarse por esos valores.

 

¿Parece complicado? Con un ejemplo muy simple seguro que lo aclaramos

 

Supongamos que tenemos una Machine Learning que se va alimentando de los productos que vas visitando en una e-commerce, y de los productos que añades al carrito.  Y lo mismo para todos los visitantes y compradores de la web.  Con muchos datos, la máquina debería ser capaz de saber, por simple estadística, qué productos han sido añadidos más veces al carrito cuando un nuevo visitante accede a la ficha de un determinado producto, y entonces la web podría mostrar el típico “otros usuarios han comprado” con una ristra de productos aconsejados.  ¿Hasta aquí bien?  Bueno, después de todo muchas e-commerce tienen un sistema parecido y seguro que estás harto de que alguna de ellas te inunde tu email con ofertas de productos que nunca comprarías porque una vez visitaste en su web aquella máquina de hacer palomitas…

 

Este en realidad sería un uso muy simple, básicamente un uso únicamente estadístico y de probabilidades, sin aportar los beneficios de la Machine Learning. Así que echemos una pizca de los polvos mágicos: cambiemos los datos con los que trabaja la misma máquina:  en lugar de los productos que vamos visitando, vamos a decirle a la máquina la categoría o tipo de producto, e informemos también del país desde donde estamos visitando la web, y por qué no, del mes. Y si quieres complicarlo (haciendo que las respuestas fueran infinitamente más ajustadas a lo que en realidad compraría el cliente), añade sexo, edad, y cualquier dato objetivo que se conozca.

 

A partir de aquí, el uso de estadísticas y probabilidades simples se complica bastante: se puede dar el caso de que determinados productos son solo comprados por mujeres (o casi), otros tipos de producto quizás solo se venden en momentos puntuales (verano, Navidades,etc).  Es decir, empezamos a tener un árbol de decisiones que va descartando las tipologías de productos en base a los valores de alguna variable. Así que si tenemos un sistema que hemos construido en base a estadísticas y probabilidades, el resultado puede llegar a ser en muchos casos poco preciso, además de resultar un sistema de dificil mantenimiento y evolución.

 

Parece que tenemos un caso claro para hacer trabajar a una Machine Learning, y los polvos mágicos consisten en que será ella misma la que va a ir construyendo y adaptando sus algoritmos internos en base a los datos con los que la vamos alimentando, de forma que se va adaptando y dando respuestas más ajustadas a medida que crece el volumen de datos con el que se le alimenta. En realidad, el software de la Machine Learning es especialista en construir sus propios algoritmos, nada más (y nada menos…).

 

Cómo funciona una Machine Learning

 

La “magia” de una Machine Learning es su capacidad de construir y adaptar un árbol de decisiones en base a los datos conocidos, y de aplicar además fórmulas heurísticas en cada nodo del árbol, construyendo un sistema de inferencias. Y además lo hace de forma recursiva, es decir, construye un pequeño árbol de decisión por cada rama que va creando, volviendo incluso a tener en cuenta de nuevo datos que han servido ya para llegar o descartar la rama actual. Parte de las adaptaciones que hace el sistema son precísamente en base al tipo de datos que tenga, modificando las condiciones para coger una rama u otra, al punto de poder decidir ella misma que la decisión en base a edad sea mejor hacerla por grupos más grandes o más pequeños, o incluso en algún punto, para una edad concreta. O si el tipo de dato que está estudiando es un texto, extraer las palabras claves representativas del texto y agrupar o catalogar resultados en base a esas palabras y su aparición.

 

Su proceso de aprendizaje, en realidad, consiste en la construcción de cientos, miles o millones de árboles de decisión diferentes, y probar cada uno de ellos con los datos de los que ya dispone, quedándose finalmente con el árbol que mayor aciertos ha tenido en esas pruebas internas respecto a los datos que ya conoce.

 

Por tanto, para que una Machine Learning sea realmente efectiva, es decir, para que las respuestas que ofrece sean realmente válidas, debe contar con una cantidad de datos “importante”; donde el mínimo recomendable es de 6 registros (datos reales) por cada respuesta, para cada una de las variables con las que trabaja. Es decir, si los datos con los que alimentamos a nuestra Machine Learning son “categoría de productos visitados”, “edad”, “país de origen de la visita”, “sexo” y “mes”, para cada posible respuesta necesitaríamos 30 datos diferentes como mínimo.  Así pués, si tenemos 10 categorías de producto a ofrecer a los clientes de nuestra e-Commerce, mínimo 300 registros. Y ojo, eso es lo mínimo, porque al tener variables numéricas (edad y mes) sería aconsejable contar con datos para cada uno de sus posibles valores, lo que dispara potencialmente el número de datos necesarios para que la máquina pueda aprender de forma eficiente y dar respuestas válidas y relevantes.

 

Obviamente, el proceso de aprendizaje inicial, con los posibles miles o millones de árboles de decisión que debe construir y probar,  puede ser un proceso “pesado” que requiera una gran capacidad de computación.  Y es precisamente por eso porque en los últimos tiempos se ha disparado el uso de Machine Learnings: el abaratamiento de la capacidad de proceso, capacidad de computación en la nube a costes bajos y al alcance de cualquiera.

 

Cuándo y dónde

Llevamos años rodeados de Machine Learnings en todo o casi todo lo que nos rodea en internet:  desde el filtro de spam de los correos donde GMail se lleva el premio a mejor máquina de detección (que entre todos hemos ido entrenando marcando y desmarcando correos como basura durante años), hasta los sistemas de anuncios de Facebook que nos bombardea con productos, fan-pages y grupos hiper adaptados a nosotros (y que nosotros mismos alimentamos diciendo a Facebook nuestros intereses, qué nos gusta y qué no, a qué tipo o perfil de gente seguimos o somos amigos, y qué videos o webs abrimos desde su aplicación), o el método predictivo de cálculo de costes/beneficios del sistema de anuncios de Bing de 2010.

 

Por supuesto hay aplicaciones que entrarían en el terreno de la ciencia ficción, pero reales. Como por ejemplo los sistemas predictivos que se están empezando a testear en algunos lugares para saber cuándo una persona es potencialmente un criminal y poner los medios para evitar que cometa algún tipo de daño o crimen.

 

Y otras aplicaciones mucho más cercanas a nuestro día a día o de nuestro tiempo de ocio, como las aplicaciones que estamos llevando a cabo en digitalmeteo, en las cuales aplicamos diferentes Machine Learnings en los eCommerce de nuestros clientes para estudiar el impacto de la meteorología en el comportamiento de sus clientes, y proponer acciones ad hoc: desde adaptar el banner o landing-page de su web, hasta filtrar y ordenar el tipo de productos a mostrar acorde al contexto meteorológico en tiempo real del visitante, pasando por detectar patrones de visitas en restaurantes o centros comerciales acordes a la meteo (y con la previsión meteorológica poder ajustar stock y plantilla acorde), u ofrecer actividades de ocio personal y familiar que se adapten a los gustos de todos y que se puedan realizar en el momento de la consulta o cuando le indiquemos al sistema, porque sabe qué tiempo hará, y no te ofrecerá salir en bici con los peques si va a estar lloviendo o hace un viento de mil demonios.

 

Como veis, las aplicaciones de una Machine Learning son tan amplias como la capacidad creativa de cada uno, pero todas tienen como objetivo o bien detectar patrones en los datos, o bien responder a determinadas preguntas de forma predictiva.  En definitiva, ahorrarnos tiempo en el estudio de datos que podría llevarnos años, y definir casuísticas que de otra forma, muy probablemente, nunca viésemos.