Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom

Važno nam je razumjeti što se događa s našim studentima tijekom obuke i kako ti događaji utječu na rezultat, stoga gradimo Customer Journey Map - kartu korisničkog iskustva. Uostalom, proces učenja nije nešto kontinuirano i cjelovito, to je lanac međusobno povezanih događaja i radnji učenika, a te radnje mogu jako varirati među različitim učenicima. Sada je završio svoju lekciju: što će sljedeće učiniti? Hoće li ići na zadaću? Hoće li pokrenuti mobilnu aplikaciju? Hoće li promijeniti tečaj, tražiti promjenu učitelja? Hoćeš li ići odmah na sljedeću lekciju? Ili će jednostavno otići razočaran? Je li moguće analizom ove karte identificirati obrasce koji dovode do uspješnog završetka kolegija ili, obrnuto, do „ispadanja“ studenta?

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom

Obično se za izradu CJM-a koriste specijalizirani, vrlo skupi alati zatvorenog koda. Ali htjeli smo osmisliti nešto jednostavno, što zahtijeva minimalan napor i, ako je moguće, otvorenog koda. Tako smo došli na ideju da koristimo Markovljeve lance - i uspjeli smo. Napravili smo kartu, protumačili podatke o ponašanju studenata u obliku grafikona, vidjeli potpuno neočite odgovore na globalna poslovna pitanja, pa čak i pronašli duboko skrivene greške. Sve smo to napravili korištenjem rješenja Python skripte otvorenog koda. U ovom ću članku govoriti o dva slučaja s tim vrlo neočitim rezultatima i podijelit ću scenarij sa svima.

Dakle, Markovljevi lanci pokazuju vjerojatnost prijelaza između događaja. Evo primitivnog primjera iz Wikipedije:

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom

Ovdje su "E" i "A" događaji, strelice su prijelazi između njih (uključujući prijelaz s događaja na isti), a težine strelica su vjerojatnost prijelaza ("ponderirani usmjereni graf").

Što ste koristili?

Krug je treniran sa standardnom funkcionalnošću Pythona, koja je hranjena zapisnicima aktivnosti učenika. Graf na dobivenoj matrici konstruirala je biblioteka NetworkX.

Dnevnik izgleda ovako:

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom

Ovo je csv datoteka koja sadrži tablicu od tri stupca: ID učenika, naziv događaja, vrijeme kada se dogodio. Ova tri polja dovoljna su za praćenje kretanja klijenta, izradu karte i konačno dobivanje Markovljevog lanca.

Knjižnica vraća konstruirane grafove u .dot ili .gexf formatu. Za vizualizaciju prvog možete koristiti besplatni paket Graphviz (alat gvedit), radili smo s .gexf i Gephi, također besplatnim.

Zatim bih želio dati dva primjera korištenja Markovljevih lanaca, koji su nam omogućili novi pogled na naše ciljeve, obrazovne procese i sam Skyeng ekosustav. Pa, popravi greške.

Prvi slučaj: mobilna aplikacija

Za početak, istražili smo studentsko putovanje kroz naš najpopularniji proizvod—Opći tečaj. U tom sam trenutku radio na dječjem odjelu Skyenga i htjeli smo vidjeti koliko učinkovito mobilna aplikacija radi s našom dječjom publikom.

Uzimajući zapise i provlačeći ih kroz skriptu, dobio sam nešto poput ovoga:

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom

Početni čvor je Start General, a na dnu su tri izlazna čvora: student je "zaspao", promijenio tečaj i završio tečaj.

  • Zaspao, "Zaspao" - to znači da više ne pohađa nastavu, najvjerojatnije je pao. Ovo stanje optimistički nazivamo “uspavanim”, jer... u teoriji još uvijek ima priliku nastaviti studij. Najlošiji rezultat za nas.
  • Odbačen generalni, promijenio smjer - prebacio se s generalnog na nešto drugo i izgubio se za naš Markov lanac.
  • Završen tečaj, Završen tečaj - idealno stanje, osoba je završila 80% lekcija (nisu sve lekcije potrebne).

Ući u čvor uspješnog razreda znači uspješno završiti lekciju na našoj platformi zajedno s nastavnikom. Bilježi napredak duž tečaja i približavanje željenom rezultatu - "Završen tečaj." Bitno nam je da studenti što više dolaze.

Kako bismo dobili točnije kvantitativne zaključke za mobilnu aplikaciju (čvor sesije aplikacije), izgradili smo zasebne lance za svaki od konačnih čvorova i zatim usporedili pondere rubova u paru:

  • iz sesije aplikacije natrag u nju;
  • od sesije aplikacije do uspješnog razreda;
  • od uspješnog razreda do sesije aplikacije.

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom
Lijevo su studenti koji su završili predmet, desno oni koji su “zaspali”

Ova tri ruba pokazuju odnos između uspjeha učenika i njihove upotrebe mobilne aplikacije. Očekivali smo vidjeti da će studenti koji su završili tečaj imati jaču povezanost s aplikacijom nego studenti koji su zaspali. Međutim, u stvarnosti smo dobili upravo suprotne rezultate:

  • pobrinuli smo se da različite skupine korisnika različito komuniciraju s mobilnom aplikacijom;
  • uspješni učenici manje intenzivno koriste mobilnu aplikaciju;
  • učenici koji zaspu aktivnije koriste mobilnu aplikaciju.

To znači da studenti koji zaspu počinju sve više vremena provoditi u mobilnoj aplikaciji i na kraju u njoj ostaju zauvijek.

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom

