¿Qué es Merlin? Caso real Aprendiendo Machine Learning

Cómo conjugar el interés por el Machine Learning, la experiencia de aprendizaje de las personas y la incorporación de juniors a la empresa.

Merlin es un proyecto de ASPgems que nace para solucionar el como incorporar juniors a la empresa. Y que hemos enfocado para aprender haciendo (learn doing). Hace un tiempo en ASPgems le dimos una vuelta a como incorporar a personas con poca experiencia, y a la vez aprender y compartir el conocimiento adquirido. Y ahora nos encontramos aplicando un modo de conjugar todo esto que hemos llamado Merlin.

Proponemos una idea

Una persona del equipo propone una idea sobre la que aprender, suelen ser tecnologías o aspectos en los que queremos iniciarnos o en los que profundizar. En nuestro caso, tenía muchas ganas de experimentar con Machine Learning aplicado a la experiencia de aprendizaje de las personas.

Tres semanas de aprendizaje

Durante tres semanas formamos un equipo de aprendizaje formado por la persona del equipo que ha propuesto la idea (en este caso yo, Raul) y por dos juniors. En nuestro caso además de Fran y Diego (juniors), participó Fernando, nuestro científico de datos.

Nuestra propuesta para Merlin fue Aprender Machine Learning para mejorar el aprendizaje. Desde hace un tiempo estoy investigando y experimentando con datos de la experiencia de aprendizaje de las personas.

Comencé recolectando datos de dos plataformas de elearning utilizando xAPI (Experience API también conocido como TinCan), los datos son almacenamos en un Learning Record Store (LRS) y hasta ahora había enredado con visualización de datos en dashboards. Esto ya es una mejora importante respecto a otras formas de trackeo de información durante la experiencia de aprendizaje. Cuanto más profundizaba en xAPI y más leía sobre cómo aprendemos, más me acercaba a la idea de incorporar Machine Learning y aplicarlo a estos datos para mejorar el aprendizaje de las personas. Y de aquí surge la propuesta que hice a Merlin, y que salió adelante.

Voy a ponerle nombre a los roles que desempeña cada persona en los proyectos de aprendizaje Merlin:

  • Senior: Persona que propone la idea y que dará apoyo a los juniors, marcará el camino a seguir y coordinará las acciones.
  • Juniors: Personas que aprenden. En ASPgems son Fran y Diego, que están contratados a media jornada para compaginarlo con sus estudios en la facultad.

 

Objetivo de Merlin

Durante estas tres semanas el objetivo del equipo Merlin es aprender y transmitir lo aprendido al resto de la empresa. Que el Senior aprenda y lo comparta con el resto de la compañía. Si el Senior ha aprendido, ha conseguido compartirlo con el resto de la compañía, es que los Juniors han aprendido y han conseguido que el Senior aprenda. Todos aprendemos.

El aprendizaje en grupo es un aspecto a destacar, desde mi punto de vista, ya que acelera y refuerza el aprendizaje. En nuestro caso hemos hecho una reunión en remoto cada semana (reuniones sólo cuando eran imprescindibles), hemos hecho algunas sesiones de pair programming, compartiendo lo que íbamos aprendiendo por separado de Python y mejorando el código que teníamos, y los últimos días dos sesiones de cierre para enfocar la presentación de lo que habíamos conseguido y plantear caminos por los que seguir avanzando.

 

Qué hemos aprendido

Cometimos, o más bien cometí, un error, intentar abordar un problema grande y con un enfoque equivocado. Esto nos costó una semana y media de tiempo, y sacamos un aprendizaje que nos ha acompañado durante nuestro Merlin: «Abordar problemas pequeños y después ir aumentando la complejidad» y así lo hicimos.

En nuestras tres primeras semanas, en una y media realmente, montamos un modelo de predicción de cantidad de Actividades de Aprendizaje Evaluadas y un modelo de clustering de alumnos.

Aprendimos Python, xAPI, conceptos de Machine Learning, tipo de aprendizaje: supervisado, no supervisado, por refuerzo. Utilizamos Scikit Learn, Jupyter, Learning Locker como LRS, xAPI para recolectar los datos, consultas al LRS utilizando consulta a MongoDB, diferentes modelos de Machine Learning, conceptos de matemáticas y estadísticas, ciclo de un proyecto de Machine Leaning y cómo afrontar, plantear y resolver problemas de Machine Learning.

 

Conclusiones de nuestro aprendizaje

Cuando finalizamos nuestras tres semanas teníamos la sensación de que estábamos dejando nuestro Merlin a medias, muy a medias, y que nos había gustado mucho lo que habíamos aprendido y sobre todo lo que veíamos que podíamos aprender. Así que el día de nuestra presentación pedimos una ampliación de otras tres semanas, y nos concedieron tres semanas adicionales. En estas semanas montamos un modelo de series temporales para predecir la actividad diaria. Completamos el ciclo completo de Machine Learning, testeando y mejorando el modelo, aplicando diferentes algoritmos y mecanismo de mejoras de features, datos y parámetros. Conseguimos una predicción muy cercana a lo que ocurría, e identificamos algunos aspectos en los que mejorar.

Lo más importante, para mi, es que Merlin es una forma muy atractiva y eficaz de aprender y de compartir conocimiento, de incorporar personas a ASPgems y que los juniors se sientan parte importante de la empresa. Gracias Diego, Fran y Fernando, ha sido un placer y seguiremos aprendiendo Machine Learning.

Slides de la presentación de la sesión en la que compartimos lo aprendido