Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python

Hè impurtante per noi di capisce ciò chì succede à i nostri studienti durante a furmazione è cumu questi avvenimenti affettanu u risultatu, cusì custruemu un Customer Journey Map - una mappa di l'esperienza di u cliente. Dopu tuttu, u prucessu di apprendimentu ùn hè micca qualcosa cuntinuu è integrale, hè una catena di avvenimenti interconnessi è azzioni di u studiente, è queste azzioni ponu varià assai trà i diversi studienti. Avà hà finitu a so lezzione : chì farà dopu ? Andà à i travaglii ? Lanciarà una applicazione mobile? Cambiarà di corsu, dumandà à cambià i prufessori ? Andate drittu à a prossima lezione? O ne partirà solu disappuntu ? Hè pussibule, analizendu sta mappa, identificà mudelli chì portanu à u successu di u corsu o, à u cuntrariu, à l'« abandon » di u studiente ?

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python

Di genere, strumenti di fonte chjusu specializati è assai caru sò usati per custruisce CJM. Ma avemu vulsutu cullà cù qualcosa simplice, chì richiede un minimu sforzu è, se pussibule, open source. Allora l'idea hè ghjunta à aduprà catene Markov - è avemu riesciutu. Avemu custruitu una mappa, interpretatu i dati nantu à u cumpurtamentu di i studienti in forma di un graficu, avemu vistu risposte completamente micca evidenti à i prublemi di l'affari mundiale, è ancu truvamu bug profondamente nascosti. Avemu fattu tuttu questu utilizendu soluzioni di scrittura Python open source. In questu articulu parleraghju di dui casi cù quelli risultati assai micca evidenti è sparte u script cù tutti.

Dunque, i catene di Markov mostranu a probabilità di transizioni trà l'avvenimenti. Eccu un esempiu primitivu da Wikipedia:

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python

Quì "E" è "A" sò avvenimenti, e frecce sò transizzioni trà elli (cumpresa a transizione da un avvenimentu à u stessu), è i pesi di e frecce sò a probabilità di transizione ("graficu direttu ponderatu").

Chì avete usatu?

U circuitu hè statu furmatu cù a funziunalità standard di Python, chì hè stata alimentata cù logs di attività di i studienti. U graficu nantu à a matrice resultanti hè stata custruita da a biblioteca NetworkX.

U logu pare cusì:

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python

Questu hè un schedariu csv chì cuntene una tavula di trè culonni: id di studiente, nome di l'eventu, tempu quandu hè accadutu. Questi trè campi sò abbastanza per traccia i muvimenti di u cliente, custruisce una mappa è infine ottene una catena Markov.

A biblioteca torna i grafici custruiti in u formatu .dot o .gexf. Per visualizà u primu, pudete aduprà u pacchettu Graphviz gratuitu (gvedit tool), avemu travagliatu cù .gexf è Gephi, ancu gratuitu.

In seguitu, vogliu dà dui esempi di usu di catene di Markov, chì ci hà permessu di piglià un ochju novu à i nostri scopi, i prucessi educativi è l'ecosistema Skyeng stessu. Ebbè, riparate i bug.

Primu casu: applicazione mobile

Per principià, avemu esploratu u viaghju di i studienti attraversu u nostru pruduttu più populari - u corsu Generale. À quellu mumentu, stava travagliatu in u dipartimentu di i zitelli di Skyeng è vulemu vede quantu efficace l'applicazione mobile hà travagliatu cù u publicu di i nostri zitelli.

Pigliendu i logs è eseguite à traversu u script, aghju qualcosa cum'è questu:

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python

