Cómo usamos las cadenas de Markov para evaluar soluciones y encontrar errores. Con Python Script

Es importante que comprendamos lo que les sucede a nuestros estudiantes durante la capacitación y cómo estos eventos afectan el resultado, por lo que construimos un Mapa de viaje del cliente, un mapa de la experiencia del cliente. Después de todo, el proceso de aprendizaje no es algo continuo e integral, es una cadena de eventos interrelacionados y acciones de los estudiantes, y estas acciones pueden variar mucho entre los diferentes estudiantes. Entonces pasó por una lección: ¿qué hará después? Ir a la tarea? ¿Lanzar una aplicación móvil? ¿Cambiar de curso, pedir cambiar de profesor? ¿Ir directamente a la próxima lección? O simplemente salir decepcionado? ¿Es posible, al analizar esta tarjeta, identificar patrones que conduzcan a la finalización exitosa del curso, o viceversa, la "caída" del estudiante?



Por lo general, se utilizan herramientas especializadas, muy caras y de código cerrado para construir CJM. Pero queríamos llegar a algo simple, que requiera un esfuerzo mínimo y posiblemente de código abierto. Entonces surgió la idea de utilizar las cadenas de Markov, y lo logramos. Construimos un mapa, interpretamos los datos de comportamiento de los estudiantes como un gráfico, vimos respuestas completamente obvias a las preguntas de negocios globales e incluso encontramos errores profundamente ocultos. Hicimos todo esto con la ayuda de soluciones de script Python de código abierto. En este artículo hablaré sobre dos casos con resultados muy poco evidentes y compartiré el guión con todos.

Entonces, las cadenas de Markov muestran la probabilidad de transiciones entre eventos. Aquí hay un ejemplo primitivo de Wikipedia:



Aquí, "E" y "A" son eventos, las flechas son transiciones entre ellos (incluida la transición de un evento a él), y los pesos de las flechas son la probabilidad de transición ("gráfico orientado ponderado").

Que uso


La cadena fue entrenada por la funcionalidad estándar de Python, que fue alimentada por los registros de actividad de los estudiantes. El gráfico en la matriz resultante fue construido por la biblioteca NetworkX.

El registro se ve así:



Este es un archivo csv que contiene una tabla de tres columnas: identificación del estudiante, nombre del evento, hora en que sucedió. Estos tres campos son suficientes para rastrear los movimientos del cliente, construir un mapa y finalmente obtener una cadena de Markov.

La biblioteca devuelve los gráficos construidos en formato .dot o .gexf. Para visualizar el primero, puede usar el paquete gratuito Graphviz (la herramienta gvedit), trabajamos con .gexf y Gephi, también gratis.

A continuación, quiero dar dos ejemplos del uso de las cadenas de Markov, que nos permitieron analizar de nuevo nuestros objetivos, los procesos educativos y el ecosistema Skyeng. Bueno, arregla los errores.

Primer caso: aplicación móvil


Para empezar, exploramos el camino del alumno a través de nuestro producto más popular, General. En ese momento, estaba trabajando en el Departamento de Niños de Skyeng y queríamos ver qué tan eficientemente funciona la aplicación móvil con la audiencia de nuestros hijos.

Tomando los registros y ejecutándolos a través del script, obtuve algo como esto:



El nodo de inicio es Start General, y debajo hay tres nodos de salida: el estudiante "se durmió", cambió de curso, completó el curso.

  • Cayó dormido, "Cayó dormido" - significa que las clases ya no tienen lugar, lo más probable es que se haya caído. Optimistamente llamamos a esta condición "dormida", porque En teoría, todavía tiene la oportunidad de continuar sus estudios. El peor resultado para nosotros.
  • Descartó general, cambió de rumbo: cambió de general a otra cosa y se perdió para nuestra cadena de Markov.
  • Terminado el curso, me gradué del curso: perfecto estado, la persona ha completado el 80% de las lecciones (no todas las lecciones son necesarias).

Entrar en el nodo de clase exitoso significa completar con éxito la lección en nuestra plataforma con el maestro. Captura el progreso del curso y la aproximación al resultado deseado: "Finalizado el curso". Es importante para nosotros que los estudiantes asistan tanto como sea posible.

Para obtener conclusiones cuantitativas más precisas para una aplicación móvil (nodo de sesión de aplicación), creamos cadenas separadas para cada uno de los nodos finales y luego comparamos el peso de los bordes en pares:

  • de la sesión de la aplicación a ella;
  • de la sesión de la aplicación a la clase exitosa;
  • de la clase exitosa a la sesión de la aplicación.


A la izquierda - estudiantes que completaron el curso, a la derecha - "dormido"

Estas tres costillas muestran la relación entre el éxito del estudiante y su uso de una aplicación móvil. Esperábamos ver que los estudiantes que completaron el curso tengan una conexión más fuerte con la aplicación que aquellos que se han "quedado dormidos". Sin embargo, de hecho, recibieron exactamente los resultados opuestos:

  • nos aseguramos de que diferentes grupos de usuarios interactúen de manera diferente con la aplicación móvil;
  • los estudiantes exitosos usan la aplicación móvil con menos intensidad;
  • los estudiantes que se están quedando dormidos usan más activamente la aplicación móvil.

