5 pasos para aprender Machine Learning desde cero

En este post te voy a mostrar lo que considero son los 5 pasos para aprender Machine Learning desde cero. Y quédate hasta el final, porque también te contaré algunos trucos que te permitirán aprenderlo de una forma más rápida y eficiente.

¡Así que listo, comencemos!

Video

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

Introducción

El Machine Learning es una disciplina en constante movimiento, y si realizamos una búsqueda en Internet encontraremos montones de recursos para aprender: tutoriales, artículos, cursos, canales de divulgación.

Si queremos lanzarnos al vacío, y aprender desde cero, pues es muy probable que nos sintamos abrumados con tanta información. Y esto fue lo que me sucedió a mi precisamente hace 4 años, cuando me embarqué en este reto de aprender, por mi cuenta, de manera autodidacta, todo acerca del Machine Learning.

Y sí, aunque mi formación de Ingeniero y tener un Doctorado me facilitó en algo el proceso, realmente me lancé al vacío sin tener ninguna guía. En este proceso de aprendizaje encontré muchos tropiezos, pues no tenía un camino claro a seguir dentro de toda esa cantidad de recursos que estaban disponibles.

Así que la idea de este post es precisamente aprovechar esa experiencia para mostrarte una ruta con la que puedas aprender todo lo necesario sobre el Machine Learning, sin importar si estás en un nivel principiante o si ya tienes algún tipo de experiencia.

Primero lo primero: ¿cuáles son las etapas de desarrollo de un proyecto de Machine Learning?

Para aprender Machine Learning necesitamos primero entender usualmente qué implica desarrollar un proyecto de Machine Learning.

Supongamos que trabajamos para una compañía inmobiliaria, que está interesada en tomar información detallada tanto de los inmuebles (area, nro. habitaciones, edad del inmueble, etc.) como de los datos geográficos y poblacionales y con estos datos predecir el valor de las propiedades, para así determinar si un inmueble puede ser o no una oportunidad de inversión interesante. Nuestra tarea es desarrollar un modelo de Machine Learning capaz de realizar estas predicciones.

Para desarrollar este modelo, y en general cualquier modelo de Machine learning, en general deberíamos llevar a cabo estas fases:

  1. Entender claramente el problema, que en este caso consiste en predecir el valor de venta de una propiedad con base en la información del inmueble, información geográfica y datos poblacionales
  2. Luego debemos obtener los datos, es decir toda la información detallada y digitalizada de los inmuebles, así como probablemente la información del censo con datos geográficos y poblacionales.
  3. Ahora debemos hacer un análisis exploratorio de los datos, para ver por ejemplo si todas las variables nos interesan, o si hay algunas más relevantes que otras, o si por ejemplo existe una tendencia hacia un valor de inmueble como tal.
  4. También debemos preparar los datos, para que nuestro modelo de Machine Learning los pueda procesar y aprenda así a identificar patrones para realizar la predicción.
  5. Después debemos explorar uno o varios modelos de Machine Learning y seleccionar de forma preliminar los que tengan mejor desempeño (los que hagan las mejores predicciones)
  6. Luego debemos afinar los modelos y escoger el mejor, que en este caso será el que prediga de forma más precisa el valor de los inmuebles.
  7. Y por último, debemos llevar a producción el modelo escogido. Es decir, montarlo por ejemplo en un servidor web o en una aplicación para facilitar el acceso de los usuarios interesados en usarlo.

Usualmente, las primeras cuatro fases, desde entender el problema hasta pre-procesar los datos, pueden requerir hasta el 70% del tiempo de desarrollo. Y por eso es necesario que aprendamos herramientas de programación y desarrollemos las habilidades necesarias para esta tarea.

El otro 30% del tiempo de desarrollo corresponde como tal a la implementación del modelo. Acá será necesario aprender conceptos de Machine Learning, así como otras herramientas de programación que nos permitan desarrollar el prototipo y llevarlo a producción finalmente.

