El objetivo principal de este post es compartir lo que, en mi opinión, es básico saber sobre machine learning (ML o aprendizaje automático, en español). Sobre todo si estás pensando en convertirte y/o comenzando el camino del data scientist.
Para lograr lo anterior, comenzaremos con una definición simple y concreta sobre aprendizaje automático, junto con los diferentes tipos de machine learning existentes. Además, complementaremos con ejemplos y aplicaciones en el mundo real.
Luego, explicaré, en términos generales, cómo funcionan las soluciones basadas en machine learning, junto con el flujo de trabajo (“workflow”) que he usado en la mayoría de proyectos de aprendizaje automático.
Finalmente, incluyo lo que creo es básico para comenzar a hacer modelos ML.
Espero que al leer este artículo encuentres una buena introducción para seguir aprendiendo e involucrándote en el desafiante y cada vez más relevante mundo del machine learning.
Índice de Contenidos.
¿Por qué escribo este post?
Este post es parte de una trilogía de artículos, en donde estaré escribiendo sobre algunos de los principales conceptos asociados al mundo de los datos: data science, machine learning (este post) e inteligencia artificial.
Además, estos 3 artículos son la continuación del post “¿Qué son el Data Science, Big Data, Inteligencia Artificial, Machine Learning y Deep Learning (y en qué se diferencian)?” en donde comparto definiciones simples pero resumidas sobre estos conceptos.
Y todo esto como parte de mi proceso de actualización como científico de datos (¡la profesión más sexy del siglo XXI!).
¿Quién debería leer este post?
Este post debería interesarte si eres una persona que quiere comenzar a adentrarse en el mundo de la ciencia de datos y/o el machine learning, ya seas un estudiante de pregrado pensando en ser data scientist, o quieras cambiar de trabajo a un rol relacionado. O también si eres un líder en una organización en la cual se esté comenzando a hablar de estos temas.
Mis descargos de responsabilidad 🙂
Antes de comenzar, te dejo algunos comentarios para que le saques el mayor provecho a lo que viene:
- Seguramente habrá temas que pasaré por alto, ya que este post tiene como foco introducir los principales temas básicos relacionados con el machine learning (en un futuro no muy lejano estaré publicando un artículo con detalle complementario. Si deseas que incluya algún tema particular, no dudes en escribirme).
- Es muy probable que conozcas casos (proyectos, roles, cargos, empresas, estructuras, etc.) que no coincidan de forma exacta con las descripciones que incluyo, ya que este post se basa en mi experiencia particular y, además, a propósito he querido incluir sólo los casos principales que he conocido.
- Por último, me gustaría que este post (y el blog en general) sea un punto de partida para que sigamos conversando sobre estos temas, así que si quieres enviarme comentarios, observaciones, felicitaciones, o lo que te nazca, sólo haz clic aquí 🙂
Y ahora, sin más, ¡comencemos!
¿Qué es el machine learning?
Tal como habíamos revisado en uno de mis artículos anteriores, el machine learning (ML o aprendizaje automático, en español) corresponde a una rama de la inteligencia artificial en donde, mediante algoritmos y tomando datos como input, se logra que las máquinas aprendan sin ser explícitamente programas para esto.
¿Qué tipos de machine learning existen?
Antes de ver ejemplos de aplicaciones reales, revisemos un resumen de los 3 tipos de machine learning que existen:
Aprendizaje supervisado.
- Los algoritmos utilizan datos “etiquetados” (o “target”) intentando encontrar patrones / relaciones entre estas etiquetas y otros datos disponibles (proceso de entrenamiento).
- Es el tipo más común de machine learning.
- En términos generales, el aprendizaje supervisado se puede dividir en problemas de regresión (predicción de valores numéricos) y de clasificación (predicción de categorías).
Aprendizaje no supervisado.
- Los algoritmos utilizan datos sin etiquetas intentando encontrar similitudes y/o relaciones en la data entre las múltiples observaciones.
- En términos generales, el aprendizaje no supervisado se puede dividir en problemas de segmentación (agrupación de observación según grados de similitud) y de asociación (búsqueda de reglas presentes en la data).
Aprendizaje por refuerzo.
- En el aprendizaje por refuerzo existe un estado inicial, en donde contamos con un algoritmo que irá aprendiendo de su propia experiencia, es decir, de sus aciertos y errores, pero sin contar con datos para entrenar.
- Luego, el algoritmo realizará iteraciones, en donde, en cada una, realizará una acción.
- Por cada acción realizada y definida como “éxito”, el algoritmo recibirá una “recompensa”.
- Por otro lado, cada acción realizada y definida como “fracaso”, el algoritmo recibirá una “castigo”.
- Iterando sobre está dinámica, se van generando datos de los cuales el algoritmo comienza a aprender (experiencia).
- Esto, hasta que se encuentra la mejor forma de cumplir el objetivo definido inicialmente.
Ejemplos de aplicaciones de machine learning.
Veamos algunos ejemplos que nos ayudarán a entender de mejor manera qué es el machine learning y sus 3 principales tipos:
¿Cómo funciona el machine learning?
Para entender cómo funcionan los modelos de machine learning, nos enfocaremos en el aprendizaje supervisado (el más común) y seguiremos los principales pasos junto con la continuación de uno de los ejemplos anteriores:
Todo comienza con los datos que el algoritmo usará, los cuales se componen de features (o variables) y observaciones (o casos). Pensemos en una tabla en donde las features son las columnas y las observaciones las filas).
Estos datos deben tener un “target”, es decir, la feature que queremos predecir (también llamada “etiqueta” o variable dependiente) y también otras features que el algoritmo usará para identificar patrones (aprendizaje / entrenamiento). Dichas features también son llamadas variables independientes.
Tomando como referencia el ejemplo en donde buscamos predecir qué pacientes terminarán en la sección de urgencias de un hospital:
- Target: Columna que toma valores 1 o 0 dependiendo si ingreso del paciente tuvo o no asociado un paso por el área de emergencias.
- Variables independientes: Información de de cada paciente ingresado, como la edad, peso, estatura, enfermedades de base (diabetes, hipertensión, etc.), síntomas al momento del ingreso (fiebre, presión, etc.), entre otras.
Ya con los datos disponibles (historia) comienza el proceso de aprendizaje (o entrenamiento), en donde el algoritmo comienza a relacionar los distintos valores de la variable target con las variables independientes, con el objetivo de identificar patrones.
Patrones que se podrían identificar en nuestro caso son (ejemplos):
- Pacientes cuya edad supera los 65 años, que presentan como enfermedad de base diabetes y que además son ingresados con una temperatura igual o mayor a 39°C, tienen una probabilidad de ser trasladados a urgencias de un 80% (o lo que es análogo, de 1000 observaciones que cumplen con estas características, 800 fueron ingresados posteriormente a urgencias).
- Pacientes cuya edad está entre los 18 y 25 años, que no presentan enfermedades de base y que además son ingresados con una temperatura no mayor a 39°C tienen una probabilidad de ser trasladados a urgencias de 2% (o lo que es análogo, de 1000 observaciones que cumplen con estas características, 20 fueron ingresados posteriormente a urgencias).
Al finalizar el proceso de aprendizaje se mide el error asociado a las predicciones del modelo (algoritmo ya entrenado). En caso que estemos conformes con este nivel de error, ya contaremos con un modelo cuyo objetivo es predecir si cada paciente ingresado necesitará cuidado de urgencia o no.
Luego, en la práctica, a cada paciente se le asignará una probabilidad en base a la información al momento del ingreso (edad, peso, enfermedades de base, …)
Flujo de trabajo para proyectos de machine learning.
Complementando la definición y ejemplos anteriores, les muestro un flujo de trabajo (o “workflow”, en inglés) que contiene las principales etapas que deberíamos desarrollar al abordar un proyecto relacionado al machine learning:
Definiciones preliminares.
- Esta se podría considerar como la “etapa 0” (¡ojo que uno de los principales errores en este tipo de proyecto es saltarse esta fase!).
- En esta etapa debemos definir el problema a resolver desde un punto de vista contextual.
- Además, es importante levantar información relevante, como proyectos similares, casos de éxito, etc.
- Algunas preguntas que debemos considerar en esta etapa:
- ¿Cuál es el problema y por qué se quiere resolver? (desde un punto de vista contextual)
- ¿Es posible resolver el problema con una alternativa más simple que un modelo de machine learning?
- ¿Se ha hecho algo relacionado ya sea en la organización o de forma externa?
Elección del modelo.
- Relacionada a la etapa anterior, pero incluso más importante (por eso la dejo como una fase independiente).
- En esta etapa debemos definir preliminarmente qué tipo de algoritmo de machine learning podríamos necesitar.
- Lo anterior en base a preguntas como:
- ¿Qué necesitamos que haga el modelo?, ¿predecir un número, una etiqueta, segmentar, …?
- ¿Quién y cómo se usará el modelo de machine learning una vez desarrollado?
- ¿El modelo será usado de forma única, periódica o contínua?
Recolección y validación de datos.
- En esta etapa recolectamos los datos relevantes y validamos la calidad de éstos.
- Algunas preguntas relevantes a responder son:
- ¿Dónde se encuentran los datos?
- ¿Cómo los recopilaremos?
- ¿Dónde los almacenaremos?
- Esta etapa finaliza con los datos almacenados y listos para acceder a ellos y comenzar a explotarlos.
Transformación de la data (variables).
- Es de las etapas más importante del workflow, ya que en este paso es donde “ayudaremos” al algoritmo en su desafío de aprender e identificar patrones.
- ¿Cómo haremos esto? Mediante el “feature engineering”, es decir, seleccionando, transformando y creando variables mediante el uso de nuestros conocimientos contextuales y conocimientos estadísticos.
- ¿Por qué es tan importante? En base a mi experiencia, la adición de nuevas variables puede mejorar considerablemente la performance de un modelo de machine learning.
Entrenamiento del modelo.
- ¡Llegó el momento! ¡Por fin, luego de mucho trabajo, estamos en condiciones de ejecutar el algoritmo que buscará relaciones y patrones en la data.
- Para lo anterior, de la data disponible, seleccionaremos un porcentaje de ésta para que el algoritmo se entrene. Dicha data se denomina “training data” (y el complemento se denomina “testing data”).
- Esta etapa finaliza con el modelo, es decir, con el algoritmo entrenado con la training data.
Evaluación del modelo.
- Esta etapa se podría describir como el examen que debe pasar el modelo luego de haber “estudiado” (entrenamiento).
- Para esto, generamos pronósticos utilizando el modelo pero en base a las variables independientes de los datos de test.
- Luego, dichos pronósticos se comparan con la variable dependiente (target) del mismo set de datos (test).
- Finalmente, en base a esta comparación, calculamos métricas de error para el modelo.
Ajustes de hiper parámetros.
- Se denominan “hiper parámetros” a aquellos parámetros que son ajustables por el data scientist de forma manual antes de comenzar el entrenamiento y que determina la configuración inicial del algoritmo.
- Dicha configuración determina, en gran parte, el rendimiento del modelo, por lo que esta etapa en sí es un proceso iterativo, donde probamos varias configuraciones de hiper parámetros hasta encontrar un rendimiento óptimo.
- Un ejemplo de hiper parámetros son la cantidad de capas ocultas y de nodos en cada capa para las redes neuronales.
Uso del modelo (predicción).
- Cuando el modelo presenta una configuración que nos deja traquil@s en relación a su rendimiento, procedemos a su uso en régimen.
- Luego, en esta etapa, cada vez que el modelo reciba set de datos que contengan la información con que fue entrenado, éste nos entregará un pronóstico para darle un uso contextual.
Paso a producción.
- Se denomina “paso a producción” el despliegue del modelo de machine learning en los entornos de producción, en donde se podrían integrar con otros sistemas (por ejemplo, proporcionando predicciones a otros softwares).
- Aunque no siempre ocurre, cada vez es más común pasar los modelos a producción (en medio de las 2 etapas anteriores), lo cual nos enfrenta a nuevos desafíos como data scientists, por lo que es importante apoyarse con las áreas técnicas e ir adquiriendo también nuevos conocimientos.
- Esta etapa se justifica cuando el modelo se utilizará de manera continua y/o de forma integrada con otros sistemas ya existentes.
Re-calibración.
- Desde que el modelo está en uso, es necesario monitorear su error y generar alarmas cuando estos indicadores de calidad superan ciertos umbrales.
- Es esperable que, a medida que pasa el tiempo, el modelo presente niveles de errores cada vez mayores, por lo que esta etapa es opcional pero muy recomendable.
- Una vez que estas alarmas lo indiquen, procedemos a re-calibrar el modelo, es decir, re-entrenarlo con información más reciente y/o con nuevas variables.
Notas:
- Este workflow, por simplicidad, se presenta como lineal, sin embargo, en la práctica puede ser iterativo. Por ejemplo, es muy posible que en la etapa de entrenamiento del modelo nos demos cuenta de que necesitamos más datos.
- Si tienes preguntas y/o comentarios sobre este workflow, no dudes en escribirme 🙂
¿Qué es lo básico para comenzar a hacer machine learning?
Si revisas alguna recomendación sobre conocimientos clave para desarrollar modelos de machine learning, seguramente encontrarás, entre otros, los siguientes tópicos:
- Álgebra lineal.
- Cálculo (en múltiples variables, derivadas, etc.)
- Probabilidades y estadística.
Y no obstante creo que estos temas son muy importantes para llegar a ser una data scientist integral, en esta sección me enfocaré en lo realmente básico para comenzar en el mundo del aprendizaje automático:
Datos.
¿Obvio? Seguro. Pero los datos son el punto de partida para cualquier modelo de machine learning.
Y no sólo esto, ya que los datos deben cumplir con ciertas características para lograr generar un modelo que presente buen rendimiento. Por ejemplo:
- Deben presentar un volumen suficiente (cantidad de registros).
- Deben ser representativos de la realidad en la cual el modelo se desempeñará.
Y si no cuentas con data, no te preocupes. Te dejo este link en donde puedes encontrar información para que comiences a desarrollar tus modelos.
Programación.
A pesar de que existen softwares especializados en machine learning, con los cuales no es necesario generar ninguna línea de código, mi recomendación es desarrollar tus modelos en base a lenguajes de programación.
¿Opciones? Hay muchas. Yo uso Python, pero también puedes generar modelos con R, C++, JavaScript, Java, C#, Julia, Shell, TypeScript, Scala, etc. ¡Sólo escoge uno y comienza!
Mi preferencia por Python se basa en:
- Cuenta con librerías especializadas (Scikit-Learn).
- Es simple para comenzar.
- Compatible con Windows, MacOS, Linux, …
- Facilita la lectura de códigos, ya que es limpio y simple.
- Tiene una comunidad muy grande en la que te puedes apoyar.
Dominio / conocimiento contextual.
Último, pero no menos importante, es relevante tener un conocimiento del contexto en el cual estás desarrollando el modelo de aprendizaje automático.
Por ejemplo, antes de calibrar el modelo de predicción hospitalaria que hemos revisado, es recomendable tener conversaciones con l@s médicos, enfermer@s y cualquier otr@ expert@ en el área. Así, tendremos una visión más completa al comenzar a trabajar con los datos.
Palabras al cierre (resumen).
¿Mucha información? 😮
Espero que este post sea de mucha utilidad para ti si lo que buscas es comenzar una carrera en el mundo del data science y el machine learning.
Antes de finalizar, te dejo un resumen de los principales puntos que abordamos:
- El machine learning (ML, o aprendizaje automático, en español) corresponde a una rama de la inteligencia artificial en donde, mediante algoritmos y tomando datos como input, se logra que las máquinas aprendan sin ser explícitamente programas para esto.
- Dentro del ML podemos encontrar 3 tipos:
- Aprendizaje supervisado.
- Aprendizaje no supervisado.
- Aprendizaje por refuerzo.
- Algunos ejemplos de aplicaciones de machine learning:
- Flujo de trabajo para proyectos relacionados con el machine learning:
- Lo básico para comenzar en el machine learning:
- Datos.
- Programación.
- Dominio / conocimiento contextual.
Si quieres saber más o te gustaría que publique sobre algún otro tema, no dudes en escribirme. También lo puedes hacer si tienes alguna duda o si quieres darme feedback. Por último, sería genial seguir en contacto a través de mis redes sociales, como Twitter y LinkedIn (también sígueme en Instagram que tengo Instagram).
🙂
Referencias.
Machine Learning: What it is and why it matters
What is Machine Learning | Definition, Tools, how it Works & Uses