Tengo que reconocer que la primera vez que oí hablar del término Machine Learning (ML), lo asocié de manera equivocada a otra cansina repetición más de los lenguajes de programación, en su interminable afán de encontrar el santo grial definitivo con las máquinas. De hecho, descarté intentar entender en qué consistía, por hastío, por no seguir la corriente de tantos y tantos métodos de programación que aparecen con la misma frecuencia que lo hace la moda prêt-à-porter de cada año.
Todos hemos oído hablar del Bigdata, de cómo los gigantes tecnológicos GAFAM (Google, Amazon, Facebook, Apple, Microsoft) tienen información nuestra que ni siquiera sabíamos que hemos entregado. También hemos visto cómo nuestras búsquedas por internet se traducen en sugerencias de compras y visitas a páginas, cómo nuestras redes sociales favoritas nos alimentan con los contenidos más personalizados y con nuestros gustos, cómo Siri, Google Translate y Waymo han conseguido ese nivel tecnológico con el uso de los datos. Y eso fue lo que al final despertó mi interés por el mundo de los datos. ¿Cómo lo hacen?, ¿qué lógica?, ¿qué hay detrás de todo esto?
Un poco de contexto…
Allá por los años 50 y 60 del siglo pasado, se empezó a acuñar el término ‘Artificial Intelligence’ (AI) aplicándolo a la capacidad de las máquinas para tomar determinadas decisiones. El problema era que la capacidad de computación en ese momento era la que era, así que la palabra ‘Intelligence’ era prácticamente un eufemismo. Las máquinas aprendían lo que se les programaba; no existía capacidad de aprendizaje o bien, éste era muy pobre. A medida que esa potencia de cálculo se iba incrementando (Ley de Moore), se podían desarrollar nuevos sistemas que procesaban más rápido y mejor la información. Aparecieron los sistemas expertos que codificaban de forma if-then-else, el conocimiento de una persona que dominaba unas determinadas disciplinas. Pero fueron un enorme fracaso, debido a lo complejos que eran de mantener y lo imprecisos que se mostraban ante situaciones que no se habían codificado de antemano.
ML había sido definido por Arthur Samuel en 1959, como el campo de estudio que permitía a los ordenadores obtener la capacidad de aprender sin que se les hubiera programado explícitamente. Pero no fue hasta principios de 2000 que ML fue evolucionando cada vez más de manera global, de la mano de grandes empresas como IBM o Microsoft y empezó a expandirse de manera global.
Para ordenar correctamente los términos que se utilizan en el mundo de ML, es necesario ilustrar un poco la taxonomía con respecto al resto de disciplinas de conocimiento de AI y Data Science (DS).
Taxonomía de AI y DS
Como podemos ver en la ilustración, ML forma parte de las técnicas de AI para manejar datos de forma autónoma; pero también utiliza los métodos y conocimientos de DS para obtener información del análisis masivo de datos (Bigdata), efectuando predicciones y explicando comportamientos.
Pero ¿cuáles son las principales tareas dentro de ML?
- Construir un modelo a partir de algunos datos del conjunto muestral.
- Procesar los datos en bruto y vectorizarlos.
- Escoger un modelo que explique con la mayor precisión posible esos datos.
- Ajustar los parámetros y componentes de ese modelo.
- Validar ese modelo con nuevos datos desconocidos.
Dónde se ubican ML y AI
La clasificación de los datos que se acostumbra a utilizar en ML, tiene que ver sobre todo con la tipología de los mismos y la finalidad del modelo de aprendizaje y predicción deseados. De esta forma tenemos estos tipos de aprendizaje:
- Aprendizaje supervisado: si en los datos existe al menos una variable explicativa que permite predecir algo en base a los datos anteriores. Se puede utilizar como:
- Modelo de previsión.
- Regresión si se usa para predecir un escalar o un vector entre variables dependientes e independientes.
- Clasificación si se usa para predecir un valor finito de un conjunto dado.
Ejemplos de algoritmos utilizados son los modelos de regresión lineal y logística, árboles de decisión, redes neuronales, K-NN, etc. …
Éstos basan su aprendizaje en tener un modelo entrenado a partir de un conjunto de datos ya etiquetados, siendo estas etiquetas la salida deseada para cada caso del conjunto de datos. Gracias a este conjunto de datos ya etiquetado, es posible entrenar un modelo que será capaz de “aprender” a predecir la salida para un conjunto de datos nuevo.
Un ejemplo práctico de este aprendizaje sería efectuar una predicción sobre si mañana va a llover, basándonos en los datos de lluvia de los días anteriores.
- Aprendizaje no supervisado: si en los datos no hay ninguna variable explicativa y tenemos que explicarlos como agrupaciones que muestren información común entre los datos (clustering).
Ejemplos de algoritmos utilizados son agrupamiento jerárquico, k-means etc. …
Éstos se centran en tratar de agrupar mediante el clusterin; jerárquicos (distintos niveles de agrupación por jerarquía) y no jerárquicos (grupos en el mismo nivel, sin jerarquía).
Un ejemplo podría ser la agrupación de clientes con hábitos de compra (sin especificarlos) parecidos.
Existen otros tipos de aprendizajes, pero no son objeto de este artículo.
Parece que ML realiza tareas milagrosas, pero no tanto; en realidad utiliza algoritmos matemáticos que tienen por finalidad acercarse a la mejor estimación posible. La principal forma de saber si los modelos que estamos utilizando son válidos, es midiendo el error que se comete al efectuar una previsión. Pero ¿cómo sabemos cuánto nos hemos equivocado?
Para ello se utilizan los datos que ya tenemos. La técnica más habitual consiste en dividir el conjunto de datos en dos o tres categorías para entrenar y validar nuestro modelo.
- Training dataset o conjunto de datos para entrenar el modelo. Sobre estos datos probamos nuestro modelo de predicción, ajustamos los parámetros de éste y medimos el error promedio entre la predicción y la realidad.
- Test/validation dataset o conjunto de datos para evaluar a nuestro modelo. Utilizamos estos datos que son nuevos para nuestro modelo, predecimos el resultado y medimos el error cometido respecto al valor real.
Con los resultados de los errores, la persona que está probando el modelo (el científico de datos) puede decidir si el ejercicio que ha efectuado sirve para predecir situaciones nuevas y tiene un buen rendimiento con los datos o bien si tiene que descartar ese modelo para escoger otro, efectuar ajustes en los parámetros del modelo, tratar los datos de forma diferente, etc … El científico de datos es el responsable de supervisar que el modelo es razonablemente eficaz en las situaciones nuevas que vayan a producirse. Esto cambia en el Deep Learning (DL), una rama de ML, donde se pretende que sea la máquina la que aprenda por sí misma.
Hay mucho más contenido que explorar dentro del mundo de ML, pero lo más importante es que se trata de una herramienta que nos permite realizar desde tareas muy próximas a la comprensión y razonamiento humano, hasta niveles muy complejos para nuestro entendimiento cotidiano. La mente humana puede procesar determinada cantidad de información y realizar proyecciones e interpretaciones de forma limitada. En ML ya se está consiguiendo analizar qué estructura de proteínas son más consistentes para ser utilizadas en medicamentos, qué previsión de incremento de temperaturas se van a dar con el cambio climático en determinadas regiones, el comportamiento y tendencias de voto en las elecciones locales/nacionales etc. …
Espero continuar aprendiendo en este mundo de los datos que me apasiona. “No es complicado; al fin y al cabo, sólo son matemáticas; ¡si fuese azar, sí que sería imposible!”.
Autor: Miquel Sanromà, Head of Infraestructura y Seguridad en BBVA IT España