Es ist uns wichtig zu verstehen, was wĂ€hrend des Lernens mit unseren Studierenden passiert und wie diese Ereignisse das Ergebnis beeinflussen. Deshalb erstellen wir eine Customer Journey Map â eine Karte des Kundenerlebnisses. Der Lernprozess ist nĂ€mlich kein kontinuierlicher und homogener Prozess, sondern eine Kette von miteinander verbundenen Ereignissen und Handlungen der Studierenden, die sich stark zwischen verschiedenen Teilnehmenden unterscheiden können. Hat er die Stunde absolviert: Was wird er als NĂ€chstes tun? Wird er die Hausaufgaben machen? Wird er die mobile App starten? Wird er den Kurs wechseln oder den Lehrer wechseln wollen? Geht er sofort zur nĂ€chsten Lektion? Oder wird er einfach enttĂ€uscht gehen? Können wir, indem wir diese Karte analysieren, Muster erkennen, die zu einem erfolgreichen Abschluss des Kurses fĂŒhren oder im Gegenteil, dazu, dass der Student âausscheidetâ?

In der Regel werden fĂŒr den Aufbau von CJM spezialisierte, sehr kostspielige Tools mit geschlossenem Quellcode verwendet. Wir wollten jedoch etwas Einfaches, das minimalen Aufwand erfordert und möglichst Open Source ist. So entstand die Idee, Markow-Ketten zu nutzen â und das haben wir erfolgreich umgesetzt. Wir haben eine Karte erstellt, die Daten zum Verhalten von Studierenden in Form eines Graphen interpretiert und dabei völlig unerwartete Antworten auf globale GeschĂ€ftsfragen entdeckt sowie tief versteckte Bugs gefunden. All dies haben wir mithilfe von Open-Source-Python-Skripten realisiert. In diesem Artikel werde ich zwei Fallstudien mit diesen unerwarteten Ergebnissen prĂ€sentieren und das Skript mit allen Interessierten teilen.
Markow-Ketten zeigen die Wahrscheinlichkeit von ĂbergĂ€ngen zwischen Ereignissen. Hier ist ein einfaches Beispiel aus Wikipedia:

Hier sind âEâ und âAâ Ereignisse, die Pfeile sind ĂbergĂ€nge zwischen ihnen (einschlieĂlich des Ăbergangs vom Ereignis zu sich selbst), und die Gewichtungen der Pfeile stehen fĂŒr die Ăbergangswahrscheinlichkeit (âgewichteter gerichteter Graphâ).
Was haben wir verwendet
Die Kette wurde mit den grundlegenden Funktionen von Python trainiert, wĂ€hrend die Protokolle der SchĂŒleraktivitĂ€t eingegeben wurden. Der Graph wurde mit der Bibliothek NetworkX auf der erhaltenen Matrix erstellt.
Das Protokoll sieht folgendermaĂen aus:

