Algoritmos y Modelos de Machine Learning

En este artículo vamos a entender el significado y las diferencias entre los conceptos de Algoritmo y Modelo de Machine Learning.

¡Así que listo, comencemos!

Video

Como siempre, en el canal de YouTube se encuentra el video de este post:

Introducción

En muchas ocasiones hacemos referencia a los términos “algoritmos de Machine Learning” y “modelos de Machine Learning” como si tuviesen el mismo significado.

En realidad un algoritmo y un modelo de Machine Learning están muy relacionados pero son conceptos diferentes. Así que en este video vamos a entender el significado y las diferencias entre estos dos conceptos.

El problema a resolver

Para entender estos dos conceptos partamos de un problema hipotético: supongamos que una entidad bancaria ha recolectado información de varios clientes y que para cada cliente tiene, entre otros, los datos de su nivel de ingreso y de su nivel de endeudamiento.

Y supongamos que con base en esta información el banco quiere encontrar dos diferentes tipos de clientes: aquellos a quienes puede ofrecer productos de inversión (vamos a llamar a este grupo “inversores”) y aquellos a quienes puede ofrecer productos tarjetas de crédito (a quienes llamaremos el grupo de “consumidores”).

Formalización del problema

La idea ahora es formalizar el problema anterior usando el lenguaje del Machine Learning.

Para hacerlo en primer lugar podemos decir que cada cliente estará definido por dos características: el nivel de ingreso y el nivel de endeudamiento. Cada una de estas características será simplemente una cantidad numérica.

Así que podemos representar cada cliente en un plano cartesiano, donde un eje será el nivel de ingreso y otro eje el nivel de endeudamiento y cada punto dentro del plano corresponderá precisamente a un cliente con unos niveles específicos de ingreso y endeudamiento.

Al hacer esto con todos los clientes podríamos observar que habrá, por ejemplo, clientes con altos niveles de ingreso y bajos niveles de endeudamiento (quienes podrían entrar a formar parte del grupo “inversores”) mientras que podría haber otro grupo con niveles medios de ingreso y niveles medios de endeudamiento (quienes podrían ser parte del grupo “consumidores”).

Así que encontraremos que hay dos agrupaciones relativamente separadas la una de la otra y la idea es usar el Machine Learning para encontrar una forma de definir automáticamente a qué grupo pertenecería cada cliente tomando como base sus dos características (el nivel de ingreso y el nivel de endeudamiento).

Posibles soluciones

Una posible solución es intentar encontrar, automáticamente y a partir de los datos, una frontera que nos permita separar una agrupación de otra.

Una de las soluciones más sencillas sería simplemente suponer que esta frontera es una línea recta. Idealmente, si esta línea recta tiene la orientación correcta, podremos separar correctamente un tipo de cliente de otro.

Si miramos en detalle la línea recta que separa idealmente las dos agrupaciones, veremos que todos los puntos que pertenecen a ella obedecen precisamente a la ecuación de una línea recta donde las variables son los niveles de ingreso y endeudamiento respectivamente.

Al reemplazar en esta ecuación los valores correspondientes a un punto que pertenece a la línea recta tendremos como resultado un valor exactamente igual a cero.

Pero por ejemplo, al tomar un cliente con un perfil “inversor” y reemplazar sus niveles de ingreso y endeudamiento en la ecuación de la línea recta, encontraremos que el resultado es una cantidad positiva, mientras que si hacemos lo mismo pero con un cliente con un perfil “consumidor” el resultado será una cantidad negativa.

Así que acá ya tenemos una forma de clasificar a un cliente como “inversor” o “consumidor” y podríamos resumir el procedimiento en estos pasos:

  1. Primero encontrar la ecuación de la línea recta que contenga el nivel de ingreso y el nivel de endeudamiento y que permita separar adecuadamente los dos tipos de cliente.

  2. Segundo, tomar el nivel de ingreso y de endeudamiento de cada cliente que queramos clasificar, reemplazar estos valores en la ecuación de la línea recta y, si el resultado es mayor que cero clasificarlo como “inversor” y si es menor que cero clasificarlo como “consumidor”.

¡Y listo!, acá tendríamos una solución al problema usando precisamente el Machine Learning.

La pregunta de fondo

Pero, si analizamos en detalle la solución que acabamos de proponer, veremos que el éxito de este clasificador radica en un elemento esencial: la ecuación de la línea recta.

Sin embargo, esta ecuación de la línea recta no puede ser arbitraria, pues dicha recta debe tener una orientación precisa que permita separar adecuadamente un tipo de cliente de otro.

Así que para poder resolver nuestro problema debemos preguntarnos ¿cómo encontrar la recta que tenga la orientación adecuada y que permita separar correctamente las dos agrupaciones de clientes?