Así que, como puedes ver, el Machine Learning es una disciplina que tiene un componente altamente práctico, así que debemos aprender de desarrollar modelos que resuelvan un problema, una necesidad real.

Por eso, al momento de aprenderlo siempre deben ir de la mano dos elementos: los conceptos (como los algoritmos, las arquitecturas y el componente matemático) y las herramientas (como el manejo del lenguaje de programación, la capacidad de entender los datos que estamos procesando, y el el uso de librerías específicas)

Así que la sugerencia fundamental al momento de aprender machine learning es aprender haciendo. Esto quiere decir que a medida que vayas revisando y entendiendo los diferentes conceptos, debes “ensuciarte las manos”, es decir poner en práctica lo aprendido a través de la programación.

Y ahora sí, teniendo claro este panorama, veamos los 5 pasos para aprender Machine Learning desde cero.

Aprender Machine Learning en 5 pasos

Paso 1: aprender a programar en Python

¿Y porqué Python? Esencialmente por dos razones: la primera porque es muy fácil de aprender y la segunda porque se ha convertido en el estándar para el desarrollo de proyectos de Machine Learning.

Sí, ya sé que muchos dirán: pero en la actualidad muchos modelos se despliegan usando Javascript, e incluso R y octave. Sí, es cierto, pero en la actualidad la mayor parte del proceso del desarrollo, se realiza en Python y las librerías más completas, y más actualizadas, están desarrolladas precisamente en Python.

Así que no pierdas tiempo buscando otro lenguaje, Python es la ruta a seguir.

Bueno, ¿pero esto quiere decir que debo aprender absolutamente hasta el más mínimo detalle de Python? No, realmente no.

Sugiero aprender cosas básicas como la instalación, el uso de “strings”, listas, diccionarios, manipulación de archivos, funciones, el condicional “if” y los bucles “for” y “while”.

Los conceptos básicos de Python que sugiero aprender

Pero es importante que domines estas herramientas básicas ANTES de aprender Machine Learning. Luego, una vez hayas entrado de lleno con el Machine Learning, podrás ir puliendo detalles y complementar lo aprendido inicialmente en Python.

Paso 2: aprender los fundamentos del Machine Learning

Aquí la idea es aprender los algoritmos básicos del Machine Learning tradicional, como la regresión lineal, polinomial y logística, el algoritmo del gradiente descendente, las máquinas de soporte vectorial, el algoritmo de KNN (o “k vecinos más cercanos”), árboles de decisión y los bosques aleatorios.

De nuevo mi sugerencia inicial: aprender usando un enfoque práctico, aprender haciendo. Así que a medida que vayas revisando cada algoritmo, intenta desarrollar ejercicios en donde aprendas de manera simultánea a programarlos en Python.

En particular en esta fase deberías aprender como mínimo Jupyter, que permite ejecutar código Python de manera interactiva y desde un navegador de Internet; así como las librerías para leer, manipular y visualizar datos numéricos (como Pandas, Numpy y Matplotlib) y desde luego Scikit-learn, que ya contiene estos algoritmos básicos del Machine Learning ya implementados.

Las librerías básicas de Python que sugiero aprender

Así que en este paso la idea es que aprendas no sólo los conceptos fundamentales del Machine Learning, sino que aprendas también a usar la caja de herramientas (es decir las librerías de Python) que te permitirá resolver diferentes problemas con estos algoritmos.

Pero en este punto te estarás preguntando: ¿acaso no necesito tener unas buenas bases de matemáticas, álgebra lineal, probabilidad o estadística antes de aprender Machine Learning?

Desde mi punto de vista sí es necesario, pero no es un requisito previo. Es decir: puedes comenzar a abordar los conceptos de Machine Learning, y en el camino ir aprendiendo lo que sea puntualmente necesario de cada una de estas áreas. NO ESPERES A TOMAR UN CURSO COMPLETO DE ÁLGEBRA LINEAL, DE CÁLCULO DIFERENCIAL O INTEGRAL, O DE PROBABILIDAD Y ESTADÍSTICA para luego sí comenzar con el Machine Learning. Además, no se requiere un curso completo en estas disciplinas, pues el Machine Learning toma sólo algunos conceptos puntuales para implementar los diferentes algoritmos.

