¿Cuándo usar el Machine Learning?

El Machine Learning ha tenido logros impresionantes en los últimos años, y a veces la tendencia es usarlo para resolver todo tipo de problemas en donde estén involucrados datos. Pero ¿cómo saber cuándo podemos usarlo y cuándo no? Pues en este post les planteo una posible respuesta.

Al final del artículo encontrarás las instrucciones para descargar el roadmap con la guía paso a paso para determinar cuándo podemos usar y cuándo no el Machine Learning.

¡Así que listo, comencemos!

Video

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

Introducción: el Machine Learning NO (???) es la solución a todos los problemas

Imaginen que trabajan para una empresa donde les interesa analizar el comportamiento histórico de las ventas, y para eso cuentan con un dataset que contiene el monto total facturado cada día, para un año en particular.

La idea es lograr predecir el nivel de ventas para un mes determinado y para años posteriores. Pero, ¿se podría usar el Machine Learning en este caso? y ¿cómo sabemos si es realmente la alternativa más adecuada?

A la izquierda el comportamiento histórico de ventas de una empresa ficticia, para el año 2021. La idea es predecir el nivel de ventas para un periodo determinado, en el año 2022
A la izquierda el comportamiento histórico de ventas de una empresa ficticia, para el año 2021. La idea es predecir el nivel de ventas para un periodo determinado, en el año 2022

Pues este sencillo ejemplo es un caso típico de lo que ocurre cuando nos enfrentamos a una situación en donde debemos usar los datos para resolver un problema en particular.

Y como el Machine Learning es un área que en los últimos años ha alcanzado unos logros impresionantes, a veces la tendencia es usarlo para resolver todo tipo de problemas en donde estén involucrados datos.

Pero esto no quiere decir que lo podamos usar prácticamente en cualquier situación. De hecho, si lo usamos cuando realmente no es necesario, la empresa para la que trabajamos puede perder tiempo y dinero, y probablemente tendremos un modelo que no tiene un buen desempeño o que no resulta útil.

Es decir, hay casos en donde el Machine Learning simplemente NO es necesario… ¿Pero cómo saber cuándo usarlo y cuándo no?

Pues ahora voy a tratar de resolver esta pregunta, y para hacerlo he organizado una hoja de ruta que nos guiará paso a paso en el proceso de determinar cuándo usar y cuándo no el Machine Learning. Al final del artículo se encuentra el enlace de descarga de este roadmap.

Y para esto debemos partir de esta definición súper importante: “El Machine Learning es un enfoque que permite aprender patrones complejos a partir de datos existentes, y usar estos patrones para realizar predicciones sobre datos nunca antes analizados”

Trata de recordar los términos aprender patrones complejos y realizar predicciones, porque son esenciales para lo que vamos a hablar ahora:

Una definición del Machine Learning, que resultará muy útil de aquí en adelante
Una definición del Machine Learning, que resultará muy útil de aquí en adelante

Lo esencial antes de hacer cualquier cosa: los datos

La primera condición que debemos verificar está relacionada con los datos, que son el punto de partida de cualquier proyecto de Machine Learning. En este caso debemos garantizar que se cumplen al menos dos condiciones: que son accesibles y que son asequibles.

Que sean accesibles quiere decir que los podemos recolectar fácilmente. Por ejemplo, podemos intentar crear un modelo para predecir el volumen de ventas de una empresa, pero es imposible construirlo a menos que tengamos acceso a datos de varios años atrás.

Y que los datos sean asequibles significa que en muchos casos no serán de uso libre y probablemente será necesario comprarlos. Por ejemplo, imaginemos que queremos desarrollar un sistema para prevenir fraudes con tarjetas de crédito. Para poderlo construir necesitamos un dataset con datos reales, que muy probablemente pertenecerán a una entidad bancaria. Lo más probable es que este dataset no sea de acceso libre, y si queremos utilizar esos datos puede resultar necesario adquirirlos.

Así que en resumen, el paso cero es tener certeza de que contamos con los datos que necesitamos.

El aspecto ético: un dilema que se debe resolver desde el comienzo

Bien, si los datos son accesibles y asequibles, debemos analizar ahora otra situación que de hecho es menos de tipo técnico y más de tipo humano: el tema ético.

Y este es un aspecto súper importante porque, independientemente del problema que queramos resolver, debemos asegurarnos de que a los datos y al modelo se les dará un uso ético.

Imaginemos por ejemplo el caso de los vehículos autónomos: ¿qué pasa si uno de estos vehículos atropella a una persona? ¿A quién podemos culpar de este accidente? Es un dilema ético de fondo, que realmente ha generado una discusión en torno a este tema y ha creado una barrera que ha dificultado el uso masificado de estos vehículos:

Una barrera que ha dificultado el uso masivo de los vehículos autónomos es precisamente el tema ético
Una barrera que ha dificultado el uso masivo de los vehículos autónomos es precisamente el tema ético

Y dilemas como este se vienen dando en diferentes ámbitos de nuestra vida diaria, desde el mismo uso de las redes sociales, pasando por la medicina y llegando incluso a temas militares.

Así que no podemos confiar ciegamente ni en los datos ni en los algoritmos ni en el Machine Learning. Así como resulta benéfico en muchas situaciones, también existen casos, como el de los vehículos autónomos, en donde su uso puede llevar a riesgos con consecuencias catastróficas.

Y en estos casos mi sugerencia es simple: ante cualquier dilema ético que pueda tener consecuencias negativas sobre cualquier actor de nuestro entorno, es mejor no usar ni el Machine Learning, y de hecho ningún otro enfoque:

El primer paso de nuestro roadmap: el uso ético de los datos y del modelo
El primer paso de nuestro roadmap: el uso ético de los datos y del modelo

¿Determinístico o estocástico?

Resuelto el tema ético, el siguiente paso es tener claridad sobre el proceso que está detrás de la generación de los datos, que puede ser determinístico o estocástico.

Un proceso determinístico quiere decir que puedo predecir un evento futuro con una certeza del 100%, es decir es un proceso donde no habrá ningún tipo de aleatoriedad. Por ejemplo, para calcular el saldo de mi cuenta de ahorros a final de mes simplemente debo tomar los aportes hechos y sumarle lo que ha ganado por cuenta de la tasa de interés, usando la siguiente fórmula:

$$saldo_{final} = saldo_{inicial} \cdot [ 1 + {interés_{mensual}}/{100} ]^{nro_{meses}}$$

Por otro lado, en un proceso estocástico no tendremos una certeza del 100%, y en su lugar tendremos una estimación o una probabilidad de que el evento ocurra. Es decir que en estos procesos tendremos un cierto grado de aleatoriedad. En el caso anterior, un ejemplo de un proceso estocástico sería el comportamiento de la tasa de interés, pues esta depende de las condiciones del mercado, de dónde invierta el dinero el banco, de la volatilidad de las acciones, etc., y por tanto tendrá ese grado de aleatoriedad.

Pero un proceso estocástico es diferente de un proceso aleatorio, como lanzar un dado. En este último caso es imposible predecir, en cada lanzamiento, en qué número caerá, mientras que la tasa de interés tiene un mayor grado de predictibilidad. Por ejemplo, con un un alto grado de confianza puedo decir que prácticamente nunca tendremos una tasa de interés del 1000%, aunque sería fantástico!

Así que si el proceso es determinístico no hace falta usar el Machine Learning, podemos simplemente recurrir al modelo o las ecuaciones que tengamos para resolver el problema. Pero el Machine Learning resulta viable si el proceso es estocástico:

El segundo paso de nuestro roadmap: determinar si los datos vienen de un proceso determinístico o estocástico
El segundo paso de nuestro roadmap: determinar si los datos vienen de un proceso determinístico o estocástico

¿Análisis histórico o predicciones?

Si los datos se generan a través de un proceso estocástico, el siguiente paso es definir lo que queremos hacer con esos datos: es decir, ¿se trata de un análisis de comportamiento histórico o estamos intentando hacer una predicción?

Volvamos al ejemplo inicial, el del volumen de ventas de la empresa. Si simplemente queremos saber en qué mes o día se tuvieron más ventas, basta con consultar el registro histórico que tenemos. Acá realmente no necesitamos el Machine Learning:

Si queremos analizar el comportamiento histórico, no es necesario el Machine Learning, basta con consultar el registro de los datos previamente adquiridos
Si queremos analizar el comportamiento histórico, no es necesario el Machine Learning, basta con consultar el registro de los datos previamente adquiridos

Pero si, por el contrario, lo que queremos es tomar estos datos históricos y predecir lo que podría ocurrir en años posteriores, en este caso el Machine Learning podría funcionar:

El tercer paso de nuestro roadmap: determinar si queremos analizar el comportamiento histórico o predecir con nuestros datos
El tercer paso de nuestro roadmap: determinar si queremos analizar el comportamiento histórico o predecir con nuestros datos

Y digo “podría”, porque realizar predicciones no es la única condición (recordemos que podemos predecir el saldo de nuestra cuenta usando una simple ecuación).

Y acá vale la pena retomar la definición que les mencionaba al comienzo: “El Machine Learning es un enfoque que permite aprender patrones complejos a partir de datos existentes, y usar estos patrones para realizar predicciones sobre datos nunca antes analizados”.

Entonces es evidente que una de las tareas del Machine Learning es realizar predicciones, en tareas como la clasificación o la regresión.

