Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti

Það er mikilvægt fyrir okkur að skilja hvað gerist hjá nemendum okkar meðan á þjálfun stendur og hvernig þessir atburðir hafa áhrif á niðurstöðuna, þannig að við smíðum ferðakort viðskiptavina - kort af upplifun viðskiptavina. Þegar öllu er á botninn hvolft er námsferlið ekki eitthvað samfellt og óaðskiljanlegt, það er keðja af samtengdum atburðum og aðgerðum nemandans og þessar aðgerðir geta verið mjög mismunandi milli nemenda. Nú hefur hann lokið lexíu sinni: hvað mun hann gera næst? Fer það í heimanám? Mun það ræsa farsímaforrit? Mun hann breyta um kúrs, biðja um að skipta um kennara? Ferðu beint í næstu kennslustund? Eða fer hann bara vonsvikinn? Er hægt, með því að greina þetta kort, að greina mynstur sem leiða til árangursríks námskeiðs eða öfugt til „brottfalls“ nemandans?

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti

Venjulega eru sérhæfð, mjög dýr lokuð verkfæri notuð til að byggja upp CJM. En við vildum koma með eitthvað einfalt, sem krefst lágmarks fyrirhafnar og, ef hægt er, opinn uppspretta. Svo kom upp sú hugmynd að nota Markov keðjur - og það tókst. Við smíðuðum kort, túlkuðum gögn um hegðun nemenda í formi línurits, sáum algjörlega óljós svör við alþjóðlegum viðskiptamálum og fundum meira að segja djúpt faldar villur. Við gerðum þetta allt með því að nota opinn uppspretta Python forskriftarlausnir. Í þessari grein mun ég tala um tvö tilvik með þessum mjög óljósu niðurstöðum og deila handritinu með öllum.

Svo, Markov keðjur sýna líkurnar á umskiptum milli atburða. Hér er frumstætt dæmi frá Wikipedia:

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti

Hér eru „E“ og „A“ atburðir, örvarnar eru umskipti á milli þeirra (þar á meðal umskipti frá atburði yfir í það sama), og þyngd örvarna eru líkur á umskiptum („vegið beint graf“).

Hvað notaðirðu?

Hringrásin var þjálfuð með stöðluðum Python virkni, sem var fóðruð með virkniskrám nemenda. Línuritið á fylkinu sem myndast var smíðað af NetworkX bókasafninu.

Loginn lítur svona út:

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti

Þetta er csv skrá sem inniheldur töflu með þremur dálkum: auðkenni nemenda, nafn atburðar, tími þegar hann átti sér stað. Þessir þrír reitir duga til að rekja hreyfingar viðskiptavinarins, byggja kort og á endanum fá Markov keðju.

Safnið skilar smíðaðum línuritum á .dot eða .gexf sniði. Til að sjá hið fyrrnefnda geturðu notað ókeypis Graphviz pakkann (gvedit tól), við unnum með .gexf og Gephi, líka ókeypis.

Næst vil ég nefna tvö dæmi um notkun Markov keðja, sem gerði okkur kleift að skoða markmið okkar, menntunarferli og Skyeng vistkerfið sjálft. Jæja, lagaðu villurnar.

Fyrsta tilvikið: farsímaforrit

Til að byrja með skoðuðum við ferðalag nemenda í gegnum vinsælustu vöruna okkar – Almennt námskeiðið. Á því augnabliki var ég að vinna í barnadeild Skyeng og við vildum sjá hversu áhrifaríkt farsímaforritið virkaði með áhorfendum barna okkar.

Þegar ég tók annálana og keyrði þá í gegnum handritið fékk ég eitthvað á þessa leið:

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti

