Tiempo estimado de lectura: 16 minutos.
Hola, ¿cómo empezaste la semana? Cómo veis, yo comienzo como terminé, escribiendo. No quiero hacer entradas muy largas y ayer me quedé a medias, sin contar todo lo que quería sobre algoritmos. Así que: Hablemos de algoritmos.
Este capítulo y los siguientes son bastante técnicos. Intentaré simplificarlos pero hay terminología que tengo que usar sí o sí. Si después de mis explicaciones te queda alguna duda, escríbeme en comentarios e intentaré aclararlas o darte otras referencias donde pueda estar todo más claro.
Parafraseando a Unamuno (y es posible que a Fray Luis de León antes aunque aquí hay dudas de su autoría), como decíamos ayer, hoy empezaré con algunas definiciones y te contaré más en detalle algunos tipos de algoritmos modelos de analítica avanzada.
Nuevos tiempos, nuevos lenguajes
Algunas definiciones
Primero quiero empezar con algunas definiciones de términos relevantes porque algunos han salido ya y otros los vamos a ver cada vez más. No obstante, te dejo una lista más completa en el apartado de referencias porque hay muchos más.
Algoritmo
Empiezo con qué es un algoritmo y me voy a la Wikipedia (original, ¿verdad?) :

En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo es un conjunto de instrucciones o reglas definidas y no-ambiguas, ordenadas y finitas que permite, típicamente, solucionar un problema, realizar un cómputo, procesar datos y llevar a cabo otras tareas o actividades. Wikipedia
Normalmente un algoritmo se representa como y = f(x) donde:
- f es el algoritmo o función que relaciona una entrada con una salida a través de unos parámetros y operaciones matemáticas.
- x son datos de entrada.
- y es la información de salida.
Modelo analítico
Con la analítica avanzada quiero resolver problemas:

– De predicción sobre lo que va a pasar a futuro.
– De prescripción que en vez de predecir el futuro, proporcionan las salidas más optimas ante ciertas variables, proponiendo de esta manera el curso de la siguiente acción.
La solución de estos problemas es complicado conseguirla a través de una regla definida. Por ello, se utilizan algoritmos matemáticos complejos que aprenden a partir de datos o variables. Estos son los modelos de analíticos. Para simplificar, en el contexto de esta serie de artículos, utilizaré indistintamente el término algoritmo o modelo analítico para referirme a este segundo.
Métricas e interpretabilidad
Para evaluar cómo de bien funcionan los modelos, utilizo métricas.

Las métricas son medidas que indican el rendimiento de un modelo con respecto a la situación ideal o de cero error. Cuando menos error haya respecto al objetivo que busco, mejor será mi modelo.
Habitualmente, para resolver un problema o caso de uso, uso diferentes modelos y me quedo con el que mejor métrica tenga. Y digo normalmente porque algunos algoritmos que se utilizan pueden ser “cajas negras” donde no se sabe lo que hacen para dar una solución.

Si mi solución además de la probabilidad de error depende de ser capaz de explicar el resultado, es posible que finalmente utilice un algoritmo con una métrica peor a favor de que tenga una mayor interpretabilidad.
Por ejemplo, un árbol de decisión es uno de los algoritmos más básicos que hay y los resultados de sus métricas suelen ser bastante inferiores que una red neuronal. Sin embargo, dentro de una red neuronal no se lo que pasa, es muy difícil interpretar la salida. En el caso de tener que otorgar un préstamo bancario a una persona y de querer predecir la probabilidad de impago de esta, normalmente voy a usar a un algoritmo más interpretable tipo árbol de decisión para poder ser capaz de explicar la razón por la que concedo el préstamo o no.
Caso de uso
Finalizo con caso de uso, uno de los términos que ya nos hemos encontrado varias veces y que veremos en muchas ocasiones.

El caso de uso es el problema o pregunta que quiero resolver con datos y con un modelo de analítica avanzada.
Un caso de uso puede ser algo nuevo o simplemente una evolución de algo existente. Lo importante es que tenga un objetivo de mejora y esta se pueda implementar a través de un proyecto de analítica avanzada, es decir impliquen predicciones o prescripciones.
Metodología CRISP-DM
Los proyectos de datos o analítica avanzada se desarrollan siguiendo la metodología CRISP-DM (Cross Industry Standard Process for Data Mining en inglés).