Y para responder a esta pregunta debemos analizar en detalle la ecuación de una línea recta. Esta ecuación dependerá no sólo de los valores correspondientes al nivel de ingreso y al nivel de endeudamiento, sino que además contendrá unos parámetros, que llamaremos w1, w2 y b que son simplemente cantidades numéricas que, dependiendo de sus valores, generarán diferentes tipos de líneas rectas, con diferentes orientaciones.

Así que la solución al problema radica en encontrar el set de parámetros más adecuado que nos arroje como resultado la recta que estamos buscando.

Y la idea es que este set de parámetros (w1, w2 y b) sea calculado de forma automática, es decir sin nuestra intervención, y a partir de los datos que tenemos de los clientes.

Y para lograr esto necesitamos precisamente un Algoritmo de Machine Learning, así que hablemos en detalle de este algoritmo.

El Algoritmo de Machine Learning

Intuitivamente podemos pensar que el Algoritmo de Machine Learning es una serie de pasos, que programamos en un computador, y que nos permiten de forma iterativa encontrar automáticamente los parámetros que nos interesan.

Para el problema que estamos resolviendo estos pasos, o este algoritmo, tomarían esta forma:

Debemos comenzar asignando unos valores iniciales totalmente aleatorios a los parámetros que queremos encontrar. Al asignar estos valores de forma aleatoria podemos garantizar que no vamos a influir de manera alguna en los resultados que arroje el algoritmo, y con esto garantizamos que los parámetros serán encontrados de forma automática.

Pero lo más probable es que estos valores aleatorios iniciales no resulten adecuados para nuestro problema, así que la frontera de separación obtenida inicialmente no será perfecta y muchos clientes serán clasificados incorrectamente.

Entonces, nuestro algoritmo debe incorporar algunos pasos adicionales que permitan refinar estos valores de manera progresiva, para que poco a poco vayamos modificando la orientación de la línea recta hasta que logremos clasificar a todos nuestros clientes de forma correcta.

Este proceso de refinación se debe repetir un cierto número de veces (conocidas como iteraciones), con el fin de modificar los parámetros de nuestra frontera de separación para ir mejorando poco a poco la clasificación de nuestros clientes.

Y si lo analizamos en detalle estos pasos serían:

Y si repetimos los tres pasos anteriores una y otra vez, es decir por un cierto número de iteraciones, veremos cómo progresivamente el error se irá reduciendo (es decir las predicciones se parecerán más y más a la categoría real a la que pertenece cada cliente) y como resultado llegaremos a esos valores ideales para los parámetros.

Y este es en esencia el algoritmo: una serie de pasos que debemos repetir de forma iterativa para de forma automática poder encontrar en este caso los parámetros de la línea recta que nos permitirá separar un tipo de cliente de otro.

Si quieres profundizar en este tema de los algoritmos, te invito a revisar el artículo sobre algoritmos de Machine Learning, una guía completa donde hablo de todas las familias de algoritmos que se pueden usar cuando queremos resolver un problema usando el Machine Learning.

Teniendo clara esta idea de lo que es un algoritmo, veamos a continuación qué es entonces un modelo de Machine Learning.

El modelo de Machine Learning

Como lo mencioné hace un momento, con el algoritmo hemos logrado encontrar los parámetros de la línea recta más adecuados para la solución de nuestro problema.

Así que como resultado final del algoritmo, es decir después de llevar a cabo todas las iteraciones, lo que tendremos será un Modelo.

En nuestro caso este Modelo de Machine Learning nos permitirá clasificar a un cliente como “inversor” o “consumidor” dependiendo de sus niveles de ingreso y endeudamiento.

Y específicamente en nuestro caso nuestro modelo tendrá dos elementos:

Y a esto nos referimos cuando hablamos de un modelo de Machine Learning: es simplemente el producto final del algoritmo y con el cual podremos generar predicciones sobre nuestros datos.

Conclusión

A través de este sencillo ejemplo hipotético hemos logrado entender qué es un algoritmo y qué es un modelo de Machine Learning.

En términos generales un algoritmo es una serie de pasos, que podemos programar en un computador y que se repiten de forma iterativa, que nos permite encontrar los parámetros del modelo más adecuados para el problema que estemos resolviendo.

Por otra parte, el modelo es simplemente el producto final del algoritmo. Con este producto final podremos tomar datos y generar predicciones que respondan al problema que queremos resolver.

Desde luego, tanto el modelo como el algoritmo pueden tomar diferentes formas dependiendo del tipo de datos que tengamos. Así que tendremos algoritmos y modelos tan sencillos como los usados en Regresión Lineal o la Regresión Logística, o tan complejos que nos permiten analizar texto, imágenes o voz, como los usados en las Redes Neuronales, las Redes Convolucionales o las Redes Transformer.

Si quieres profundizar en los temas que acabamos de ver en este post te invito a leer estos artículos relacionados que encontrarás acá en el blog: