Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python

Za nas je pomembno, da razumemo, kaj se dogaja z našimi študenti med usposabljanjem in kako ti dogodki vplivajo na rezultat, zato gradimo Customer Journey Map – zemljevid uporabniške izkušnje. Navsezadnje učni proces ni nekaj neprekinjenega in celovitega, je veriga med seboj povezanih dogodkov in dejanj študenta, ta dejanja pa se lahko med različnimi učenci zelo razlikujejo. Zdaj je zaključil svojo lekcijo: kaj bo naredil naslednje? Bo šlo k domači nalogi? Ali bo lansiral mobilno aplikacijo? Ali bo spremenil tečaj, prosil za zamenjavo učiteljev? Boste šli takoj na naslednjo lekcijo? Ali pa bo samo razočaran odšel? Ali je mogoče z analizo tega zemljevida prepoznati vzorce, ki vodijo do uspešnega zaključka predmeta ali, nasprotno, do »osipa« študenta?

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python

Običajno se za izdelavo CJM uporabljajo specializirana, zelo draga zaprtokodna orodja. Vendar smo želeli pripraviti nekaj preprostega, kar zahteva minimalen trud in, če je mogoče, odprtokodno. Tako se je porodila ideja o uporabi Markovljevih verig – in uspelo nam je. Izdelali smo zemljevid, interpretirali podatke o vedenju učencev v obliki grafa, videli povsem neočitne odgovore na globalna poslovna vprašanja in našli celo globoko skrite napake. Vse to smo naredili z odprtokodnimi skriptnimi rešitvami Python. V tem članku bom govoril o dveh primerih s temi zelo neočitnimi rezultati in delil scenarij z vsemi.

Markovske verige torej kažejo verjetnost prehodov med dogodki. Tukaj je primitiven primer iz Wikipedije:

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python

Tukaj sta "E" in "A" dogodka, puščice so prehodi med njima (vključno s prehodom od dogodka do istega), uteži puščic pa so verjetnost prehoda ("uteženi usmerjeni graf").

Kaj si uporabil?

Vezje je bilo usposobljeno s standardno funkcionalnostjo Python, ki je bila napajana z dnevniki dejavnosti študentov. Graf na dobljeni matriki je sestavila knjižnica NetworkX.

Dnevnik izgleda takole:

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python

To je datoteka csv, ki vsebuje tabelo treh stolpcev: ID učenca, ime dogodka, čas, ko se je zgodil. Ta tri polja zadoščajo za sledenje gibanju stranke, sestavljanje zemljevida in končno pridobitev verige Markov.

Knjižnica vrne zgrajene grafe v formatu .dot ali .gexf. Za vizualizacijo prvega lahko uporabite brezplačen paket Graphviz (orodje gvedit), delali smo z .gexf in Gephi, prav tako brezplačno.

Nato bi rad navedel dva primera uporabe Markovljevih verig, ki sta nam omogočila nov pogled na naše cilje, izobraževalne procese in sam ekosistem Skyeng. No, popravi napake.

Prvi primer: mobilna aplikacija

Za začetek smo raziskali študentsko potovanje skozi naš najbolj priljubljen izdelek – tečaj General. V tistem trenutku sem delal na otroškem oddelku Skyeng in želeli smo videti, kako učinkovito mobilna aplikacija deluje pri naši otroški publiki.

Če vzamem dnevnike in jih poženem skozi skript, sem dobil nekaj takega:

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python

Začetno vozlišče je Start General, na dnu pa so tri izhodna vozlišča: študent je »zaspal«, zamenjal tečaj in končal tečaj.

  • Zaspal, "Zaspal" - to pomeni, da ne hodi več na pouk, najverjetneje je padel. To stanje optimistično imenujemo "spanje", ker ... teoretično ima še možnost nadaljevanja študija. Najslabši rezultat za nas.
  • Izpuščena generalka, spremenjena smer - zamenjana z generalke na nekaj drugega in izgubljena za našo verigo Markov.
  • Končan tečaj, Končan tečaj - idealno stanje, oseba ima opravljenih 80% lekcij (vse lekcije niso obvezne).

Priti v vozlišče uspešnega razreda pomeni uspešno dokončanje lekcije na naši platformi skupaj z učiteljem. Beleži napredek na tečaju in približevanje želenemu rezultatu - "Zaključen tečaj." Pomembno se nam zdi, da se dijaki udeležijo čim več.

Da bi dobili natančnejše kvantitativne zaključke za mobilno aplikacijo (vozlišče seje aplikacije), smo zgradili ločene verige za vsako od končnih vozlišč in nato primerjali uteži robov po parih:

  • iz seje aplikacije nazaj vnjo;
  • od seje aplikacije do uspešnega razreda;
  • od uspešnega predavanja do seje aplikacije.

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python
Na levi so študenti, ki so zaključili tečaj, na desni pa tisti, ki so »zaspali«

Ti trije robovi prikazujejo razmerje med učenčevim uspehom in njihovo uporabo mobilne aplikacije. Pričakovali smo, da bodo študenti, ki so zaključili tečaj, imeli močnejšo povezavo z aplikacijo kot študenti, ki so zaspali. Vendar smo v resnici dobili ravno nasprotne rezultate:

  • poskrbeli smo, da različne skupine uporabnikov različno komunicirajo z mobilno aplikacijo;
  • uspešni dijaki manj intenzivno uporabljajo mobilno aplikacijo;
  • učenci, ki zaspijo, bolj aktivno uporabljajo mobilno aplikacijo.

