Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu

Mums ir svarÄ«gi saprast, kas notiek ar mÅ«su audzēkņiem apmācÄ«bu laikā un kā Å”ie notikumi ietekmē rezultātu, tāpēc veidojam Klientu ceļojuma karti ā€“ klientu pieredzes karti. Galu galā mācÄ«bu process nav kaut kas nepārtraukts un neatņemams, tas ir savstarpēji saistÄ«tu notikumu un skolēna darbÄ«bu ķēde, un Ŕīs darbÄ«bas dažādiem studentiem var ievērojami atŔķirties. Tagad viņŔ ir pabeidzis mācÄ«bu stundu: ko viņŔ darÄ«s tālāk? Vai tas iet uz mājasdarbu? Vai tiks palaists mobilā lietojumprogramma? Vai viņŔ mainÄ«s kursu, prasÄ«s mainÄ«t skolotājus? Vai dosieties uzreiz uz nākamo nodarbÄ«bu? Vai arÄ« viņŔ vienkārÅ”i aizies vÄ«lies? Vai, analizējot Å”o karti, ir iespējams noteikt modeļus, kas noved pie sekmÄ«gas kursa pabeigÅ”anas vai, tieÅ”i otrādi, pie studenta ā€žatbirumaā€?

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu

Parasti CJM izveidoÅ”anai tiek izmantoti specializēti, ļoti dārgi slēgta pirmkoda rÄ«ki. Bet mēs vēlējāmies izdomāt kaut ko vienkārÅ”u, kas prasa minimālu piepÅ«li un, ja iespējams, atvērto avotu. Tā radās ideja izmantot Markova ķēdes ā€“ un mums tas izdevās. Mēs izveidojām karti, interpretējām datus par skolēnu uzvedÄ«bu diagrammas veidā, redzējām pilnÄ«gi nepārprotamas atbildes uz globālām biznesa problēmām un pat atradām dziļi slēptas kļūdas. Mēs to visu darÄ«jām, izmantojot atvērtā pirmkoda Python skriptu risinājumus. Å ajā rakstā es runāŔu par diviem gadÄ«jumiem ar ļoti nepārprotamiem rezultātiem un dalÄ«Å”os ar skriptu ar visiem.

Tātad Markova ķēdes parāda pāreju iespējamību starp notikumiem. Šeit ir primitīvs piemērs no Wikipedia:

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu

Å eit ā€œEā€ un ā€œAā€ ir notikumi, bultiņas ir pārejas starp tiem (ieskaitot pāreju no notikuma uz to paÅ”u), un bultiņu svars ir pārejas varbÅ«tÄ«ba (ā€œsvērtais virzÄ«tais grafiksā€).

Ko tu izmantoji?

Ķēde tika apmācÄ«ta ar standarta Python funkcionalitāti, kas tika barota ar studentu aktivitāŔu žurnāliem. IegÅ«tās matricas grafiku izveidoja NetworkX bibliotēka.

Žurnāls izskatās Ŕādi:

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu

Šis ir csv fails, kurā ir tabula ar trim kolonnām: studenta ID, notikuma nosaukums, laiks, kad tas notika. Šie trīs lauki ir pietiekami, lai izsekotu klienta kustībām, izveidotu karti un galu galā iegūtu Markova ķēdi.

Bibliotēka atgriež izveidotos grafikus .dot vai .gexf formātā. Lai vizualizētu pirmo, varat izmantot bezmaksas Graphviz pakotni (gvedit rīku), mēs strādājām ar .gexf un Gephi, arī bezmaksas.

Tālāk es vēlētos sniegt divus Markova ķēžu izmantoÅ”anas piemērus, kas ļāva mums no jauna paskatÄ«ties uz mÅ«su mērÄ·iem, izglÄ«tÄ«bas procesiem un paÅ”u Skyeng ekosistēmu. Labi, izlabojiet kļūdas.

Pirmais gadījums: mobilā lietojumprogramma

Sākumā mēs izpētÄ«jām studentu ceļojumu, izmantojot mÅ«su vispopulārāko produktu ā€” vispārējo kursu. Tajā brÄ«dÄ« es strādāju Skyeng bērnu nodaļā un vēlējāmies redzēt, cik efektÄ«vi mobilā aplikācija darbojas ar mÅ«su bērnu auditoriju.

Paņemot žurnālus un palaižot tos caur skriptu, es saņēmu kaut ko līdzīgu:

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu

Sākuma mezgls ir Start General, un apakŔā ir trÄ«s izvades mezgli: students ā€œaizmigaā€, mainÄ«ja kursu un pabeidza kursu.

  • Aizmiga, ā€œAizmigaā€ - tas nozÄ«mē, ka viņŔ vairs neapmeklē nodarbÄ«bas, visticamāk, viņŔ nokrita. Å o stāvokli optimistiski saucam par ā€œmieguā€, jo... teorētiski viņam vēl ir iespēja turpināt studijas. Sliktākais rezultāts mums.
  • Atmests Ä£enerālis, MainÄ«ts kurss - pārgājis no Ä¢enerāļa uz kaut ko citu un apmaldÄ«jies mÅ«su Markova ķēdei.
  • Pabeigts kurss, Pabeigts kurss - ideāls stāvoklis, cilvēks ir apguvis 80% no nodarbÄ«bām (ne visas nodarbÄ«bas ir nepiecieÅ”amas).

