Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript

Et ass wichteg fir eis ze verstoen wat mat eise Studenten während Training geschitt a wéi dës Eventer d'Resultat beaflossen, also bauen mir eng Client Journey Map - eng Kaart vun der Clientserfarung. No all, ass de Léierprozess net eppes kontinuéierlech an integral, et ass eng Kette vun interconnected Eventer an Aktiounen vum Schüler, an dës Aktiounen kënnen immens ënner verschiddene Studenten variéieren. Elo huet hien seng Lektioun ofgeschloss: wat wäert hien dann maachen? Gëtt et an d'Hausaufgaben? Wäert et eng mobil Applikatioun starten? Wäert hien de Kurs änneren, froen fir Enseignanten ze änneren? Gitt Dir direkt an déi nächst Lektioun? Oder wäert hien just enttäuscht verloossen? Ass et méiglech, andeems Dir dës Kaart analyséiert, Mustere z'identifizéieren, déi zum Erfolleg vum Cours féieren oder, ëmgekéiert, zum "Dropout" vum Student?

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript

Typesch gi spezialiséiert, ganz deier zougemaach Quell Tools benotzt fir CJM ze bauen. Awer mir wollten mat eppes Einfaches kommen, déi minimal Effort erfuerderen an, wa méiglech, Open Source. Also ass d'Iddi komm fir Markov Ketten ze benotzen - a mir hunn et gelongen. Mir hunn eng Kaart gebaut, Daten iwwer Studenteverhalen a Form vun enger Grafik interpretéiert, komplett net offensichtlech Äntwerten op global Geschäftsprobleemer gesinn, a souguer déif verstoppte Bugs fonnt. Mir hunn dat alles gemaach mat Open Source Python Skriptléisungen. An dësem Artikel wäert ech iwwer zwee Fäll mat deene ganz net offensichtleche Resultater schwätzen an de Skript mat jidderengem deelen.

Also, Markov Ketten weisen d'Wahrscheinlechkeet vun Iwwergäng tëscht Evenementer. Hei ass e primitivt Beispill vu Wikipedia:

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript

Hei sinn "E" an "A" Eventer, d'Pfeile sinn Iwwergäng tëscht hinnen (inklusiv den Iwwergank vun engem Event op d'selwecht), an d'Gewiichter vun de Pfeile sinn d'Wahrscheinlechkeet vum Iwwergang ("gewiicht geriicht Grafik").

Wat hutt Dir benotzt?

De Circuit gouf mat Standard Python Funktionalitéit trainéiert, déi mat Studentaktivitéitsprotokoller gefüttert gouf. D'Grafik op der resultéierender Matrix gouf vun der NetworkX Bibliothéik konstruéiert.

De Logbuch gesäit esou aus:

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript

Dëst ass eng Csv-Datei mat enger Tabell vun dräi Kolonnen: Student ID, Numm vum Event, Zäit wou et geschitt ass. Dës dräi Felder si genuch fir d'Bewegungen vum Client ze verfolgen, eng Kaart ze bauen a schlussendlech eng Markov Kette ze kréien.

D'Bibliothéik gëtt déi konstruéiert Grafiken am .dot oder .gexf Format zréck. Fir déi fréier ze visualiséieren, kënnt Dir de gratis Graphviz Package benotzen (gvedit Tool), mir hunn mat .gexf a Gephi geschafft, och gratis.

Als nächst wëll ech zwee Beispiller ginn fir d'Markov Ketten ze benotzen, déi eis erlaabt hunn eis Ziler, pädagogesch Prozesser an de Skyeng Ökosystem selwer e frësche Bléck ze huelen. Gutt, fix d'Bugs.

Éischte Fall: mobil Applikatioun

Fir unzefänken hu mir d'Studenterees duerch eist populärste Produkt exploréiert - de Cours allgemeng. Ech hunn dee Moment an der Kannerabteilung vu Skyeng geschafft a mir wollte kucken wéi effektiv déi mobil Applikatioun mam Publikum vun eise Kanner funktionnéiert.

D'Logbicher huelen an se duerch de Skript lafen, hunn ech eppes wéi dat:

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript

De Startknuet ass Start General, an um Enn sinn et dräi Ausgangsknoten: de Student ass "geschlofen", huet de Kurs geännert an de Cours ofgeschloss.

  • Schlof gefall, "Schlofen" - dat heescht datt hien net méi Coursen mécht, wahrscheinlech ass hien ofgefall. Mir nennen dësen Zoustand optimistesch "schlofen", well ... an der Theorie, hien huet nach d'Méiglechkeet seng Studien weider. Schlëmmst Resultat fir eis.
  • Generol gefall, Kurs geännert - vum Generol op eppes anescht gewiesselt a verluer fir eis Markov Kette.
  • Cours ofgeschloss, Cours ofgeschloss - idealen Zoustand, d'Persoun huet 80% vun de Coursen ofgeschloss (net all Lektioune sinn erfuerderlech).

An den erfollegräiche Klassennode ze kommen heescht d'Lektioun op eiser Plattform erfollegräich ofzeschléissen zesumme mam Enseignant. Et notéiert Fortschrëtter laanscht de Cours an Approche zum gewënschte Resultat - "De Cours ofgeschloss." Et ass fir eis wichteg datt d'Schüler sou vill wéi méiglech matmaachen.

Fir méi genee quantitativ Conclusiounen fir déi mobil Applikatioun (App Sessiounsknuet) ze kréien, hu mir getrennte Ketten fir jiddereng vun den endgültege Wirbelen gebaut an dann d'Kantegewiichter parvis verglach:

  • vun der App Sëtzung zréck op et;
  • vun App Sessioun ze erfollegräich Klass;
  • vun erfollegräicher Klass bis App Sessioun.

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript
Op der lénker Säit sinn d'Studenten déi de Cours ofgeschloss hunn, op der rietser Säit sinn déi "geschlofen"

Dës dräi Kante weisen d'Relatioun tëscht dem Erfolleg vun engem Student an hirem Gebrauch vun der mobiler App. Mir hunn erwaart ze gesinn datt Studenten déi de Cours ofgeschloss hunn eng méi staark Verbindung mat der Applikatioun hunn wéi Studenten déi ageschlof sinn. Wéi och ëmmer, a Wierklechkeet hu mir genee de Géigendeel Resultater:

  • mir hunn dofir gesuergt datt verschidde Gruppe vu Benotzer mat der mobiler Applikatioun anescht interagéieren;
  • erfollegräich Studenten benotzen déi mobil Applikatioun manner intensiv;
  • Studenten, déi ageschlof sinn, benotzen d'mobil Applikatioun méi aktiv.

Dëst bedeit datt Studenten déi schlofen fänken ëmmer méi Zäit an der mobiler Applikatioun ze verbréngen an um Enn fir ëmmer dra bleiwen.

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript

Am Ufank ware mir iwwerrascht, awer nodeems mir driwwer nodenken, hu mir gemierkt datt dëst e ganz natierlechen Effekt war. Zu enger Zäit hunn ech Franséisch eleng studéiert mat zwee Tools: eng mobil Applikatioun a Grammatikvirträg op YouTube. Fir d'éischt hunn ech d'Zäit tëscht hinnen opgedeelt an engem Verhältnis vu 50 bis 50. Awer d'Applikatioun ass méi lëschteg, et gëtt gamification, alles ass einfach, séier a kloer, awer am Virtrag musst Dir Iech dran verdéiwen, eppes opschreiwen , Praxis an engem Notizbuch. Lues a lues hunn ech ugefaang méi Zäit op mengem Smartphone ze verbréngen, bis säin Undeel op 100% gewuess ass: wann Dir dräi Stonnen drop verbréngt, kreéiert Dir e falscht Gefill vu fäerdeger Aarbecht, wéinst deem Dir kee Wonsch hutt ze goen an eppes ze lauschteren .

Awer wéi kann dat sinn? No allem hu mir speziell eng mobil Applikatioun erstallt, der Ebbinghaus-Kurve dran agebaut, gamified et, huet et attraktiv gemaach sou datt d'Leit Zäit an et verbréngen, awer et stellt sech eraus datt et se nëmmen oflenkt? Tatsächlech ass de Grond datt d'Team vun der mobiler Applikatioun seng Aufgaben ze gutt gepackt huet, als Resultat vun deem et e coolt, selbstänneg Produkt gouf an ugefaang aus eisem Ökosystem ze falen.

Als Resultat vun der Fuerschung gouf et kloer datt d'mobil Applikatioun iergendwéi geännert muss ginn, fir datt se manner vum Haaptstudium oflenken. A béid Kanner an Erwuessener. Dës Aarbecht ass am Moment amgaang.

Zweete Fall: Onboarding Bugs

