Lo que los cursos en linea de AI no te cuentan (desafíos para la vida real). Parte II
Seguimos revisando los desafíos que implica un proyecto de machine learning y que usualmente no se tocan en los cursos en linea de AI. En el primer articulo vimos que un proceso exitoso va mas allá del modelo de ML al coordinar procesamiento de datos y deployment de sus resultados exitosamente. Además, revisamos los desafíos del procesamiento de datos al mostrar que en el mundo real los datasets no crecen en los arboles sino que se construyen con sudor y esfuerzo.
Ahora nos toca revisar en detalle el mundo de los modelos, la estrella del show:
El Modelo:
Desafío #4: Cuál Modelo?
La lista es infinita…. Desde modelos lineales hasta arquitecturas avanzadas de redes neuronales, para bien o para mal el machine learning se ha poblado durante la ultima década de cientos de métodos y modelos, haciendo la tarea de escoger él correcto un desafío adicional.
Una opción es cerrar los ojos, correr todas las opciones y escoger la mejor. Si bien puede ser factible, en mi opinión posee dos problemas. Primero, es ineficiente; Correr cientos de modelos puede ser increíblemente lento, además de tener que construir cada modelo y definir sus parámetros (otro desafío en sí). Este problema se acentúa con modelos muy intensivos en computo y datasets muy extensos. El segundo problema es que el mejor modelo puede ser simple coincidencia. Veamos el siguiente ejemplo teórico: Tengo un problema de clasificación binaria (la etiqueta a predecir son ceros o unos) y para resolverlo voy a correr un cierto numero de potenciales “modelos” donde cada uno no es mas que un generador de números aleatorios. Sabemos que cada uno de estos modelos es inútil, pero si genero una cantidad lo suficientemente grande de éstos eventualmente voy a encontrar uno que coincida con las etiquetas del dataset, dándonos la ilusión de que encontramos un modelo útil, lo cual es falso. Ante estos problemas, el consejo es probar diferentes modelos, pero siempre acotado a un pequeño numero de opciones y que éstos posean fundamentos para poseer un buen desempeño.
¿Y cómo defino esta lista? la verdad es que no es tan fácil, pero aquí les dejo un par de consideraciones para tomar buenas decisiones:
- Posees muchos datos para entrenar?: A mayor cantidad de datos, menores son las chances de hacer overfitting, permitiendo usar modelos más complejos, (como redes neuronales o SVNs). Si tienes pocos datos (en el orden de cientos a algunos miles), busca algo mas simple como modelos lineales, KNNs o arboles de decisión. Como dicen los gringos “Simpler is Better”.
- Posees muchas variables categóricas?: Las variables categóricas en general complican la vida de modelos basados en procesos continuos (como regresiones, SVNs y redes neuronales). Si bien es posible cambiarlas a variables dummy, este proceso aumenta la dimensionalidad del modelo y elimina la condición de exclusividad mutua entre cada categoría. Para este tipo de casos modelos basados en arboles de decisión, variaciones de KNNs o inferencia de Bayes pueden ser una mejor opción.
- Tienes muchas variables?: En ese caso modelos con elementos de regularización, como Lasso o Ridge Regression, pueden ser de utilidad al filtrar variables de poca utilidad. Sin embargo, y volviendo al desafío Nº 3, un proceso exitoso de feature engineering debería entregar un set conciso de features con alto poder predictivo, reduciendo este problema.
- El problema incluye datos no estructurados (imágenes, texto, video) ?: Estamos en el dominio del deep learning. Si bien existen algunos algoritmos de machine learning tradicional que pueden manejar este tipo de tareas, el desempeño del deep learning en éstas es ordenes de magnitud superior. Además, la existencia del transfer learning permite utilizar modelos pre-entrenados en datasets de millones de entradas y apalancar el know-how de gigantes como Google en tu proyecto.
- Entiendes el modelo?: Si no entiendes el modelo (la teoría que esta detrás, sus limitaciones, etc.) mejor déjalo fuera de la lista hasta que lo entiendas mejor. No quieres basar tu proyecto en algo que no entiendes, si falla no vas a poder repararlo y si es exitoso no vas a poder explicar por qué.
Finalmente, recuerda que cada problema puede estructurarse de múltiples maneras. Por ejemplo, un modelo supervisado con variable continua puede reescribirse como uno de clasificación agrupando la variable objetivo en rangos y un problema de clustering puede reescribirse como uno supervisado al predecir la cercanía entre pares de entradas. Se creativo y ve el problema desde diferentes ángulos, de esta manera vas a poder definirlo de la mejor forma y aprovechar las herramientas que tienes a mano.
Una vez definido que modelos vas a usar, viene el desafío de manejarlos, entrenarlos y optimizarlos… Tienes las herramientas para hacerlo con confianza?
Desafío #5: Desempolvando la matemática.
No quiero sonar pretencioso, pero todos y cada uno de los modelos, métodos y procesos que envuelve el mundo del machine learning (o deep learning) son constructos matemáticos, por lo que la única manera de entenderlos, manipularlos, y desarrollarlos exitosamente es a través de un conocimiento profundo de la matemática que los sostiene. ¿Tú confiarías en un doctor que sabe operar sin entender biología, o un piloto que sabe volar sin entender aerodinámica?, yo no. Es en este punto donde yo creo que muchos cursos en línea se caen y fallan en dar al menos las nociones básicas de la matemática que esta detrás de cada modelo que enseñan.
¿Porque es importante la matemática? en general todos los modelos, al ser objetos matemáticos, sus capacidades, limitaciones, parámetros de ajuste, etc. vienen definidos por la matemática que estos emplean. Por ejemplo, entender el concepto de “tasa de aprendizaje” en una red neuronal viene del proceso de optimización de los pesos de cada neurona mediante alguna versión del método del gradiente; mientras mayor es la “tasa de aprendizaje” el vector de cambio de pesos tendrá una magnitud mayor lo que hace llegar mas rápido a la vecindad de la solución óptima, pero arriesga el no converger y “pasarse de largo”. Otro caso mas general es entender porque el uso excesivo de variables puede hacer un modelo inservible, lo cual proviene del concepto estadístico de los “grados de libertad” de un sistema; en el extremo, un modelo con tantas variables como muestras no posee grados de libertad, generando un modelo determinístico que se ajusta a todas las observaciones, pero es incapaz de generalizar. Cada hiperparámetro a ajustar tiene una razón de existir, por lo que cambiarlos al azar no solo es ineficiente, sino también riesgoso al generar drásticos cambios en la estructura del modelo al punto de dejarlo inservible.
Hay que ser entonces un PhD. en matemática?, la respuesta es no (aunque no daña tampoco), pero es importante ser consciente en las áreas que te sientes más débil y buscar complementar tus estudios de ML con cursos que las refuercen. Hay sitios increíbles (como https://es.khanacademy.org/) donde podrás aprender todo lo que necesitas. En la medida que aprendas y domines áreas como el álgebra lineal, cálculo, optimización y topología vas a ganar una valiosa intuición sobre los modelos y tus decisiones en cada proyecto van a ser mejor fundamentas y certeras.
Bueno, esto concluye la segunda parte de este blog. En la próxima y última sección revisaremos el deployment de modelos en la vida real y lo que se necesita para que cumplan su potencial.
Saludos!!!
Jose Manuel Peña Méndez, CFA
MSc. Applied Analytics, Columbia University