U node di partenza hè Start General, è in u fondu ci sò trè nodi di output: u studiente "s'addormenta", hà cambiatu u cursu è hà finitu u corsu.

  • S'addormenta, "Fell asleep" - questu significa chì ùn hè più à piglià classi, assai prubabilmente hè cascatu. Ottimisimu chjamemu stu statu "dormitu", perchè ... in teoria, hà sempre l'uppurtunità di cuntinuà i so studii. U peghju risultatu per noi.
  • Abbandunatu generale, Cambiatu corsu - cambiatu da Generale à qualcosa d'altru è s'hè persu per a nostra catena Markov.
  • U corsu finitu, u corsu finitu - cundizione ideale, a persona hà finitu 80% di e lezioni (micca tutte e lezioni sò richieste).

Entra in u node di classa di successu significa cumpiendu cù successu a lezione nantu à a nostra piattaforma inseme cù u maestru. Registra u prugressu longu u corsu è avvicina à u risultatu desideratu - "Cumplettu u corsu". Hè impurtante per noi chì i studienti assistenu quant'è pussibule.

Per ottene cunclusioni quantitative più precise per l'applicazione mobile (node ​​di sessione di app), avemu custruitu catene separati per ognuna di i nodi finali è poi paragunate i pesi di u bordu per pari:

  • da a sessione di l'app torna à questu;
  • da a sessione di l'app à a classa successu;
  • da a classe di successu à a sessione di l'app.

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python
A manca sò i studienti chì anu finitu u corsu, à a diritta sò quelli chì "si sò addormentati"

Questi trè bordi mostranu a relazione trà u successu di un studiente è u so usu di l'app mobile. Avemu aspittatu di vede chì i studienti chì anu finitu u corsu avarianu una cunnessione più forte cù l'applicazione cà i studienti chì si sò addormentati. Tuttavia, in realtà avemu avutu esattamente u risultatu oppostu:

  • avemu assicuratu chì diversi gruppi d'utilizatori interagiscenu cù l'applicazione mobile in modu diversu;
  • i studienti riesciuti utilizanu l'applicazione mobile di manera menu intensiva;
  • i studienti chì si addormentanu utilizanu l'applicazione mobile più attivamente.

Questu significa chì i studienti chì dormenu cumincianu à passà più è più tempu in l'applicazione mobile è, à a fine, fermanu in questu per sempre.

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python

À u principiu eramu sorpresi, ma dopu avè pensatu, avemu capitu chì questu era un effettu completamente naturali. In un tempu, aghju studiatu u francese per mè stessu cù dui strumenti: una applicazione mobile è lezioni di grammatica in YouTube. À u primu, aghju spartutu u tempu trà elli in una proporzione di 50 à 50. Ma l'applicazione hè più divertente, ci hè gamification, tuttu hè simplice, veloce è chjaru, ma in a cunferenza avete da sfondà in questu, scrive qualcosa. , pratica in un quaderno. À pocu à pocu, aghju cuminciatu à passà più tempu nantu à u mo smartphone, finu à chì a so parte hè cresciutu à u 100%: se passate trè ore nantu à questu, creanu un falsu sintimu di travagliu finitu, perchè ùn avete micca u desideriu di andà à sente nunda. .

Ma cumu pò esse questu? Dopu tuttu, avemu creatu apposta una applicazione mobile, custruì in ellu a curva di Ebbinghaus, gamificò, hà fattu attrattiva per chì a ghjente passava u tempu in questu, ma si trova chì solu li distracts? In fatti, u mutivu hè chì a squadra di l'applicazioni mobile hà troppu bè cù i so compiti, per via di quale hè diventatu un pruduttu frescu, autosufficiente è hà cuminciatu à cascà fora di u nostru ecosistema.

In u risultatu di a ricerca, hè diventatu chjaru chì l'applicazione mobile deve esse cambiata in qualchì modu per esse menu distracting da u cursu principale di studiu. È i zitelli è adulti. Stu travagliu hè attualmente in corso.

Secondu casu: bug di l'imbarcu

