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

Za nas je važno da razumijemo šta se dešava našim studentima tokom obuke i kako ti događaji utiču na rezultat, stoga gradimo Customer Journey Map – mapu korisničkog iskustva. Na kraju krajeva, proces učenja nije nešto kontinuirano i integralno, 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: šta će dalje? Hoće li ići na domaći? Hoće li pokrenuti mobilnu aplikaciju? Hoće li promijeniti kurs, tražiti promjenu nastavnika? Hoćeš li ići direktno na sljedeću lekciju? Ili će jednostavno otići razočaran? Da li je moguće, analizom ove mape, identificirati obrasce koji dovode do uspješnog završetka kursa ili, obrnuto, do „osipanja“ studenta?

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

Tipično, specijalizovani, veoma skupi alati zatvorenog koda se koriste za izgradnju CJM-a. Ali željeli smo smisliti nešto jednostavno, što zahtijeva minimalan trud i, ako je moguće, open source. Tako je došla ideja da koristimo Markovljeve lance - i uspjeli smo. Napravili smo mapu, interpretirali podatke o ponašanju učenika u obliku grafikona, vidjeli potpuno neočigledne odgovore na globalna poslovna pitanja, pa čak i pronašli duboko skrivene greške. Sve smo to uradili koristeći open source Python skript rješenja. U ovom članku ću govoriti o dva slučaja sa onim vrlo neočiglednim rezultatima i podijeliti skriptu sa svima.

Dakle, Markovljevi lanci pokazuju vjerovatnoću prijelaza između događaja. Evo primitivnog primjera sa Wikipedije:

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

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

šta ste koristili?

Kolo je trenirano sa standardnom Python funkcionalnošću, koja se hranila evidencijama aktivnosti učenika. Graf na rezultujućoj matrici je konstruisana od strane NetworkX biblioteke.

Dnevnik izgleda ovako:

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

Ovo je csv datoteka koja sadrži tabelu od tri kolone: ​​ID učenika, naziv događaja, vrijeme kada se dogodio. Ova tri polja su dovoljna da se prati kretanje klijenta, napravi mapa i na kraju se dobije Markovljev lanac.

Biblioteka vraća konstruisane grafikone u .dot ili .gexf formatu. Za vizualizaciju prvog, možete koristiti besplatni paket Graphviz (gvedit alat), radili smo sa .gexf-om i Gephijem, također besplatno.

Zatim bih dao dva primjera korištenja Markovljevih lanaca, koji su nam omogućili da iznova pogledamo naše ciljeve, obrazovne procese i sam Skyeng ekosistem. Pa, popravi greške.

Prvi slučaj: mobilna aplikacija

Za početak, istražili smo putovanje učenika kroz naš najpopularniji proizvod — Opći kurs. U tom trenutku radila sam na dečjem odeljenju Skyeng-a i želeli smo da vidimo koliko efikasno mobilna aplikacija radi sa našom dečijom publikom.

Uzimajući logove i provodeći ih kroz skriptu, dobio sam nešto ovako:

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

Početni čvor je Start General, a na dnu se nalaze tri izlazna čvora: učenik je „zaspao“, promijenio kurs i završio kurs.

  • Zaspao, "Zaspao" - to znači da više ne ide na časove, najvjerovatnije je pao. Optimistički ovo stanje nazivamo "uspavanjem", jer... u teoriji, još uvijek ima priliku da nastavi studije. Najgori rezultat za nas.
  • Pao general, promenio kurs - prešao sa generala na nešto drugo i izgubio se za naš lanac Markova.
  • Završen kurs, Završen kurs - idealno stanje, osoba je završila 80% časova (nisu sve lekcije obavezne).

Ulazak u uspješan čvor klase znači uspješno završetak lekcije na našoj platformi zajedno sa nastavnikom. Bilježi napredak duž staze i približavanje željenom rezultatu - "Završen kurs." Važno nam je da učenici pohađaju što više.

Da bismo dobili preciznije kvantitativne zaključke za mobilnu aplikaciju (čvor sesije aplikacije), izgradili smo zasebne lance za svaki od konačnih čvorova, a zatim usporedili težine rubova u paru:

  • iz sesije aplikacije natrag na nju;
  • od sesije aplikacije do uspješnog razreda;
  • od uspješne nastave do sesije aplikacije.

Kako koristimo Markovljeve lance u procjeni rješenja i pronalaženju grešaka. Sa Python skriptom
Lijevo su studenti koji su završili kurs, desno oni koji su "zaspali"

Ove tri ivice pokazuju odnos između uspjeha učenika i njihove upotrebe mobilne aplikacije. Očekivali smo da ćemo vidjeti da će studenti koji su završili kurs imati jaču vezu s aplikacijom od studenata koji su zaspali. Međutim, u stvarnosti smo dobili upravo suprotne rezultate:

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

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

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

