24 sept. 2017

A Few Useful Things to Know about Machine Learning (by Pedro Domingos)


NOTA PRELIMINAR
Esta nota es un resumen del texto publicado en 2012 por Pedro Domingos bajo el título “A Few Useful Things to Know about Machine Learning” y subido en este LINK. Este resumen no representa lo expuesto en el texto original, es una interpretación. Para otros trabajos del autor, ver este LINK. En este resumen se usan las palabras “feature” y “variables” como sinónimos, y la sigla ML hace referencia al término “machine learning”.


RESUMEN
Desarrollar aplicaciones de machine learning exitosas requiere una gran cantidad de técnicas diversas que podríamos llamar “magia negra”, y que son difíciles de encontrar en libros de texto. Este artículo resume algunas técnicas recolectadas de investigadores y practicantes, los cuales han aprendido en el camino de su labor. Existen muchos tipos de sistemas de ML, y en este artículo se usará el de mayor madurez al momento: clasificacion.


1. Intro
Cuando se desarrolla una aplicación de ML, mucho del conocimiento necesario no está disponible, por esto la mayoría de los proyectos tardan más de lo necesario o terminan con un resultado inferior al esperado.

2. ML = Representación + Evaluación + Optimización
La Representación es el espacio hipotético creado por un algoritmo luego de haber “entrenado”.
La Evaluación: es la función que usa el algoritmo para estimar qué tan buena o mala es la “representación” del problema planteado (eje: accuracy, likelihood, information gain, etc.).
La Optimización es la técnica usada para mejorar el resultado de la "evaluación" y lograr una mejor representación (gradiente descendiente, mínimos cuadrados, método de newton, etc.).

3. Lo que importa es la generalización
Lo más importante en un proceso de aprendizaje es usar los ejemplos de entrenamiento para generalizar la representación del problema, y lograr un aprendizaje que vaya más allá de los ejemplos de entrenamiento. El aprendizaje puede contaminarse de muchas formas, una de ellas es usar los datos de test para optimizar o ajustar parámetros/variables intentando mejorar el resultado.

4. Los datos no son el todo
La generalización trae una consecuencia: no importa que tantos datos se tengan, nunca es suficiente. Si imaginamos un función booleana de 100 variables y un millón de ejemplos, existirían 2^100 - 10^6 ejemplos con clase desconocida. En la ausencia de mayor información, no hay forma de predecir la clase que sea mejor que lanzar una moneda. Cada algoritmo debe asumir alguna frontera de conocimiento o supuestos para poder lograr una generalización más allá de los datos que conoce. Esto fue formalizado por Wolper en la famosa teoría “no free lunch” (ver referencia Nro 2). Pero este problema no es nuevo, ya fue planteado en el pasado  (Ver referencia Nro 1).

5. Overfitting
Cuando el resultado de un algoritmo de clasificación es 100% correcto en los datos de entrenamiento, pero sólo 50% en los datos de test (cuando se esperaba 75% en ambos), entonces puede asegurarse que existe overfitting.

Sesgo y varianza de un algoritmo. El sesgo es una tendencia a aprender de forma consistente algo falso. Varianza es la tendencia a prender de forma aleatoria algo no relacionado con la realidad. Un aprendizaje lineal (como regresión logística por ejemplo) tiene un alto sesgo cuando el problema planteado no se puede separar por un hiperplano. Los arboles de decision no tienen problema en representar una separación no lineal, pero pueden presentar mucha varianza. De la misma forma los metodos de optimizacion pueden presentar este problema. Esto lleva a una conclusión contradictoria: el algoritmo más potente, no necesariamente es el mejor.

Evitar overfitting. La validación cruzada puede ayudar a combatir el overfitting, así como la técnica de “regularización” que se aplica a la función objetivo o función usada para medir el error. Pero no existe técnica que asegure de forma general el overfitting. Es fácil evitar el overfitting (varianza), cayendo en lo opuesto: underfitting (sesgo). Simultáneamente evitar ambos requiere entrenar correctamente un algoritmo para lograr una buena representación, y no existe una técnica que funcione para todos los problemas (no free lunch).