To pomeni, da učenci, ki zaspijo, začnejo vedno več časa preživeti v mobilni aplikaciji in na koncu v njej ostanejo za vedno.

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python

Sprva smo bili presenečeni, a po premisleku smo ugotovili, da gre za povsem naraven učinek. Nekoč sem se sam učil francoščino z dvema orodjema: z mobilno aplikacijo in s slovničnimi predavanji na YouTubu. Sprva sem si čas razdelil v razmerju 50 proti 50. Je pa aplikacija bolj zabavna, je igrifikacija, vse je preprosto, hitro in pregledno, na predavanju pa se moraš v to poglobiti, kaj napisati. , vadite v zvezku. Postopoma sem začel več časa preživljati na svojem pametnem telefonu, dokler njegov delež ni narasel na 100 %: če na njem preživite tri ure, ustvarite lažen občutek opravljenega dela, zaradi katerega nimate želje iti karkoli poslušat. .

Toda kako je to mogoče? Navsezadnje smo posebej ustvarili mobilno aplikacijo, vanj vgradil Ebbinghausovo krivuljo, ga igrificirali, naredili privlačno, da bi ljudje v njem preživljali čas, a se je izkazalo, da jih le moti? Pravzaprav je razlog v tem, da se je ekipa mobilne aplikacije predobro spopadla s svojimi nalogami, zaradi česar je postala kul, samozadosten produkt in začela izpadati iz našega ekosistema.

Kot rezultat raziskave je postalo jasno, da je treba mobilno aplikacijo nekako spremeniti, da bo manj moteča od glavnega študija. In tako otroci kot odrasli. To delo je trenutno v teku.

Drugi primer: hrošči pri vkrcanju

Onboarding je neobvezen dodaten postopek ob prijavi novega študenta, ki odpravlja morebitne tehnične težave v prihodnosti. Osnovni scenarij predvideva, da se je oseba registrirala na pristajalni strani, pridobila dostop do svojega osebnega računa, stopila v stik in dobila uvodno lekcijo. Hkrati opažamo velik odstotek tehničnih težav med uvodno uro: napačna različica brskalnika, mikrofon ali zvok ne deluje, učitelj ne more takoj predlagati rešitve, vse to pa je še posebej težko, ko gre za otrokom. Zato smo v vašem osebnem računu razvili dodatno aplikacijo, kjer lahko opravite štiri preproste korake: preverite brskalnik, kamero, mikrofon in potrdite, da bodo starši med uvodno uro v bližini (navsezadnje so oni tisti, ki plačajo izobraževanje njihovih otrok).

Teh nekaj uvodnih strani je pokazalo tok, kot je ta:

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python
1: začetni blok s tremi nekoliko različnimi (odvisno od naročnika) obrazci za vnos prijave in gesla.
2: potrditveno polje, ki se strinja z dodatnim postopkom vkrcanja.
2.1–2.3: Preverite prisotnost staršev, različico Chroma in zvok.
3: končni blok.

Videti je zelo naravno: v prvih dveh korakih večina obiskovalcev odide, saj ugotovijo, da je treba nekaj izpolniti, preveriti, a ni časa. Če je stranka dosegla tretjo stopničko, potem bo skoraj zagotovo prišla do finala. Na lejko ni niti enega razloga, da bi karkoli sumili.

Kljub temu smo se odločili, da našega vkrcanja analiziramo ne na klasičnem enodimenzionalnem lijaku, temveč z uporabo Markovljeve verige. Vklopili smo malo več dogodkov, zagnali skript in dobili tole:

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python

V tem kaosu je jasno razbrati le eno: nekaj je šlo narobe. Proces vkrcanja je linearen, to je neločljivo povezano z zasnovo, v njem ne bi smelo biti takšne mreže povezav. In tukaj je takoj jasno, da je uporabnik vržen med korake, med katerimi sploh ne bi smelo biti prehodov.

Kako uporabljamo Markovljeve verige pri ocenjevanju rešitev in iskanju napak. S skriptom Python

Za to čudno sliko sta lahko dva razloga:

  • v bazo dnevnikov prikradla plitvina;
  • Napake so v samem izdelku – onboarding.

Prvi razlog je najverjetneje resničen, vendar je njegovo testiranje precej delovno intenzivno in popravljanje dnevnikov ne bo pomagalo izboljšati UX. A pri drugem, če obstaja, je bilo treba nujno nekaj ukreniti. Zato smo šli pogledat vozlišča, identificirati robove, ki ne bi smeli obstajati, in poiskati razloge za njihov nastanek. Videli smo, da so se nekateri uporabniki zataknili in hodili v krogih, drugi so padli iz sredine na začetek, tretji pa načeloma niso mogli priti iz prvih dveh korakov. Podatke smo prenesli v QA - in ja, izkazalo se je, da je bilo dovolj hroščev pri onboardingu: to je tak stranski produkt, nekakšna bergla, ni bilo dovolj globoko testirano, ker... Težav nismo pričakovali. Zdaj se je celoten postopek snemanja spremenil.

Ta zgodba nam je pokazala nepričakovano uporabo Markovljevih verig na področju zagotavljanja kakovosti.

Poskusite sami!

Jaz sem svoje objavil Skript Python za urjenje Markovljevih verig v javni domeni - uporabite ga za svoje zdravje. Dokumentacija na GitHubu, tukaj lahko postavljate vprašanja, poskušal bom odgovoriti na vse.

No, koristne povezave: Knjižnica NetworkX, Graphviz vizualizator. In tukaj na Habréju je članek o markovskih verigah. Grafi v članku so narejeni z uporabo Gephi.

Vir: www.habr.com

Dodaj komentar