Lo que sí es importante es que logres entender estos conceptos con la mayor profundidad posible. De esta forma dejarás de ver los modelos de Machine Learning como simples “cajas negras”, y al momento de implementarlos tendrás claro cómo modificar diferentes parámetros del modelo para mejorar su desempeño.

Como recursos te sugiero tal vez el mejor libro para aprender Machine Learning: Hands-on machine learning, y me gusta porque balancea perfectamente la teoría, los conceptos que les mencioné antes, con la práctica, es decir con las librerías de Python requeridas. Te dejo el enlace a la tienda de Amazon si estás interesado en comprarlo.

Si quieres revisar conceptos puntuales de matemáticas, el mismo libro contiene explicaciones breves. Pero si quieres profundizar un poco pueden comprar el libro de matemáticas para Machine Learning

Y en el canal de YouTube encontrarás también dos listas de reproducción: Machine Learning - Fundamentos y Machine Learning - Herramientas de Programación, las cuales he venido alimentando y seguirán creciendo con el tiempo.

Paso 3: realizar un proyecto aplicado de Machine Learning

En este paso sugiero desarrollar al menos un proyecto que ponga a prueba lo que has aprendido hasta el momento. Lo ideal es que intentes resolver un problema real con Machine Learning, desde la recolección de los datos hasta el desarrollo de un primer prototipo de modelo en Python, y usando cualquiera de los modelos aprendidos hasta ahora.

Un excelente recurso para encontrar ideas de proyectos es Kaggle. Si entras a “Competencias” encontrarás un amplio catálogo de retos de donde podrás escoger el que más te interese. Además, lo interesante es que podrás ver el código desarrollado por otros competidores, en la sección “Notebooks” y este es un recurso adicional: pues podrás aprender de otros, que es un recurso súper útil pues no estarás reinventando la rueda, sino que partirás del conocimiento y los trucos de otros desarrolladores. Esto definitivamente acelerará tu proceso de aprendizaje.

Y con esto considero que ya estarás en un nivel de principiante a intermedio en el Machine Learning.

Paso 4: aprender Deep Learning

En este punto estarás bastante cómodo con Python y sus librerías específicas, así como con los algoritmos fundamentales del Machine Learning. Así que es el momento de aprender todo sobre el Deep Learning, lo que permitirá procesar datos como texto, imágenes y videos, entre otros.

La idea en este paso es usar el mismo enfoque anterior: aprender haciendo. Así que sugiero aprender todos los conceptos sobre las principales arquitecturas del Deep Learning: redes neuronales, redes convolucionales, redes recurrentes y LSTM, redes transformer y aprendizaje reforzado.

Pero de la mano con esto también deberás seguir ampliando tu caja de herramientas, aprendiendo como mínimo una de las librerías del Deep Learning: TensorFlow, Keras o PyTorch, así como el uso de Google Colab.

Las librerías de Deep Learning que sugiero aprender

De nuevo, en el canal de YouTube encontrarás dos listas de reproducción, las cuales poco a poco seguirán creciendo con más videos: una en donde encontrarás los fundamentos del Deep Learning y la otra con las herramientas de programación para el Deep Learning.

De igual forma sigo recomendando los libros de Hands-On Machine Learning (donde la segunda mitad se enfoca en los conceptos del Deep Learning haciendo uso de Tensorflow) y, como libro opcional, el de matemáticas para Machine Learning.

Al igual que en el caso anterior: NO ES NECESARIO REALIZAR PREVIAMENTE UN CURSO DE MATEMÁTICAS, revisa los conceptos sólo si es necesario, y a la par con el aprendizaje del Deep Learning

Paso 5: realizar un proyecto aplicado de Deep Learning

Aquí la idea es implementar un proyecto de Deep Learning de principio a fin, es decir implementando las siete fases que les mostré al comienzo del post.

