Introducción a Machine Learning
Hace varios meses venía con la intención de escribir este post, pero tenía la duda de si hacerlo o no, principalmente porque existe mucho material excelente acerca de estos temas en Internet. Finalmente, decidí realizarlo pero con el enfoque de cómo entender todos estos conceptos de ML desde el punto de vista de un desarrollador de software sin estudios especializados en estos temas.
En este artículo vamos a explorar los siguientes puntos:
- ¿Por qué es importante aprender Machine Learning (ML)?
- Introducción general a Artificial Intelligence (AI).
- Machine Learning.
- Definiciones.
- Programación tradicional vs ML.
- Tipos de ML.
- Problemas con ML.
- Algoritmos principales de ML.
- Proceso de modelamiento en ML.
- Referencias.
¿Por qué es importante aprender ML?
- ML está moldeando el futuro con más fuerza que cualquier otra innovación.
- En las últimas décadas, los rápidos avances en el almacenamiento de datos y el poder de los procesamientos de los computadores, han permitido la evolución de esta tecnología.
- Los algoritmos de ML los consumimos en las aplicaciones que usamos diariamente. Ejemplos como: Filtros de spam en el correo electrónico, recomendaciones de Netflix o Amazon, Google Translator, Office/GSuite, buscadores como Google, etc.
- Los perfiles de desarrolladores de software con skills en ML serán apetecidos por las grandes empresas y proyectos.
- ML se puede aplicar a muchos contextos como se puede ver en la imagen a continuación:
- AI generará alrededor de “US$36.8 Billion” para el año 2025 como se puede observar en la gráfica a continuación:
Introducción general a AI
Cuando se empieza a estudiar AI se van encontrando muchos conceptos que si no los tenemos claros pueden llegar a abrumarnos. Entre estos principales conceptos podemos encontrar: Data Science, Machine Learning, Redes Neuronales (Neural Networks) y Deep Learning.
Como se puede ver en el gráfico a continuación todos estos conceptos se entrelazan entre sí:
Data Science (DS):
- Es un campo interdisciplinario que involucra métodos científicos, procesos y sistemas para extraer conocimiento o un mejor entendimiento de datos en sus diferentes formas, ya sea estructurados o no estructurados.
- Es una continuación de algunos campos de análisis de datos como la estadística, la minería de datos, el ML y la analítica predictiva.
Artificial Intelligence (AI):
- Programas con la capacidad de aprender y razonar como humanos.
- Es el intento de ser tan o más inteligente que un humano.
- Darle la capacidad de razonar o pensar en función de los datos que le está pasando.
- La AI NO es el método, es el concepto, la estructura.
Machine Learning (ML):
- Es un subconjunto de AI.
- Arthur Samuel: Es el campo de estudio que da a los computadores la habilidad de aprender sin ser explícitamente programados.
- Andrew Ng: Es la ciencia de hacer que los computadores actúen sin estar explícitamente programadas.
- ML es utilizar algoritmos para que puedan decir algo interesante con base a un conjunto de datos sin tener que escribir ningún código específico para el problema.
Neural Networks (NNs):
- Es un enfoque de ML.
- Una red neuronal es un sistema de programas y estructuras de datos que se aproxima al funcionamiento del cerebro humano (Bio-Inspirados/Brain Inspired).
- El objetivo de la red neuronal es resolver los problemas de la misma manera que el cerebro humano, aunque las redes neuronales son más abstractas.
Deep Learning:
- Es un subconjunto de ML.
- Consiste de múltiples capas de redes neuronales.
- Trata del uso de redes neuronales para mejorar cosas tales como el reconocimiento de voz, la visión por computador y el procesamiento del lenguaje natural.
Machine Learning
- Definición General: Disciplina enfocada en cómo construir sistemas que automáticamente mejoran de acuerdo a su experiencia sin ser programado para eso
- Definición Específica: Consiste en entrenar un modelo matemático o estadístico usando información histórica, para inferir o predecir el valor de una variable, la cual puede ser continua o discreta, en orden para entender o explicar un fenómeno dado.
Programación tradicional vs ML:
Aprendizaje Supervisado / Supervised Learning:
- En los problemas de aprendizaje supervisado, los datos están debidamente etiquetados, es decir, cada dato tiene su respectivo label asociado o clase.
- El algoritmo aprenderá la relación entre los datos y sus etiquetas y aplicará esa relación aprendida para clasificar datos completamente nuevos que el algoritmo no haya visto en su proceso de entrenamiento.
- En este tipo de aprendizaje somos nosotros los que guiamos al algoritmo a la respuesta correcta.
Aprendizaje No Supervisado / Unsupervised Learning:
- Los datos no se encuentran categorizados o clasificados.
- Este tipo de modelos por lo general son usados para identificar o deducir estructuras comunes entre sí que permitan agrupaciones.
Aprendizaje por Refuerzo / Reinforcement Learning:
- Es un área de ML inspirada en la psicología conductista, cuya ocupación es determinar qué acciones debe escoger un agente de software en un entorno dado, con el fin de maximizar alguna noción de “recompensa” o premio acumulado. (Tomado de wikipedia).
A continuación podemos observar un gráfico que muestra diferentes aplicaciones y algoritmos que se pueden implementar con ML con base al tipo de aprendizaje:
Problemas con ML:
Cuando nos encontramos desarrollando nuestros modelos de ML, podemos encontrarnos con muchos problemas, dos de estos son: Overfitting y Underfitting:
Overfitting: Se presenta cuando un algoritmo está perfectamente adaptado a los datos con los que se entrena. Pero si trata de predecir nuevos datos, lo más probable es que no lo va a realizar correctamente.
Underfitting: Se presenta cuando un modelo no puede capturar la tendencia de los datos.
Algoritmos principales de ML:
Proceso de modelamiento en ML:
- Obtención de los datos: En este primer paso lo que se realiza es obtener los datos. Estos datos pueden venir de diferentes fuentes como bases de datos, archivos, imágenes, redes sociales, etc.
- Limpieza, preparación y manipulación de los datos: En este paso lo que se realiza principalmente es validar los datos, eliminar/corregir los datos nulos, estandarizar los datos y conocer si algún dato no aplica para la solución que se quiere lograr.
- Entrenar modelo: Elegir uno o varios modelos, configurar los hiperparametros y realizar el entrenamiento del modelo con base a los datos que se tienen.
- Realizar pruebas: Realizar pruebas del modelo entrenado para validar su rendimiento.
- Mejorar: Con base a los resultados de las pruebas, se decide si toca volver a los pasos anteriores; ya sea para obtener más datos, preparar los datos de manera diferente, seleccionar otros algoritmos y/o configurar otros hiperparametros, o si el modelo tiene un buen rendimiento y puede ser usado/probado en el sistema de producción.
El proceso de modelamiento de ML es un proceso iterativo y de mejorar hasta encontrar un resultado que aplique a la solución de nuestro problema.
Referencias
- Curso Introducción a ML: http://ligdigonzalez.com/curso-gratis-introduccion-a-machine-learning/
- Microsoft Cognitive Toolkit (CNTK) Course: Deep learning: https://dharuiz.wordpress.com/2017/07/04/microsoft-cognitive-toolkit-cntk-course-deep-learning-1-conceptos-basicos/
- Blog Aprende ML: https://www.aprendemachinelearning.com/
- Blog ML Mastery: https://machinelearningmastery.com/
Espero que este artículo les haya servido y gustado, la idea era consolidar de una manera resumida la información de algunos de los materiales que he venido estudiado.
“Thank you, namaste, and good luck”