Upphafshnúturinn er Start General, og neðst eru þrír úttakshnútar: nemandinn „sofnaði“, skipti um námskeið og kláraði námskeiðið.

  • Sofnaði, „sofnaði“ - þetta þýðir að hann er ekki lengur á námskeiðum, líklegast hefur hann dottið af. Við köllum þetta ástand bjartsýnn „sofandi“ vegna þess að... í orði, hefur hann enn tækifæri til að halda áfram námi. Versta niðurstaðan hjá okkur.
  • Hætti hershöfðingi, breytti um stefnu - skipti úr hershöfðingja yfir í eitthvað annað og villtist fyrir Markov keðjunni okkar.
  • Námskeiði lokið, Námskeiðinu lokið - kjöraðstæður, viðkomandi hefur lokið 80% kennslustunda (ekki er krafist allra kennslustunda).

Að komast inn í árangursríkan bekkjarhnút þýðir að klára kennslustundina á vettvang okkar ásamt kennaranum. Það skráir framfarir á námskeiðinu og nálgun að tilætluðum árangri - "Kláraði námskeiðið." Það er okkur mikilvægt að nemendur mæti sem mest.

Til að fá nákvæmari megindlegar niðurstöður fyrir farsímaforritið (applotuhnútur), byggðum við aðskildar keðjur fyrir hvern lokahnúta og bárum síðan saman brúnaþyngdina parað saman:

  • frá applotunni aftur í það;
  • frá applotu til árangursríks námskeiðs;
  • frá vel heppnuðum bekk til applotu.

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti
Til vinstri eru nemendur sem luku áfanganum, til hægri eru þeir sem „sofnuðu“

Þessar þrjár brúnir sýna tengslin milli árangurs nemanda og notkunar þeirra á farsímaforritinu. Við bjuggumst við að sjá að nemendur sem luku áfanganum myndu hafa sterkari tengingu við umsóknina en nemendur sem sofnuðu. Hins vegar fengum við í raun og veru nákvæmlega þveröfugar niðurstöður:

  • við sáum til þess að mismunandi hópar notenda hafi samskipti við farsímaforritið á mismunandi hátt;
  • farsælir nemendur nota farsímaforritið minna ákaft;
  • nemendur sem sofna nota farsímaforritið virkari.

Þetta þýðir að nemendur sem sofna byrja að eyða meiri og meiri tíma í farsímaforritinu og eru að lokum í því að eilífu.

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti

Í fyrstu urðum við hissa en eftir að hafa velt þessu fyrir okkur komumst við að því að þetta voru algjörlega eðlileg áhrif. Á sínum tíma lærði ég frönsku á eigin spýtur með því að nota tvö verkfæri: farsímaforrit og málfræðifyrirlestra á YouTube. Í fyrstu skipti ég tímanum á milli þeirra í hlutfallinu 50 til 50. En forritið er skemmtilegra, það er gamification, allt er einfalt, hratt og skýrt, en í fyrirlestrinum þarf að kafa ofan í það, skrifa eitthvað niður , æfðu þig í minnisbók. Smám saman fór ég að eyða meiri tíma í snjallsímanum mínum, þar til hlutur hans jókst í 100%: ef þú eyðir þremur klukkustundum í það, skaparðu falska tilfinningu um lokið verk, vegna þess að þú hefur enga löngun til að fara og hlusta á neitt .

En hvernig getur þetta verið? Eftir allt saman, bjuggum við sérstaklega til farsímaforrit, innbyggt í það Ebbinghaus ferilinn, gamified það, gerði það aðlaðandi þannig að fólk myndi eyða tíma í það, en það kemur í ljós að það truflar aðeins þá? Reyndar er ástæðan sú að farsímaforritateymið tókst of vel á við verkefni sín, þar af leiðandi varð það flott, sjálfbær vara og fór að detta út úr vistkerfi okkar.

Í kjölfar rannsóknarinnar kom í ljós að breyta þyrfti farsímaforritinu einhvern veginn þannig að það truflaði minna frá aðalnáminu. Og bæði börn og fullorðnir. Sú vinna stendur nú yfir.

Annað tilfelli: villur um borð