Prvo smo bili iznenađeni, ali nakon razmišljanja shvatili smo da je to potpuno prirodan učinak. Svojedobno sam samostalno učila francuski koristeći dva alata: mobilnu aplikaciju i predavanja iz gramatike na YouTubeu. Prvo sam im podijelio vrijeme u omjeru 50 na 50. Ali aplikacija je zabavnija, ima gamifikacije, sve je jednostavno, brzo i pregledno, ali na predavanju se treba udubiti u to, nešto napisati , vježbati u bilježnici. Postupno sam počeo sve više vremena provoditi na svom pametnom telefonu, sve dok njegov udio nije narastao na 100%: ako na njemu provedete tri sata, stvarate lažan osjećaj završenog posla, zbog kojeg nemate želju otići i poslušati bilo što .

Ali kako to može biti? Uostalom, posebno smo izradili mobilnu aplikaciju, u nju ugradio Ebbinghausovu krivulju, igrificirali ga, učinili atraktivnim kako bi ljudi u njemu provodili vrijeme, ali ispada da im samo odvlači pažnju? Zapravo, razlog je to što se tim mobilne aplikacije predobro nosio sa svojim zadacima, zbog čega je ona postala cool, samodostatan proizvod i počela ispadati iz našeg ekosustava.

Kao rezultat istraživanja postalo je jasno da mobilnu aplikaciju treba nekako promijeniti kako bi manje odvlačila pozornost od glavnog tečaja učenja. I djeca i odrasli. Ovaj posao je trenutno u tijeku.

Drugi slučaj: greške pri ukrcavanju

Onboarding je izborni dodatni postupak prilikom upisa novog studenta, čime se eliminiraju mogući tehnički problemi u budućnosti. Osnovni scenarij pretpostavlja da se osoba registrirala na odredišnoj stranici, dobila pristup svom osobnom računu, da je kontaktirana i da joj je data uvodna lekcija. Istodobno, bilježimo veliki postotak tehničkih poteškoća tijekom uvodne lekcije: pogrešna verzija preglednika, ne radi mikrofon ili zvuk, nastavnik ne može odmah predložiti rješenje, a sve je to posebno teško kada je u pitanju djeci. Stoga smo razvili dodatnu aplikaciju na vašem osobnom računu u kojoj možete izvršiti četiri jednostavna koraka: provjeriti preglednik, kameru, mikrofon i potvrditi da će roditelji biti u blizini tijekom uvodne lekcije (uostalom, oni su ti koji plaćaju obrazovanje njihove djece).

Ovih nekoliko uvodnih stranica pokazalo je ovakav tok:

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom
1: početni blok s tri malo različita (ovisno o klijentu) obrasca za unos prijave i lozinke.
2: potvrdni okvir koji pristaje na dodatni postupak ukrcavanja.
2.1-2.3: Provjerite prisutnost roditelja, verziju Chromea i zvuk.
3: završni blok.

Izgleda vrlo prirodno: u prva dva koraka većina posjetitelja ode, shvativši da se ima što ispuniti, provjeriti, ali nema vremena. Ako je klijent došao do trećeg koraka, tada će gotovo sigurno doći do finala. Ne postoji niti jedan razlog da sumnjate u bilo što na lijevku.

Ipak, odlučili smo analizirati naš onboarding ne na klasičnom jednodimenzionalnom lijevku, već pomoću Markovljevog lanca. Uključili smo malo više događaja, pokrenuli skriptu i dobili ovo:

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom

U ovom kaosu jasno se može razumjeti samo jedno: nešto je pošlo po zlu. Proces uključivanja je linearan, to je svojstveno dizajnu, u njemu ne bi trebalo biti takve mreže veza. I ovdje je odmah jasno da je korisnik bačen između koraka, između kojih uopće ne bi trebalo biti prijelaza.

Kako koristimo Markovljeve lance u evaluaciji rješenja i pronalaženju grešaka. S Python skriptom

Mogu postojati dva razloga za ovu čudnu sliku:

  • plićaci su se uvukli u bazu podataka dnevnika;
  • Postoje greške u samom proizvodu - onboarding.

Prvi razlog je najvjerojatnije točan, ali njegovo testiranje prilično je naporno, a ispravljanje zapisa neće pomoći u poboljšanju korisničkog doživljaja. Ali s drugom, ako postoji, moralo se hitno nešto učiniti. Stoga smo krenuli pogledati čvorove, identificirati rubove koji ne bi trebali postojati i tražiti razloge njihovog nastanka. Vidjeli smo da su neki korisnici zapeli i hodali u krug, drugi su ispali iz sredine na početak, a treći u principu nisu mogli izaći iz prva dva koraka. Prenijeli smo podatke u QA - i da, pokazalo se da je bilo dovoljno bugova u onboardingu: ovo je takav nusprodukt, pomalo štaka, nije testirano dovoljno duboko, jer... Nismo očekivali nikakve probleme. Sada se cijeli proces snimanja promijenio.

Ova priča pokazala nam je neočekivanu primjenu Markovljevih lanaca u području osiguranja kvalitete.

Isprobajte sami!

Ja sam svoje objavio Python skripta za obuku Markovljevih lanaca u javnoj domeni - koristite ga za svoje zdravlje. Dokumentacija na GitHubu, ovdje se mogu postavljati pitanja, pokušat ću odgovoriti na sve.

Pa, korisni linkovi: NetworkX biblioteka, Graphviz vizualizator. I ovdje postoji članak na Habréu o Markovljevim lancima. Grafikoni u članku izrađeni su pomoću Gephi.

Izvor: www.habr.com

Dodajte komentar