Pero además debe haber algún tipo de patrón en los datos, y la idea es que con el Machine Learning el modelo pueda aprender a identificar ese patrón. Por ejemplo, aprender a predecir el número ganador de la lotería resulta imposible, porque es un proceso totalmente aleatorio, no hay patrones, pero aprender a predecir con cierta precisión la variación de la tasa de interés sí sería posible con el Machine Learning.

Pero además estos patrones deben ser complejos. Predecir cuándo habrá un eclipse de Sol requiere recurrir a la física para predecir las trayectorias de la Tierra y el Sol. Pero predecir el valor de un inmueble a partir de su área, del número de habitaciones, del año en que fue construido, de si hay o no escuelas o supermercados en el vecindario es posible con el Machine Learning, porque allí tenemos un patrón más complejo.

La interpretabilidad

Bien, estando seguros de que queremos hacer una predicción, la siguiente condición a analizar sería la interpretabilidad, que es uno de los grandes signos de interrogación del Machine Learning.

La interpretabilidad es el grado con el que un humano puede comprender las razones de una decisión tomada por el modelo de Machine Learning.

Por ejemplo, si trabajamos para una entidad bancaria y estamos desarrollando un sistema de detección de fraudes, allí resulta fundamental poder explicar los motivos por los cuales una transacción fue clasificada como fraudulenta; de esta forma la entidad puede tomar los correctivos necesarios para evitar este tipo de fraudes a futuro.

Desafortunadamente la mayor parte de los modelos de Machine Learning no son fácilmente interpretables, exceptuando posiblemente los árboles de regresión, los árboles de clasificación y los bosques aleatorios en algunos casos particulares.