Onboarding ass eng fakultativ zousätzlech Prozedur wann Dir en neie Student registréiert, wat potenziell technesch Problemer an Zukunft eliminéiert. D'Basisszenario gëtt ugeholl datt eng Persoun op der Landung Säit registréiert huet, Zougang zu sengem perséinleche Kont kritt, kontaktéiert gëtt an eng Aféierungscourse kritt. Zur selwechter Zäit bemierken mir e groussen Prozentsaz vun technesche Schwieregkeeten während der Aféierungscours: déi falsch Versioun vum Browser, de Mikrofon oder den Toun funktionnéiert net, den Enseignant kann net direkt eng Léisung proposéieren, an dat alles ass besonnesch schwéier wann et drëm geet. zu Kanner. Dofir hu mir eng zousätzlech Applikatioun an Ärem perséinleche Kont entwéckelt, wou Dir véier einfach Schrëtt ausféiere kënnt: Äre Browser, d'Kamera, de Mikrofon iwwerpréift a bestätegt datt d'Elteren an der Aféierungscours an der Géigend sinn (schliisslech sinn se déi, déi bezuelen hir Kanner hir Ausbildung).

Dës puer Onboarding Säiten hunn e Trichter wéi dëst gewisen:

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript
1: Startblock mat dräi liicht ënnerschiddlech (ofhängeg vum Client) Login a Passwuert Aschreiwung Formen.
2: Checkbox d'accord mat der zousätzlech Onboarding Prozedur.
2.1-2.3: Check fir Elterendeel Präsenz, Chrome Versioun an Toun.
3: Finale Block.

Et gesäit ganz natierlech aus: an den éischten zwee Schrëtt, déi meescht vun de Visiteuren verloossen, realiséiert, datt et eppes auszefëllen ass, kontrolléieren, mä et gëtt keng Zäit. Wann de Client den drëtte Schrëtt erreecht huet, da kënnt hien bal sécher an d'Finale. Et gëtt keen eenzege Grond fir eppes um Trichter ze verdächtegen.

Trotzdem hu mir beschloss eis Onboarding net op engem klassesche eendimensionalen Trichter ze analyséieren, mee mat enger Markov Kette. Mir hunn e bësse méi Eventer ageschalt, de Skript ausgefouert a krut dëst:

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript

An dësem Chaos kann nëmmen eng Saach kloer verstane ginn: eppes ass falsch gaang. Den Onboarding-Prozess ass linear, dëst ass inherent am Design, et sollt kee sou engem Web vu Verbindungen dra sinn. An hei ass et direkt kloer datt de Benotzer tëscht Schrëtt geworf gëtt, tëscht deenen et guer keng Iwwergäng sollt sinn.

Wéi mir Markov Ketten benotzen fir Léisungen ze evaluéieren an Bugs ze fannen. Mat engem Python Skript

Et kënnen zwee Grënn fir dëst komesch Bild sinn:

  • Shoals sinn an d'Logbuch-Datebank gekräizt;
  • Et gi Feeler am Produkt selwer - Onboarding.

Den éischte Grond ass héchstwahrscheinlech wouer, awer et testen ass zimmlech Aarbechtsintensiv, a Korrigéiere vun de Logbicher hëlleft net d'UX ze verbesseren. Mä mat deem zweeten, wann et existéiert, muss dringend eppes gemaach ginn. Dofir si mir op d'Node kucken, Kanten identifizéieren déi net sollten existéieren, a sichen no de Grënn fir hir Optriede. Mir hunn gesinn, datt e puer Benotzer hänke bliwwen an a Kreeser gaang sinn, anerer sinn aus der Mëtt an den Ufank gefall, an anerer konnten am Prinzip net aus den éischten zwee Schrëtt erauskommen. Mir hunn d'Donnéeën op QA transferéiert - an jo, et huet sech erausgestallt datt et genuch Bugs am Onboarding waren: dëst ass sou en Nebenprodukt, e bësse vun enger Krut, et gouf net déif genuch getest, well ... Mir hu keng Problemer erwaart. Elo huet de ganzen Opnamprozess geännert.

Dës Geschicht huet eis eng onerwaart Uwendung vu Markov Ketten am Beräich QA gewisen.

Probéiert et selwer!

Ech gepost meng Python Skript fir Training Markov Ketten am Domaine public - benotzt et fir Är Gesondheet. Dokumentatioun op GitHub, Froen kënnen hei gestallt ginn, ech probéieren alles ze beäntweren.

Gutt, nëtzlech Linken: NetworkX Bibliothéik, Graphviz Visualizer. An hei et gëtt en Artikel iwwer Habré iwwer Markov Ketten. D'Grafiken am Artikel gi benotzt Gephi.

Source: will.com

Setzt e Commentaire