Iekļūt veiksmÄ«gas klases mezglā nozÄ«mē veiksmÄ«gi pabeigt stundu mÅ«su platformā kopā ar skolotāju. Tas reÄ£istrē progresu kursa gaitā un pieeju vēlamajam rezultātam - ā€œKurss pabeigtsā€. Mums ir svarÄ«gi, lai skolēni apmeklētu pēc iespējas vairāk.

Lai iegÅ«tu precÄ«zākus kvantitatÄ«vos secinājumus mobilajai lietojumprogrammai (lietotnes sesijas mezglam), mēs izveidojām atseviŔķas ķēdes katram gala mezglam un pēc tam salÄ«dzinājām malu svarus pa pāriem:

  • no lietotnes sesijas atpakaļ uz to;
  • no lietotnes sesijas lÄ«dz veiksmÄ«gai klasei;
  • no veiksmÄ«gas nodarbÄ«bas lÄ«dz lietotņu sesijai.

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu
Kreisajā pusē ir studenti, kuri pabeidza kursu, labajā pusē ir tie, kas ā€œaizmigaā€

Å Ä«s trÄ«s malas parāda saistÄ«bu starp studenta panākumiem un mobilās lietotnes izmantoÅ”anu. Mēs gaidÄ«jām, ka studentiem, kuri pabeidza kursu, bÅ«s spēcÄ«gāka saikne ar pieteikumu nekā studentiem, kuri aizmiguÅ”i. Tomēr patiesÄ«bā mēs saņēmām tieÅ”i pretējus rezultātus:

  • pārliecinājāmies, ka dažādas lietotāju grupas atŔķirÄ«gi mijiedarbojas ar mobilo aplikāciju;
  • sekmÄ«gi studenti mazāk intensÄ«vi izmanto mobilo aplikāciju;
  • skolēni, kuri aizmieg, aktÄ«vāk izmanto mobilo aplikāciju.

Tas nozÄ«mē, ka aizmiguÅ”ie skolēni arvien vairāk laika sāk pavadÄ«t mobilajā aplikācijā un galu galā paliek tajā uz visiem laikiem.

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu

Sākumā bijām pārsteigti, bet, padomājot, sapratām, ka tas ir pilnÄ«gi dabisks efekts. Savulaik franču valodu mācÄ«jos patstāvÄ«gi, izmantojot divus rÄ«kus: mobilo aplikāciju un gramatikas lekcijas vietnē YouTube. Sākumā sadalÄ«ju laiku starp viņiem proporcijā 50 pret 50. Bet aplikācija ir jautrāka, ir gamification, viss ir vienkārÅ”i, ātri un skaidri, bet lekcijā tajā jāiedziļinās, kaut kas jāpieraksta. , prakse piezÄ«mju grāmatiņā. Pamazām sāku pavadÄ«t vairāk laika pie sava viedtālruņa, lÄ«dz tā Ä«patsvars pieauga lÄ«dz 100%: ja tam velti trÄ«s stundas, rodas nepatiesa padarÄ«ta darba sajÅ«ta, kuras dēļ nav vēlÄ“Å”anās iet un neko klausÄ«ties. .

Bet kā tas var bÅ«t? Galu galā mēs Ä«paÅ”i izveidojām mobilo lietojumprogrammu, iebÅ«vēta tajā Ebbinghaus lÄ«kne, spēlēja to, padarÄ«ja to pievilcÄ«gu, lai cilvēki tajā pavadÄ«tu laiku, bet izrādās, ka tas tikai novērÅ” viņu uzmanÄ«bu? PatiesÄ«bā iemesls ir tas, ka mobilo aplikāciju komanda pārāk labi tika galā ar saviem uzdevumiem, kā rezultātā tā kļuva par forÅ”u, paÅ”pietiekamu produktu un sāka izkrist no mÅ«su ekosistēmas.

PētÄ«juma rezultātā noskaidrojās, ka mobilā aplikācija ir kaut kā jāmaina, lai tā mazāk novērstu uzmanÄ«bu no pamatmācÄ«bu kursa. Un gan bērniem, gan pieauguÅ”ajiem. Å is darbs paÅ”laik notiek.

Otrais gadījums: iekļauŔanas kļūdas