Inngangur er valfrjáls viðbótaraðferð við skráningu nýs nemanda, sem útilokar hugsanleg tæknileg vandamál í framtíðinni. Grunnsviðsmyndin gerir ráð fyrir að einstaklingur hafi skráð sig á áfangasíðuna, fengið aðgang að persónulegum reikningi sínum, haft samband við hann og fengið kynningartíma. Á sama tíma tökum við eftir stóru hlutfalli tæknilegra örðugleika í kynningartímanum: röng útgáfa af vafranum, hljóðneminn eða hljóðið virkar ekki, kennarinn getur ekki strax bent á lausn og allt er þetta sérstaklega erfitt þegar kemur að því. til barna. Þess vegna höfum við þróað viðbótarforrit á persónulega reikningnum þínum, þar sem þú getur klárað fjögur einföld skref: athugaðu vafrann þinn, myndavélina, hljóðnemann og staðfestu að foreldrar verði nálægt meðan á kynningartímanum stendur (enda eru þeir sem borga fyrir menntun barna sinna).

Þessar fáu inngöngusíður sýndu trekt eins og þessa:

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti
1: upphafsreitur með þremur örlítið mismunandi (fer eftir viðskiptavinum) innskráningareyðublöðum og lykilorði.
2: gátreitur samþykkir viðbótarferlið um borð.
2.1-2.3: Athugaðu hvort foreldrar séu viðstaddir, Chrome útgáfu og hljóð.
3: lokablokk.

Það lítur mjög eðlilegt út: í fyrstu tveimur skrefunum fara flestir gestirnir, átta sig á því að það er eitthvað til að fylla út, athuga, en það er enginn tími. Ef viðskiptavinurinn hefur náð þriðja þrepi, þá kemst hann næstum örugglega í úrslit. Það er ekki ein einasta ástæða til að gruna neitt á trektinni.

Engu að síður ákváðum við að greina inngöngu okkar ekki á klassískri einvíddar trekt, heldur með Markov keðju. Við kveiktum á aðeins fleiri atburðum, keyrðum handritið og fengum þetta:

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti

Í þessari óreiðu er aðeins eitt hægt að skilja greinilega: eitthvað fór úrskeiðis. Innritunarferlið er línulegt, þetta er eðlislægt í hönnuninni, það ætti ekki að vera slíkur vefur af tengingum í því. Og hér er strax ljóst að notandanum er kastað á milli þrepa, þar á milli ættu alls ekki að vera umskipti.

Hvernig við notum Markov keðjur við að meta lausnir og finna villur. Með Python handriti

Það geta verið tvær ástæður fyrir þessari undarlegu mynd:

  • inn í loggagnagrunninn læddust slóðir;
  • Það eru mistök í vörunni sjálfri - um borð.

Fyrsta ástæðan er að öllum líkindum sönn, en að prófa hana er nokkuð vinnufrek og leiðrétting á annálunum mun ekki hjálpa til við að bæta UX. En með þeirri seinni, ef hún er til, þurfti að gera eitthvað brýnt. Þess vegna fórum við að skoða hnútana, auðkenna brúnir sem ættu ekki að vera til og leita að ástæðum fyrir tilvist þeirra. Við sáum að sumir notendur festust og gengu í hringi, aðrir duttu út úr miðjunni til byrjunar og aðrir gátu í grundvallaratriðum ekki farið út úr fyrstu tveimur skrefunum. Við fluttum gögnin yfir á QA - og já, það kom í ljós að það voru nægar villur í inngöngunni: þetta er svo aukaafurð, smá hækja, það var ekki prófað nógu djúpt, því... Við áttum ekki von á neinum vandræðum. Nú hefur allt upptökuferlið breyst.

Þessi saga sýndi okkur óvænta notkun Markov keðja á sviði QA.

Prófaðu það sjálfur!

Ég póstaði mínum Python handrit til að þjálfa Markov keðjur í almenningseign - notaðu það fyrir heilsuna þína. Skjöl á GitHub, spurningar má spyrja hér, ég mun reyna að svara öllu.

Jæja, gagnlegir tenglar: NetworkX bókasafn, Grafhviz sjónrænni. Og hér það er grein um Habré um Markov keðjur. Gröfin í greininni eru gerð með því að nota Gefí.

Heimild: www.habr.com

Bæta við athugasemd