Es handelt sich um eine CSV-Datei, die eine Tabelle aus drei Spalten enthĂ€lt: die ID des SchĂŒlers, den Namen des Ereignisses und die Uhrzeit, zu der es stattgefunden hat. Diese drei Felder sind ausreichend, um die Bewegungen des Kunden zu verfolgen, eine Karte zu erstellen und letztlich eine Markow-Kette zu erhalten.
Die Bibliothek gibt die erstellten Grafiken im .dot- oder .gexf-Format zurĂŒck. FĂŒr die Visualisierung der ersten kann das kostenlose Paket Graphviz (das Tool gvedit) verwendet werden; wir haben mit .gexf und Gephi, ebenfalls kostenlos, gearbeitet.
Im Folgenden möchte ich zwei Beispiele fĂŒr die Verwendung von Markow-Ketten anfĂŒhren, die es uns ermöglicht haben, unsere Ziele, Lernprozesse und das gesamte Ăkosystem von Skyeng aus einer neuen Perspektive zu betrachten und Bugs zu beheben.
Erster Fall: Mobile Anwendung
ZunĂ€chst untersuchten wir den Weg der SchĂŒler durch unser beliebtestes Produkt â den General-Kurs. Zu diesem Zeitpunkt arbeitete ich in der Kinderabteilung von Skyeng und wir wollten herausfinden, wie effektiv die mobile App bei unserer Kinderzielgruppe funktioniert.
Nachdem ich die Logs genommen und durch das Skript laufen lassen habe, erhielt ich Folgendes:
Der Startknoten ist â Start General, und unten gibt es drei Endknoten: der SchĂŒler âschlief einâ, wechselte den Kurs, beendete den Kurs.
- Fiel asleep, âSchlief einâ â das bedeutet, dass er keine Kurse mehr besucht, höchstwahrscheinlich ist er abgebrochen. Wir nennen diesen Zustand optimistisch âschlief einâ, da er theoretisch die Möglichkeit hat, das Lernen fortzusetzen. Das schlechteste Ergebnis fĂŒr uns.
- Dropped general, Kurs gewechselt â vom General zu etwas anderem und aus unserer Markov-Kette verloren.
- Finished course, Kurs beendet â der ideale Zustand, eine Person hat 80% der Lektionen abgeschlossen (nicht alle Lektionen sind verpflichtend).
Das Erreichen des Knotens successful class bedeutet, dass die Lektion auf unserer Plattform zusammen mit einem Lehrer erfolgreich absolviert wurde. Es zeichnet den Fortschritt im Kurs und das NĂ€herkommen zum gewĂŒnschten Ergebnis â âKurs beendetâ â auf. Es ist wichtig, dass die SchĂŒler sie so oft wie möglich besuchen.
Um genauere quantitative Schlussfolgerungen fĂŒr die mobile Anwendung (Node app session) zu erhalten, haben wir separate Ketten fĂŒr jede der abschlieĂenden Knoten gebaut und dann paarweise die Gewichte der Kanten verglichen:
- von app session zurĂŒck zu ihr selbst;
- von app session zu successful class;
- von successful class zu app session.
Links â Studenten, die den Kurs abgeschlossen haben, rechts â die »schlafenden«.
Diese drei Elemente zeigen die Verbindung zwischen dem Erfolg der Studenten und ihrer Nutzung der mobilen App. Wir hatten erwartet, dass die Verbindung bei den Absolventen stÀrker ausgeprÀgt ist als bei den »schlafenden«. TatsÀchlich erhielten wir jedoch genau gegenteilige Ergebnisse:
- Wir haben festgestellt, dass verschiedene Nutzergruppen unterschiedlich mit der mobilen App interagieren;
- erfolgreiche Studenten nutzen die mobile App weniger intensiv;
- schlafende Studenten nutzen die mobile App aktiver.
Das bedeutet, dass die »schlafenden« Studenten immer mehr Zeit mit der mobilen App verbringen und schlieĂlich dauerhaft darin bleiben.