U početku smo bili iznenađeni, ali nakon što smo razmislili, shvatili smo da je to potpuno prirodan efekat. Svojevremeno sam samostalno učio francuski koristeći dva alata: mobilnu aplikaciju i predavanja iz gramatike na YouTube-u. Isprva sam podijelio vrijeme između njih u omjeru 50 prema 50. Ali aplikacija je zabavnija, ima gamifikacije, sve je jednostavno, brzo i jasno, ali na predavanju morate uroniti u to, nešto zapisati , vježbajte u svesci. Postepeno sam počeo da provodim više vremena na svom pametnom telefonu, sve dok njegov udeo nije porastao na 100%: ako provedete tri sata na njemu, stvarate lažni osećaj završenog posla, zbog čega nemate želju da idete i slušate bilo šta .

Ali kako to može biti? Uostalom, posebno smo kreirali mobilnu aplikaciju, u njega ugrađena Ebbinghausova kriva, gamificirali, učinili privlačnim kako bi ljudi provodili vrijeme u njemu, ali ispada da im to samo odvlači pažnju? Zapravo, razlog je taj što se tim mobilnih aplikacija previše dobro nosio sa svojim zadacima, zbog čega je postao kul, samodovoljan proizvod i počeo ispadati iz našeg ekosistema.

Kao rezultat istraživanja, postalo je jasno da mobilnu aplikaciju treba nekako promijeniti kako bi manje odvlačila pažnju od glavnog toka studija. I djece i odraslih. Ovaj posao je trenutno u toku.

Drugi slučaj: onboarding greške

Onboarding je opciona dodatna procedura prilikom registracije novog studenta, čime se eliminišu potencijalni tehnički problemi u budućnosti. Osnovni scenario pretpostavlja da se osoba registrovala na odredišnoj stranici, dobila pristup svom ličnom nalogu, kontaktirala je i dobila uvodnu lekciju. Istovremeno, uočavamo veliki procenat tehničkih poteškoća tokom uvodnog časa: pogrešna verzija pretraživača, mikrofon ili zvuk ne radi, 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 u vašem ličnom računu u kojoj možete izvršiti četiri jednostavna koraka: provjerite svoj preglednik, kameru, mikrofon i potvrdite da će roditelji biti u blizini tokom uvodnog časa (na kraju krajeva, oni su ti koji plaćaju obrazovanje njihove djece).

Ovih nekoliko onboarding stranica je pokazalo ovakav tok:

Kako koristimo Markovljeve lance u procjeni rješenja i pronalaženju grešaka. Sa Python skriptom
1: početni blok sa tri malo različita (ovisno o klijentu) formulara za prijavu i lozinku.
2: potvrdni okvir za slaganje s dodatnom procedurom učlanjenja.
2.1-2.3: Provjerite prisustvo roditelja, verziju Chromea i zvuk.
3: završni blok.

Izgleda vrlo prirodno: u prva dva koraka većina posjetitelja odlazi, shvaćajući da ima šta popuniti, provjeriti, ali nema vremena. Ako je klijent došao do trećeg koraka, onda će gotovo sigurno stići do finala. Ne postoji nijedan razlog da sumnjate u bilo šta u lijevu.

Ipak, odlučili smo da analiziramo naš onboarding ne koristeći klasični jednodimenzionalni lijevak, već pomoću Markovljevog lanca. Uključili smo još malo događaja, pokrenuli skriptu i dobili ovo:

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

U ovom haosu može se jasno razumjeti samo jedno: nešto je pošlo po zlu. Proces onboardinga je linearan, to je inherentno dizajnu, u njemu ne bi trebalo postojati takva mreža 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 procjeni rješenja i pronalaženju grešaka. Sa Python skriptom

Mogu postojati dva razloga za ovu čudnu sliku:

  • jata su se uvukla u bazu podataka dnevnika;
  • Postoje greške u samom proizvodu - onboarding.

Prvi razlog je najvjerovatnije istinit, ali njegovo testiranje je prilično radno intenzivno, a ispravljanje dnevnika neće pomoći poboljšanju UX-a. Ali sa drugom, ako postoji, moralo se hitno nešto uraditi. Stoga smo otišli da pogledamo čvorove, identifikujemo ivice koje ne bi trebalo da postoje i potražimo razloge za njihovo pojavljivanje. Vidjeli smo da su neki korisnici zaglavili 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. Prebacili smo podatke u QA - i da, pokazalo se da ima dovoljno grešaka u onboardingu: ovo je takav nusproizvod, malo štaka, nije dovoljno duboko testiran, jer... Nismo očekivali nikakve probleme. Sada se cijeli proces snimanja promijenio.

Ova priča nam je pokazala neočekivanu primenu Markovljevih lanaca u oblasti QA.

Isprobajte sami!

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

Pa korisni linkovi: NetworkX biblioteka, Graphviz vizualizator. I ovdje postoji članak o Habréu o Markovim lancima. Grafikoni u članku su napravljeni pomoću Gephi.

izvor: www.habr.com

Dodajte komentar