Estos modelos generalmente funcionan como una caja negra, que logra altos niveles de precisión pero donde lo que ocurre en el interior de esa caja tiene todavía un cierto halo de misterio para nosotros los humanos. Aunque vale la pena aclarar que se están haciendo esfuerzos para lograr que estos modelos sean más interpretables (te sugiero por ejemplo revisar el libro de Machine Learning interpretable o la librería SHAP.

Así que en resumen, si requerimos interpretabilidad realmente la mayoría de las veces el Machine Learning NO es la vía recomendada:

El cuarto paso de nuestro roadmap: determinar si el model de Machine Learning debe ser interpretable
El cuarto paso de nuestro roadmap: determinar si el model de Machine Learning debe ser interpretable

De nuevo los datos: ¿tenemos suficientes?

Pero si la interpretabilidad no es un inconveniente, el Machine Learning podría ser una alternativa correcta, así que poco a poco vamos llegando al punto que nos interesa: es decir, ¡saber en qué casos se puede usar el Machine Learning!

Para llegar a este punto debemos determinar si la cantidad de datos que hemos recolectado es suficiente, y esto es súper importante porque para lograr que el modelo de Machine Learning aprenda a identificar patrones se requiere generalmente una gran cantidad de datos.

Aunque el número exacto depende del problema en particular que estemos resolviendo, podemos usar tres reglas básicas para tener una primera estimación de la cantidad de datos que se requeriría:

  1. Si es un problema de clasificación podemos definir un factor dependiendo del número de clases. Por ejemplo, podemos definir que por cada categoría se requieren al menos 100, 1000 o 10.000 ejemplos de entrenamiento
  2. También se puede definir un factor dependiendo del número de características de cada dato. Es decir, si cada ejemplo de entrenamiento está representado como un vector de, por ejemplo, 9 características, entonces el número de ejemplos puede ser de al menos 100, 1.000, 10.000 veces ese número
  3. Por último se puede definir un factor dependiendo del número de parámetros del modelo. Así, si por ejemplo estoy entrenando una red neuronal con 100.000 parámetros, podríamos definir una cantidad de ejemplos de entrenamiento que puede ser 5 o 50 o veces ese número.
El número aproximado de datos requeridos según el número de categorías (izquierda), el número de características de cada dato (centro) y el número de parámetros a entrenar en el modelo (derecha)
El número aproximado de datos requeridos según el número de categorías (izquierda), el número de características de cada dato (centro) y el número de parámetros a entrenar en el modelo (derecha)

Pero esto siempre será una aproximación, y es necesario entrenar el modelo para verificar si se requieren más datos o no.

Desafortunadamente es imposible calcular de forma precisa y con antelación un valor exacto para el tamaño del dataset, pues en el Machine Learning este tamaño depende de muchas variables que son propias del problema a resolver, como el tipo de datos o el tipo de modelo a implementar. Por ejemplo, una Máquina de Soporte Vectorial es un modelo menos complejo que una Red Neuronal, una Red Convolucional o una Red Transformer, y por tanto la primera requerirá muy probablemente menos ejemplos de entrenamiento:

La cantidad de datos requerida para el entrenamiento usualmente se incrementa con la complejidad del modelo
La cantidad de datos requerida para el entrenamiento usualmente se incrementa con la complejidad del modelo

Para resumir: si encontramos que los datos no son suficientes, la única opción que nos queda es recolectar más. Pero si la cantidad es adecuada entonces estamos mucho más cerca de confirmar que efectivamente el Machine Learning es la opción:

El quinto paso de nuestro roadmap: determinar si la cantidad de datos es suficiente
El quinto paso de nuestro roadmap: determinar si la cantidad de datos es suficiente

Y entonces, ¿cuándo podemos usar el Machine Learning?

Así que estamos llegando a lo que más nos interesa: las situaciones en las que definitivamente se puede usar el Machine Learning. Para esto debemos verificar el tipo de datos que tenemos: si son estructurados o no estructurados.

Los datos estructurados, como lo mencioné en el artículo sobre cómo usar SQL en el Machine Learning, vienen usualmente presentados en forma de tabla, es decir dentro de una estructura pre-definida, de ahí su nombre.

En este caso debemos verificar si se requiere efectivamente la complejidad de un modelo de Machine Learning para resolver el problema, o si podemos desarrollar un sistema más sencillo, por ejemplo codificando una serie de reglas para poder realizar la predicción.

Un ejemplo sencillo: volvamos al caso de las ventas de la empresa. Para predecir el mes y volumen de ventas a futuro podríamos crear una regla como esta: “si el mes es mayo o diciembre entonces se tendrán los mayores niveles de ventas, y estos niveles serán iguales al valor del año anterior con un incremento porcentual igual a la inflación más un punto”:

En algunos casos, como la predicción del nivel de ventas, una simple regla es suficiente para realizar la predicción
En algunos casos, como la predicción del nivel de ventas, una simple regla es suficiente para realizar la predicción

Así que la sugerencia es: si el patrón es fácil de identificar y podemos fácilmente codificar las reglas necesarias para realizar la predicción, entonces optar por este método:

El sexto paso de nuestro roadmap: determinar si se pueden codificar las reglas para la predicción en caso de tener datos estructurados
El sexto paso de nuestro roadmap: determinar si se pueden codificar las reglas para la predicción en caso de tener datos estructurados

Pero si los patrones no son tan obvios, y NO podemos codificar de manera explícita estas reglas, la alternativa es, ¡finalmente!, el Machine Learning.

Bien, y esto para datos estructurados. Ahora vamos con el segundo grupo: los datos no estructurados. Acá se encuentra por ejemplo el texto escrito o datos que provienen de procesos perceptuales, es decir cuando queremos analizar imágenes, videos o audio.

Por ejemplo para desarrollar un sistema de [análisis de sentimientos] a partir del texto, o un sistema de visión artificial o uno de reconocimiento de voz, los patrones son extremadamente complejos: los caracteres conforman palabras que pueden estar relacionadas de diferentes formas; la imagen o el video contienen millones de pixeles o frames, cada uno con diferentes colores y con escenas con múltiples objetos; la entonación y pronunciación depende de la persona que esté hablando, y puede haber incluso ruido de fondo. Los patrones son tan complejos que resulta imposible codificar de forma explícita todas las reglas para resolverlo:

B-roll: footage análisis de sentimientos, sistema de visión artificial y reconocimiento de voz, uno al lado del otro y dejar animación mientras se explica todo Card: tutorial análisis de sentimientos

Incluso, podemos tener casos en los cuales se combinan datos estructurados con no estructurados, como por ejemplo la Red Neuronal de YouTube usada para recomendar contenido a los usuarios, que analiza tanto el contenido de los videos (es decir datos no estructurados) como el comportamiento del usuario en la plataforma (es decir datos estructurados).

Así que en resumen: si los datos son estructurados pero para realizar la predicción no podemos codificar las reglas explícitamente, la solución más viable es el Machine Learning. Y si los datos son no estructurados, o están combinados con datos estructurados, definitivamente la alternativa a usar es también el Machine Learning:

El sexto paso de nuestro roadmap: determinar si los datos son no estructurados o están combinados con datos estructurados
El sexto paso de nuestro roadmap: determinar si los datos son no estructurados o están combinados con datos estructurados

Enlace de descarga del roadmap

Suscríbete a la newsletter mensual de Codificando Bits y recibe el enlace de descarga en tu e-mail:

Conclusión

Bien, espero que esta guía te resulte muy útil cuando tengas que enfrentarte a un proyecto que involucre datos, y necesites algunas pautas para poder determinar si es posible usar o no el Machine Learning.

Creo que esta guía se ajusta a la mayoría de los casos de aplicación que se encuentran en el mundo real, pero puede haber algunas situaciones particulares donde tal vez no funcione. Si es así, déjame abajo tus comentarios.

Otros artículos que te pueden interesar