ZunĂ€chst waren wir ĂŒberrascht, doch nach einigem Nachdenken erkannten wir, dass dies ein ganz natĂŒrlicher Effekt ist. Ich habe frĂŒher selbst Französisch gelernt, indem ich zwei Werkzeuge verwendet habe: eine mobile App und Grammatikvorlesungen auf YouTube. ZunĂ€chst habe ich meine Zeit im VerhĂ€ltnis 50 zu 50 aufgeteilt. Aber die App macht mehr SpaĂ; dort gibt es Gamification, die Nutzung ist einfach, schnell und klar, wĂ€hrend man sich bei den Vorlesungen mehr konzentrieren muss, etwas aufschreiben und in einem Heft ĂŒben sollte. Im Laufe der Zeit begann ich, mehr Zeit mit meinem Smartphone zu verbringen, bis sein Anteil auf 100% angewachsen ist: Wenn man drei Stunden damit verbringt, hat man das falsche GefĂŒhl, etwas geschafft zu haben, was einem die Lust nimmt, etwas zu hören.
Aber wie kann das sein? SchlieĂlich haben wir die mobile App absichtlich erstellt, , gamifiziert, sie ansprechend gestaltet, damit die Menschen Zeit damit verbringen, und jetzt stellt sich heraus, dass sie sie nur ablenkt? TatsĂ€chlich liegt der Grund darin, dass das Team der mobilen App seine Aufgaben zu gut erfĂŒllt hat, wodurch sie zu einem tollen, eigenstĂ€ndigen Produkt geworden ist, das aus unserem Ăkosystem herausfĂ€llt.
Am Ende der Untersuchung wurde klar, dass die mobile Anwendung irgendwie verĂ€ndert werden muss, damit sie den Hauptlernprozess weniger stört. Dies gilt sowohl fĂŒr Kinder als auch fĂŒr Erwachsene. Derzeit wird an dieser Arbeit gearbeitet.
Zweiter Fall: Onboarding-Bugs
Onboarding ist ein optionales zusĂ€tzliches Verfahren bei der Registrierung neuer SchĂŒler, das zukĂŒnftige potenzielle technische Probleme vermeiden soll. Das Basisszenario sieht vor, dass sich eine Person auf der Landingpage registriert, Zugang zum persönlichen Bereich erhĂ€lt, kontaktiert wird und eine EinfĂŒhrungseinheit erhĂ€lt. Dabei stellen wir fest, dass es wĂ€hrend der EinfĂŒhrungseinheit zu einer hohen Anzahl technischer Schwierigkeiten kommt: falsche Browser-Version, Mikrofon oder Ton funktionieren nicht, der Lehrer kann nicht sofort eine Lösung vorschlagen, und das alles ist besonders schwierig, wenn es um Kinder geht. Daher haben wir eine zusĂ€tzliche Anwendung im persönlichen Bereich entwickelt, in der man vier einfache Schritte ausfĂŒhren kann: den Browser, die Kamera und das Mikrofon ĂŒberprĂŒfen und bestĂ€tigen, dass die Eltern wĂ€hrend der EinfĂŒhrungseinheit anwesend sein werden (denn sie sind es, die fĂŒr die Ausbildung der Kinder zahlen).
Diese einigen Seiten des Onboardings zeigten eine solche Trichterstruktur:
1: Ein Einstieg mit drei leicht unterschiedlichen (je nach Kunde) Formularen zur Eingabe von Benutzernamen und Passwort.
2: Zustimmung zur zusÀtzlichen Onboarding-Prozedur.
2.1-2.3: ĂberprĂŒfung der Anwesenheit eines Elternteils, der Chrome-Version und des Sounds.
3: Der finale Block.
Es sieht sehr natĂŒrlich aus: In den ersten beiden Schritten scheiden die meisten Besucher aus, als sie erkennen, dass sie etwas ausfĂŒllen und ĂŒberprĂŒfen mĂŒssen, wĂ€hrend die Zeit knapp ist. Wenn der Kunde bis zum dritten Schritt kommt, ist die Wahrscheinlichkeit hoch, dass er auch bis zum Ende weitergeht. In der Trichterdarstellung gibt es keinen Anhaltspunkt, um etwas zu misstrauen.
Dennoch haben wir uns entschieden, unser Onboarding nicht in einem klassischen eindimensionalen Trichter zu analysieren, sondern mithilfe einer Markov-Kette. Wir haben ein paar mehr Ereignisse einbezogen, ein Skript ausgefĂŒhrt und folgendes erhalten:
Eindeutig lĂ€sst sich in diesem Chaos nur eines erkennen: Etwas lĂ€uft falsch. Der Onboarding-Prozess ist linear, das ist im Design vorgesehen, und es sollte keine derartigen VerknĂŒpfungen geben. Hier wird sofort deutlich, dass der Nutzer zwischen den Schritten hin und her geworfen wird, zwischen denen es eigentlich keine ĂbergĂ€nge geben sollte.

Die GrĂŒnde fĂŒr dieses merkwĂŒrdige Bild können zwei sein:
- Fehler in der Log-Datenbank sind aufgetreten;
- Es gibt MĂ€ngel im Produkt selbst â im Onboarding.
Die erste Ursache könnte tatsĂ€chlich vorliegen, aber ihre ĂberprĂŒfung ist ziemlich aufwendig, und die Korrektur der Protokolle wird das Nutzererlebnis nicht verbessern. Bei der zweiten, sofern vorhanden, musste dringend gehandelt werden. Deshalb haben wir uns auf die Suche nach Knoten gemacht, um ĂŒberflĂŒssige Kanten zu identifizieren und die Ursachen ihres Auftretens zu finden. Wir haben festgestellt, dass einige Nutzer in einer Schleife gefangen waren, andere vom Mittelteil zum Anfang zurĂŒckkamen, wĂ€hrend dritte im Allgemeinen nicht ĂŒber die ersten beiden Schritte hinaus kamen. Wir haben die Daten an die QA weitergegeben â und ja, es stellte sich heraus, dass es im Onboarding zahlreiche Bugs gab: Es handelt sich um ein sekundĂ€res, etwas provisorisches Produkt, das nicht ausreichend grĂŒndlich getestet wurde, da keine Probleme erwartet wurden. Der gesamte Aufnahmeprozess wurde inzwischen geĂ€ndert.
Diese Geschichte hat uns eine unerwartete Anwendung von Markow-Ketten im QA-Bereich gezeigt.
Probieren Sie es selbst aus!
Ich habe mein öffentlich zugĂ€nglich gemacht â nutzen Sie es gern. Die Dokumentation ist auf GitHub, Fragen können hier gestellt werden, ich werde versuchen, alles zu beantworten.
Und hier einige nĂŒtzliche Links: , . Und hier ĂŒber Markov-Ketten. Die Grafiken im Artikel wurden mit Hilfe von .
Quelle: habr.com