L'imbarcu hè una prucedura supplementaria facultativa quandu si registra un novu studiente, eliminendu i prublemi tecnichi potenziali in u futuru. U scenariu basicu assume chì una persona hà registratu nantu à a pagina di destinazione, accede à u so contu persunale, hè cuntattatu è datu una lezione introduttiva. À u listessu tempu, avemu nutatu una grande percentuale di difficultà tecniche durante a lezione introduttiva: a versione sbagliata di u navigatore, u microfonu o u sonu ùn funziona micca, u maestru ùn pò micca suggerisce immediatamente una suluzione, è tuttu questu hè soprattuttu difficiule quandu si tratta. à i zitelli. Dunque, avemu sviluppatu una applicazione supplementaria in u vostru contu persunale, induve pudete compie quattru passi simplici: verificate u vostru navigatore, a camera, u microfonu è cunfirmà chì i genitori seranu vicinu durante a lezione introduttiva (dopu tuttu, sò quelli chì paganu per l'educazione di i so figlioli).

Queste poche pagine di imbarcu mostranu un funnel cum'è questu:

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python
1: bloccu di partenza cù trè forme di login è password ligeramente diverse (secondu u cliente).
2: checkbox accunsente à a prucedura addiziale di imbarcu.
2.1-2.3: Verificate a presenza di i genitori, a versione Chrome è u sonu.
3: bloccu finali.

Sembra assai naturali: in i primi dui passi, a maiò parte di i visitori partenu, capiscenu chì ci hè qualcosa per riempie, verificate, ma ùn ci hè micca tempu. Se u cliente hà ghjuntu à u terzu passu, allora quasi certamenti ghjunghje à a finale. Ùn ci hè micca un solu mutivu per suspettà qualcosa nantu à u funnel.

Tuttavia, avemu decisu di analizà a nostra imbarcazione micca cù un funnel unidimensionale classicu, ma cù una catena Markov. Avemu attivatu un pocu più avvenimenti, eseguimu u script è ottene questu:

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python

In questu caosu, solu una cosa pò esse chjaramente capitu: qualcosa hè andatu male. U prucessu di imbarcu hè lineale, questu hè inherente à u disignu, ùn deve esse micca tali web di cunnessione in questu. È quì hè subitu chjaru chì l'utilizatore hè ghjittatu trà i passi, trà quale ùn deve esse micca transizioni in tuttu.

Cumu usemu e catene di Markov in a valutazione di suluzioni è à truvà bug. Cù un script Python

Ci ponu esse dui motivi per sta strana stampa:

  • i banchi s'intruducevanu in a basa di dati di log;
  • Ci sò errori in u pruduttu stessu - onboarding.

U primu mutivu hè u più prubabilmente veru, ma a prova hè abbastanza laboriosa, è corregge i logs ùn aiutarà micca à migliurà l'UX. Ma cù u sicondu, s'ellu esiste, qualcosa deve esse fattu urgente. Dunque, andemu à guardà i nodi, identificà i bordi chì ùn deve micca esisti, è cercate i mutivi di a so occurrence. Avemu vistu chì certi utilizatori s'imbulighjavanu è marchjò in circhuli, altri cascò da u mità à u principiu, è altri, in principiu, ùn pudianu esce da i primi dui passi. Avemu trasfirutu i dati à QA - è iè, hè risultatu chì ci era abbastanza bugs in l'onboarding: questu hè un tali subproduttu, un pocu di crutch, ùn hè micca pruvatu abbastanza prufondamente, perchè ... Ùn avemu micca aspittatu prublemi. Avà tuttu u prucessu di registrazione hè cambiatu.

Sta storia ci hà dimustratu una applicazione inespettata di catene Markov in u campu di QA.

Pruvate voi stessu!

Aghju publicatu u mio Scrittura Python per a furmazione di catene Markov in u duminiu publicu - aduprà per a vostra salute. Documentazione nantu à GitHub, e dumande ponu esse fatte quì, pruvaraghju à risponde à tuttu.

Ebbè, ligami utili: biblioteca NetworkX, Visualizer Graphviz. È quì ci hè un articulu nantu à Habré nantu à e catene di Markov. I grafici in l'articulu sò fatti cù Gephi.

Source: www.habr.com

Add a comment