Esto quiere decir que en este caso deberías buscar un problema en las áreas de visión artificial, procesamiento de imágenes, procesamiento de audio o video, o procesamiento del lenguaje, que pueda se resuelto usando cualquiera de las técnicas y herramientas del Deep Learning que aprendiste anteriormente.

De nuevo Kaggle es un excelente repositorio en donde podrás encontrar ideas para tus proyectos.

A diferencia de lo realizado en la fase de principiante, en este nivel avanzado sugiero realizar un proyecto que finalice con su implementación final por ejemplo en la web o en un dispositivo móvil. En este caso puedes aprender a usar por ejemplo herramientas como Streamlit, que permite llevar los modelos entrenados en Python a un producto final.

Algunos trucos y sugerencias útiles para aprender Machine Learning

Bueno pero además de estos 5 pasos que te acabo de mostrar, quiero compartir algunos trucos y sugerencias que a mí me funcionaron y que creo que te pueden ser útiles para acelerar tu proceso de aprendizaje del Machine Learning.

Aprender el lenguaje de programación, NO el entorno de desarrollo

Conozco gente que desperdicia el tiempo buscando cuál es el mejor entorno de desarrollo para programar en Python, ¿y qué sucede?: aprenden todos los trucos del entorno, pero no dominan el lenguaje de programación.

En mi caso uso lo más sencillo que puede haber: un simple editor de texto y el terminal de Mac. Realmente, no es necesario nada más.

No se requiere el computador más potente para aprender Machine Learning

La mayoría de los algoritmos y arquitecturas que tendrás que implementar, al menos en esta fase de aprendizaje, se pueden hacer en un computador convencional. No se necesita una GPU.

E incluso, si llega a ser necesaria puedes hacer uso de herramientas en la nube, como Google Colab, que permite a acceder a equipos de cómputo de altas prestaciones, a través de la nube y sin costo alguno. No dejes que el hecho de no contar con un computador potente frene el inicio de tu proceso de aprendizaje.

No perder tiempo buscando el curso mágico que me enseñe absolutamente todo

Un curso me dará las herramientas básicas, los conceptos básicos, pero yo, como aprendiz, le doy el valor adicional. Lo que sí te aconsejo es buscar un curso con un profesor que tenga experiencia en el tema y que sepa enseñar, que te motive a aprender.

Usar pocas herramientas

De momento es importante que logres dominar lo básico de Python y las librerías que he venido mencionando.

Lo importante inicialmente es dominar los conceptos y herramientas básicas, luego tendrás tiempo para enfocarte en aprender un nuevo algoritmo, o la última versión de una librería, o la última herramienta para llevar a producción el modelo. Aprende y domina lo esencial, y luego revisa conceptos y herramientas más sofisticadas.

Enfócate en desarrollar habilidades, no en obtener certificaciones.

Muchos están afanados por obtener la última certificación de Microsoft, o de Google o de Amazon, pero en últimas una certificación no necesariamente es prueba de que se cuenta con una habilidad, de saber hacer, de saber resolver problemas con Machine Learning.

Disciplina y constancia

En muchos casos no todos tenemos todos los recursos necesarios, o el tiempo suficiente. Lo importante es que tengas unas metas claras y una estrategia de aprendizaje definida, y que al momento de aprender Machine Learning le dediques el tiempo, así sea poco, pero de manera constante. Es mejor dedicar una hora al día, todos los días a aprender Machine Learning, que hacerlo de manera esporádica por ejemplo, 6 horas pero sólo una vez por semana.

Disfrútalo

Aprender algo nuevo siempre es difícil, olvídate por un momento de la meta a la que quieres llegar, y en lugar de esto disfruta el proceso, el día a día, los logros que poco a poco vas alcanzando. Muy seguramente así será mucho más divertido y gratificante.

Conclusión

Y bien, espero que estos 5 pasos y las sugerencias que acabo de compartir te ayuden a aprender Machine Learning de forma eficiente pero sobre todo gratificante.

comments powered by Disqus