Esta metodología establece un proceso iterativo de seis pasos:
- Primero: Entender el problema de negocio que queremos resolver.
- Segundo: Conocer los datos de los que disponemos
- Tercero: Preparar los datos para poder usarlos.
- Cuarto: Desarrollar el modelo analítico o los modelos analíticos y seleccionar el mejor
- Quinto: Pilotar y evaluar el resultado.
- Sexto: Desplegar si funciona.
Quedaos con este esquema porque es clave para entender bien cómo se llevan a la práctica los avances en inteligencia artificial. De hecho, volveré a él de manera recurrente ya que lo voy a utilizar cómo hilo conductor a lo largo del blog.
La magia del tres en la analítica avanzada
Los modelos analíticos pueden agruparse según tres categorías:
- El tipo de aprendizaje que se hace de los datos.
- La clase de problema o caso de uso que resuelven.
- El modelo matemático utilizado.
Normalmente empezamos planteando el tipo de problema que queremos resolver y a partir de aquí, en función de los datos disponibles, realizamos un aprendizaje u otro y utilizamos unos modelos matemáticos u otros.
Merece la pena verlo en detalle así que profundizaré más en cada tipo a lo largo de las siguientes publicaciones. Por el momento empezamos por el primer punto.
Modelos por tipos de aprendizaje a partir los datos
En la primera categoría nos encontramos tres grandes grupos según el aprendizaje realizado:
Primero: Modelos de aprendizaje supervisado
Empezamos con los modelos de aprendizaje supervisado. Son los que más me he encontrado en usos empresariales (en mi caso, en telecomunicaciones) y en general son más fáciles de implementar.
La palabra clave es “supervisado” y proviene de tener un conjunto de datos previamente etiquetado y clasificado según la salida o resolución de problema que busco. Es decir, tenemos datos del pasado o históricos de la entrada (X) y de la salida (Y) correspondiente.
Los datos históricos nos sirven para generar el modelo (lo que se llama entrenamiento y validación del modelo). El modelo generado será el que luego se utilice con nuevos datos de entrada de los que no conozco la salida para estimar las nuevas predicciones.
La variable de salida (Y) también la podemos encontrar como: variable dependiente (porque se calcula a partir de unos datos de entrada X o independientes); variable objetivo o target. Es muy importante definir bien lo que consideramos nuestro objetivo, porque de ello depende la generación de los datos a pasado para entrenar nuestro modelo y resolver el problema que estamos buscando.

Ejemplos de modelos de predicción resueltos con aprendizaje supervisado son: modelos que me dicen si un cliente se va a dar de baja de un servicio telefónico al mes siguiente o modelos que me indican si un cliente va a pagar su cuota mensual o no.
Segundo: Modelos de aprendizaje no supervisado
Los modelos de aprendizaje no supervisado trabajan de forma muy similar a los supervisados, con la diferencia de que éstos ajustan su modelo predictivo tomando sólo en cuenta los datos de entrada, sin tener datos de salida históricos para la generación o entrenamiento del modelo.
Encontrar esta clasificación, etiqueta o salida, es el problema en sí que están resolviendo.
Este tipo de algoritmos es muy utilizado para detectar agrupaciones (clustering en inglés) de los datos de entrada con características similares entre sí.
Otra aplicación de este método es la compresión de imágenes para reducir el tamaño de los conjuntos de datos y poder procesarlos mejor.

Ejemplos de casos de uso resueltos con aprendizaje no supervisado son: búsqueda de patrones, segmentaciones o temas para recomendaciones. Los utiliza mucho Netflix por ejemplo.
Tercero: Modelos de aprendizaje reforzado
Por último tenemos los modelos de aprendizaje reforzado donde lo que se busca es maximizar un objetivo según las decisiones que vaya tomando.
Funciona aprendiendo en modo acción-recompensa con lo que su comportamiento es cercano a la psicología conductista (experimentos tipo el “Perro de Pavlov”).
En las referencias te dejo un vídeo donde una máquina aprende a jugar al juego de Atari utilizando este tipo de aprendizaje e ilustra muy bien como va mejorando en los resultados según va jugando.

Ejemplos de casos de uso resueltos con aprendizaje reforzado son: para gaming con máquinas que aprenden a jugar a diferentes juegos como si fueran humanos o aplicaciones que recomiendan contenidos.
Bibliografía y referencias
Y como ya viene siendo lo habitual, no quiero que te quedes con ganas así que te dejo algunas referencias para seguir profundizando en los conceptos que hemos hablado hoy:
- Glosario de términos de Big Data de Piperlab. Me parece buenísimo.
- Video Post de Telefónica Tech AI of Things: Los dos tipos de Aprendizaje en Machine Learning
- Artículo de Javier Luna en Medium con mayor detalle sobre los tipos de algoritmos de Machine Learning
- Ejemplo gráfico de Google donde creó un programa de inteligencia artificial que utilizando aprendizaje por refuerzo aprende a jugar un juego de Atari