[Machine learning] Conceptos básicos del aprendizaje supervisado (para personas no técnicas).

Hoy en día es muy común escuchar en las noticias sobre inteligencia artificial y casi siempre se hace referencia a machine learning (aprendizaje máquina), veamos a que se refieren con esto.

Primero definamos que es machine learning : Es un método estadístico para aprender patrones en base a ejemplos.

*Los profesionales en el tema hablamos en spanglish porque casi toda la literatura está en inglés.

¿Qué es el aprendizaje supervisado?
Algoritmos que aprenden patrones en base a ejemplos con la finalidad de predecir una variable(a esta la llamamos: variable objetivo). Por ejemplo: Aprender a predecir si una persona va a pagar un crédito.

Cada renglón sería un ejemplo y cada columna una variable de la que se puede aprender su relación a Paga / No paga.

¿Cómo sería un patrón?

Ejemplo: Puede existir una correlación entre la gente que paga y tiene un buen salario, o que la gente muy endeudada no pague, etc., el algoritmo se encarga de ver todas estas relaciones relevantes. Al proceso en que el algoritmo encuentra patrones lo llamamos: entrenamiento.

*Hay muchos algoritmos que aprenden patrones de manera diferente, algunos son mejores para ciertas situaciones pero la idea general es la misma.

¿Cómo sucede esto?

En base a prueba y error un algoritmo va aprendiendo patrones.

Forma general en que un algoritmo aprende estos patrones:

Repita N veces:

  • Calcular error
  • Encontrar un patrón que mejore el error
  • Agregar este patrón al algoritmo

Al final se aprenden un conjunto de reglas que intentan predecir la variable objetivo.

Veamos una gráfica típica:

Cada patrón que aprende el algoritmo baja el error (hay diversas formas de medir el error), en las primeras iteraciones los patrones son más generales y conforme pasan las iteraciones los patrones se van haciendo más y más particulares.

¿Cuál es el objetivo de un algoritmo de aprendizaje supervisado?

Volvamos al ejemplo de la aplicación crediticia, el objetivo de un algoritmo entrenado es que cuando llegue una nueva persona (una aplicación en la que se tiene que decidir si dar o no el crédito) el algoritmo la clasifique correctamente (paga / no paga) y para poder llegar a esto el algoritmo debe de haber aprendido de ejemplos anteriores.

Esto significa que para saber qué tan bueno es un algoritmo es necesario evaluarlo en ejemplos que NO ha visto.

¿Y cómo hacemos esto?

Hacemos que un algoritmo aprenda los patrones de una subconjunto de nuestros ejemplos (digamos un 70%) y con los datos restantes (30%) vemos que tal le fue (medimos su error).

¿Por qué no aprendemos de todos los datos?

Un algoritmo está programado para iterar N veces, recordemos que primero un algoritmo empieza aprendiendo patrones generales pero con el paso del tiempo este empieza a aprender particularidades de ese 70% que no necesariamente están en el otro 30% (pero los patrones generales si deben de estar en el 30%).

Si un algoritmo aprende las particularidades del 70% que no están en el 30% no se está aprendiendo sino memorizando.

Si comparamos las iteraciones y el cambio en el error de los dos conjuntos una gráfica se vería típicamente así:

  • El eje vertical es una medida del error
  • Train es el 70% (al que llamamos: conjunto de entrenamiento)
  • Test es el 30% (al que llamamos: conjunto de prueba)

Recordemos nuestro objetivo: Que nos vaya bien en el 30% es decir, que el error sea el mínimo posible en Test, el desempeño en Train no es tan relevante. Observemos como el error de Train siempre baja, el algoritmo está programado para siempre disminuir el error de Train pero hay un punto en el que Test empieza a empeorar (pensemos en que nos dan un repaso de examen, si memorizamos cada detalle de este repaso puede que no nos vaya tan bien en el examen de verdad). A este fenómeno lo llamamos overfitting.

Ejemplo:

En este caso vemos un algoritmo que clasifica gatos y perros.

La línea roja sería un algoritmo con overfitting ya que memorizo mucho de estos datos, la negra sería mejor opción para predecir nuevos ejemplos.