6. La intuición falla en alta dimensionalidad
Un ejemplo de esto es la distancia entre puntos y vecinos cercanos. Si todas las variables son importante, en un escenario de 100 feature empiezan los problemas: en alta dimensionalidad todos se parecen, y todos son vecinos de todos.

7. Si ocurren todos los supuestos teóricas, no es sinonimo de nada
El rol principal de las “garantías teóricas” en machine learning no es un criterio para decisiones prácticas (eje: ningún negocio decide invertir dado un supuestos teoricos), pero sí una fuente para entender y diseñar un algoritmo. El proceso de aprendizaje automático es un fenómeno complejo, y solo porque un algoritmo tiene una justificación teórica y funcione en práctica, no significa que la primera sea la razón de la segunda.

8. Feature Engineering
La mayoria de las veces el proceso de entrenamiento es la parte mas rapida, y esto es así por el extenso dominio que se tiene sobre algoritmos, optimizacion, etc. La instancia de feature engineering es más difícil porque es un dominio específico de cada problemática.

Uno de los santos griales de machine learning es automatizar cada vez más el proceso de feature engineering y una forma de hacer esto es entrenando con una gran cantidad de variables y eliminando las que no aporten informacion significativa. Pero siempre hay que tener en cuenta que una variable que no tiene importancia por sí sola, puede tenerla en combinación con otras. Por otro lado correr un proceso para identificar cuál variable no es importante en combinación con todas las demás puede ser un consumo de tiempo muy costoso. Entonces no existe un mejor reemplazo que la inteligencia o información que se agrega al proceso de feature engineering.

9. Datos mata Algoritmo
Muchas veces el camino más corto al éxito es simplemente obtener más datos.  Pero esto nos trae otro problema: escalabilidad. En la mayoría de los proyectos de machine learning las principales limitantes son el tiempo y la memoria.

Todos los algoritmos trabajan esencialmente agrupando observaciones parecidas, la mayor diferencia es lo que cada algoritmo considera como “parecidos”.

Con datos distribuidos de forma no uniforme los algoritmos pueden producir muy distintas fronteras, y aún así seguir haciendo la misma generalización. Esto también ayuda a explicar por qué algoritmos complejos pueden ser inestables y seguir siendo precisos.

10. Ensamble
La creación de modelos ensamblados es un estándar. La técnica más simple es la denominada bagging, donde se crean perturbaciones a los datos de entrenamiento y se ajusta un modelo para cada perturbación, y luego se combina el resultado a través de votaciones. Otra técnica es boosting, en la cual se le da peso a cada entrenamiento para que cada algoritmo se enfoque en las observaciones que otro algoritmo fracasó en predecir. Otra técnica es stacking, donde la salida de un algoritmo se convierte en la entrada o feature de otro.

11. Simplicidad no significa precision
En ML el crecimiento de la complejidad no implica decrecimiento de la precisión. Uno de estos ejemplos puede verse en la técnica de ensamble boosting, donde agregar más entrenamientos no deteriora la precisión del resultado final. Aun cuando se ha llegado a un error cercano a cero, agregar más algoritmos no deteriora la precisión. La simpleza no está correlacionada con la precisión, la simpleza tiene sus ventajas propias que no tiene que ver con la precisión.

12. Representable no significa aprendible.
Si en un dataset de cien observaciones se puede describir un problema con 100 reglas distintas, significa que el problema se puede representar, pero no se puede aprender. Mismo ejemplo con los árboles de decisión: no puede tener más hojas que observaciones.

13. Correlación no implica causa
Usualmente el aprendizaje automático es aplicado a observaciones en un dataset, donde la variable predictiva no está bajo el control del algoritmo, cosa que sí sucede en datos experimentales. Por esto en ML la correlaciones puede ser interpretada como signo de una potencial conexión con la causa del problema, y podemos usarla como guía de investigación.

Referencias
1. David Hume “Tratado de la naturaleza humana” (p. 83): “La idea de un objeto es una parte esencial de la creencia acerca de él, pero no toda ella”.
https://www.dipualba.es/publicaciones/LibrosPapel/LibrosRed/Clasicos/Libros/Hume.pm65.pdf\
2. Wolper, No Free Lunch.
http://www.no-free-lunch.org/WoMa96a.pdf

No hay comentarios:

Publicar un comentario