Onboarding ir izvēles papildu procedÅ«ra, reÄ£istrējot jaunu studentu, novērÅ”ot iespējamās tehniskās problēmas nākotnē. Pamatscenārijs paredz, ka persona ir reÄ£istrējusies galvenajā lapā, ieguvusi piekļuvi savam personÄ«gajam kontam, ar viņu sazinās un tiek sniegta iepazÄ«Å”anās nodarbÄ«ba. Tajā paŔā laikā ievadstundas laikā mēs atzÄ«mējam lielu tehnisku grÅ«tÄ«bu procentuālo daļu: nedarbojas nepareiza pārlÅ«kprogrammas versija, mikrofons vai skaņa, skolotājs nevar uzreiz ieteikt risinājumu, un tas viss ir Ä«paÅ”i sarežģīti, kad runa ir. bērniem. Tādēļ esam izstrādājuÅ”i papildus aplikāciju jÅ«su personÄ«gajā kontā, kurā varat veikt četras vienkārÅ”as darbÄ«bas: pārbaudÄ«t pārlÅ«kprogrammu, kameru, mikrofonu un apstiprināt, ka iepazÄ«Å”anās nodarbÄ«bas laikā tuvumā bÅ«s vecāki (galu galā viņi ir tie, kas maksā viņu bērnu izglÄ«tÄ«ba).

Šajās dažās sagatavoŔanas lapās tika rādīta Ŕāda piltuve:

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu
1: sākuma bloks ar trim nedaudz atŔķirīgām (atkarībā no klienta) pieteikŔanās un paroles ievades veidlapām.
2: izvēles rÅ«tiņa, kas piekrÄ«t papildu uzņemÅ”anas procedÅ«rai.
2.1ā€“2.3: pārbaudiet vecāku klātbÅ«tni, Chrome versiju un skaņu.
3: pēdējais bloks.

Tas izskatās ļoti dabiski: pirmajos divos soļos lielākā daļa apmeklētāju aiziet, saprotot, ka ir ko aizpildÄ«t, pārbaudÄ«t, bet nav laika. Ja klients ir sasniedzis treÅ”o pakāpi, tad viņŔ gandrÄ«z noteikti sasniegs finālu. Nav neviena iemesla kaut ko aizdomām par piltuvi.

Neskatoties uz to, mēs nolēmām analizēt savu iekļauÅ”anu, izmantojot nevis klasisku viendimensiju piltuvi, bet gan Markova ķēdi. Mēs ieslēdzām nedaudz vairāk notikumu, palaidām skriptu un ieguvām Å”o:

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu

Å ajā haosā skaidri var saprast tikai vienu: kaut kas nogāja greizi. IeslēgÅ”anās process ir lineārs, tas ir raksturÄ«gs dizainam, un tajā nevajadzētu bÅ«t Ŕādam savienojumu tÄ«klam. Un te uzreiz ir skaidrs, ka lietotājs tiek izmests starp soļiem, starp kuriem pāreju nevajadzētu bÅ«t vispār.

Kā mēs izmantojam Markova ķēdes risinājumu izvērtÄ“Å”anā un kļūdu atraÅ”anā. Ar Python skriptu

Šim dīvainajam attēlam var būt divi iemesli:

  • baļķu datubāzē iezagās bari;
  • PaŔā produktā ir kļūdas - onboarding.

Pirmais iemesls, visticamāk, ir patiess, taču tā pārbaude ir diezgan darbietilpÄ«ga, un žurnālu laboÅ”ana nepalÄ«dzēs uzlabot UX. Bet ar otro, ja tāda eksistē, kaut kas bija steidzami jādara. Tāpēc mēs devāmies apskatÄ«t mezglus, identificēt malas, kurām nevajadzētu pastāvēt, un meklēt to raÅ”anās iemeslus. Redzējām, ka daži lietotāji iestrēga un staigāja pa apli, citi izkrita no vidus uz sākumu, bet citi principā nevarēja tikt ārā no pirmajiem diviem soļiem. Mēs pārsÅ«tÄ«jām datus uz QA - un jā, izrādÄ«jās, ka ir pietiekami daudz kļūdu onboarding: tas ir tāds blakusprodukts, mazliet kruÄ·is, tas nebija pietiekami dziļi pārbaudÄ«ts, jo... Mēs negaidÄ«jām nekādas problēmas. Tagad viss ierakstÄ«Å”anas process ir mainÄ«jies.

Å is stāsts mums parādÄ«ja negaidÄ«tu Markova ķēžu pielietojumu kvalitātes nodroÅ”ināŔanas jomā.

Izmēģiniet to pats!

Es ievietoju savu Python skripts Markova ķēžu apmācÄ«bai publiskajā Ä«paÅ”umā - izmantojiet to savai veselÄ«bai. GitHub dokumentācija, jautājumus var uzdot Å”eit, centÄ«Å”os atbildēt uz visu.

Nu, noderÄ«gas saites: NetworkX bibliotēka, Graphviz vizualizētājs. Un Å”eit ir raksts par Habrē par Markova ķēdēm. Grafiki rakstā ir veidoti, izmantojot Gefijs.

Avots: www.habr.com

Pievieno komentāru