Esto significa que los estudiantes que "se quedan dormidos" comienzan a pasar más y más tiempo en una aplicación móvil y, al final, permanecen en ella para siempre.



Al principio nos sorprendimos, pero, pensando, nos dimos cuenta de que este es un efecto completamente natural. Hubo un tiempo en que estudié francés de forma independiente utilizando dos herramientas: una aplicación móvil y conferencias sobre gramática en YouTube. Al principio, dividí el tiempo entre ellos en una proporción de 50 a 50. Pero la aplicación es más divertida, hay gamificación, todo es simple, rápido y comprensible, pero debes profundizar en la conferencia, escribir algo, practicar en un cuaderno. Gradualmente, comencé a pasar más tiempo en el teléfono inteligente hasta que su participación aumentó al 100%: si se cuelga durante tres horas, crea una falsa sensación de trabajo realizado, por lo que no hay deseo de ir a escuchar algo.

Pero como es eso? Después de todo, creamos especialmente una aplicación móvil, construida en la curva de Ebbinghaus , la gamificamos, la hicimos atractiva para que la gente pasara tiempo en ella, pero resulta que solo los distrae. De hecho, la razón es que al equipo de aplicaciones móviles le fue muy bien con sus tareas, como resultado de lo cual se convirtió en un producto genial y autosuficiente y comenzó a caerse de nuestro ecosistema.

Como resultado del estudio, se llegó a comprender que la aplicación móvil debe modificarse de alguna manera para que se base menos en el curso principal de estudio. Además, tanto niños como adultos. Ahora este trabajo está en marcha.

Caso dos: errores de incorporación


La incorporación es un procedimiento adicional opcional al registrar un nuevo estudiante, lo que elimina posibles problemas técnicos en el futuro. El escenario básico implica que una persona registrada en una página de destino, tiene acceso a su cuenta personal, se contacta con él y realiza una lección introductoria. Al mismo tiempo, notamos un gran porcentaje de dificultades técnicas durante la lección introductoria: la versión incorrecta del navegador, el micrófono o el sonido no funcionan, el maestro no puede sugerir una solución de inmediato, y todo esto es especialmente difícil cuando se trata de niños. Por lo tanto, desarrollamos una aplicación adicional en su cuenta personal, donde puede realizar cuatro pasos simples: verifique su navegador, cámara, micrófono y confirme que los padres estarán allí durante la lección introductoria (después de todo, pagan la educación de los niños).

Estas pocas páginas de incorporación mostraron este embudo:


1: inicie el bloque con tres formularios de ingreso / contraseña ligeramente diferentes (según el cliente).
2: Jackdaw acepta un procedimiento adicional para la incorporación.
2.1-2.3: comprobar la presencia del padre, la versión de Chrome y el sonido.
3: bloque final.

Parece muy natural: en los primeros dos pasos, la mayoría de los visitantes se fusionan, dándose cuenta de que hay algo que completar, verificar, pero no hay tiempo. Si el cliente ha alcanzado el tercer paso, casi seguramente llegará a la final. No hay una sola razón visible en el embudo para sospechar algo.

Sin embargo, decidimos analizar nuestra incorporación no en el embudo unidimensional clásico, sino utilizando la cadena de Markov. Activamos un poco más de eventos, ejecutamos el script y obtuvimos esto:



Solo hay una cosa que se puede entender claramente en este caos: algo salió mal. El proceso de incorporación es lineal, es inherente al diseño, no debería tener una red de enlaces de este tipo. Y aquí puede ver de inmediato que el usuario lanza entre pasos, entre los cuales no debería haber ninguna transición.



Puede haber dos razones para una imagen tan extraña:

  • las jambas se arrastraron hacia la base de troncos;
  • Los bajíos están presentes en el producto en sí mismo: incorporación.

La primera razón, muy probablemente, ocurre, pero verificarla lleva bastante tiempo y arreglar los registros no ayudará a mejorar la experiencia de usuario. Pero con el segundo, si hay uno, era urgente hacer algo. Por lo tanto, fuimos a examinar los nodos, identificar los bordes, que no deberían ser, buscar las causas de su aparición. Vimos que algunos usuarios iban en ciclos y caminaban en círculos, otros se caían del medio al principio y el tercero, en principio, no podía salir de los primeros dos pasos. Los datos se transfirieron al control de calidad, y sí, resultó que había suficientes errores en la incorporación: este es un subproducto, un producto de muleta, no se ha probado a fondo, porque No esperaba ningún problema. Ahora todo el proceso de grabación ha cambiado.

Esta historia nos mostró la aplicación inesperada de las cadenas de Markov en el campo del control de calidad.

Pruébalo tú mismo!


Publiqué mi script de Python para aprender las cadenas de Markov en el dominio público. Úselo para la salud. Documentación sobre GitHub, se pueden hacer preguntas aquí, intentaré responder todo.

Enlaces útiles y útiles: biblioteca NetworkX , visualizador Graphviz . Y aquí en Habré hay un artículo sobre las cadenas de Markov. Los gráficos en el artículo están hechos con Gephi .

Source: https://habr.com/ru/post/473124/


All Articles