Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python

Mae’n bwysig i ni ddeall beth sy’n digwydd i’n myfyrwyr yn ystod hyfforddiant a sut mae’r digwyddiadau hyn yn effeithio ar y canlyniad, felly rydym yn adeiladu Map Taith Cwsmer - map o brofiad cwsmeriaid. Wedi'r cyfan, nid yw'r broses ddysgu yn rhywbeth parhaus ac annatod, mae'n gadwyn o ddigwyddiadau a gweithredoedd rhyng-gysylltiedig y myfyriwr, a gall y gweithredoedd hyn amrywio'n fawr ymhlith gwahanol fyfyrwyr. Nawr mae wedi cwblhau ei wers: beth fydd yn ei wneud nesaf? A fydd yn mynd i waith cartref? A fydd yn lansio cais symudol? A wnaiff ef newid cwrs, gofyn am newid athrawon? A wnewch chi fynd yn syth i'r wers nesaf? Neu a fydd yn gadael yn siomedig? A yw’n bosibl, drwy ddadansoddi’r map hwn, nodi patrymau sy’n arwain at gwblhau’r cwrs yn llwyddiannus neu, i’r gwrthwyneb, at “dropout” y myfyriwr?

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python

Yn nodweddiadol, defnyddir offer ffynhonnell caeedig arbenigol, drud iawn i adeiladu CJM. Ond roeddem eisiau meddwl am rywbeth syml, a oedd yn gofyn am ychydig o ymdrech ac, os yn bosibl, ffynhonnell agored. Felly daeth y syniad i fyny i ddefnyddio cadwyni Markov - ac fe wnaethom lwyddo. Fe wnaethom adeiladu map, dehongli data ar ymddygiad myfyrwyr ar ffurf graff, gweld atebion cwbl anamlwg i faterion busnes byd-eang, a hyd yn oed dod o hyd i fygiau cudd iawn. Gwnaethom hyn i gyd gan ddefnyddio datrysiadau sgript Python ffynhonnell agored. Yn yr erthygl hon byddaf yn siarad am ddau achos gyda'r canlyniadau nad ydynt yn amlwg iawn ac yn rhannu'r sgript gyda phawb.

Felly, mae cadwyni Markov yn dangos y tebygolrwydd o drawsnewidiadau rhwng digwyddiadau. Dyma enghraifft gyntefig o Wicipedia:

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python

Yma mae “E” ac “A” yn ddigwyddiadau, mae'r saethau yn drawsnewidiadau rhyngddynt (gan gynnwys y trawsnewid o ddigwyddiad i'r un peth), a phwysau'r saethau yw'r tebygolrwydd o drawsnewid (“graff cyfeiriedig pwysol”).

Beth wnaethoch chi ei ddefnyddio?

Hyfforddwyd y gylched gyda swyddogaeth Python safonol, a oedd yn cael ei bwydo â logiau gweithgaredd myfyrwyr. Lluniwyd y graff ar y matrics canlyniadol gan lyfrgell NetworkX.

Mae'r log yn edrych fel hyn:

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python

Ffeil csv yw hon sy'n cynnwys tabl o dair colofn: ID myfyriwr, enw'r digwyddiad, amser pan ddigwyddodd. Mae'r tri maes hyn yn ddigon i olrhain symudiadau'r cleient, adeiladu map ac yn y pen draw cael cadwyn Markov.

Mae'r llyfrgell yn dychwelyd y graffiau lluniedig mewn fformat .dot neu .gexf. I ddelweddu'r cyntaf, gallwch ddefnyddio'r pecyn Graphviz rhad ac am ddim (offeryn gvedit), buom yn gweithio gyda .gexf a Gephi, hefyd yn rhad ac am ddim.

Nesaf hoffwn roi dwy enghraifft o ddefnyddio cadwyni Markov, a oedd yn caniatáu inni edrych o'r newydd ar ein nodau, prosesau addysgol, ac ecosystem Skyeng ei hun. Wel, trwsio'r bygiau.

Achos cyntaf: cais symudol

I ddechrau, fe wnaethom archwilio taith y myfyriwr trwy ein cynnyrch mwyaf poblogaidd - y cwrs Cyffredinol. Ar y foment honno, roeddwn i'n gweithio yn adran blant Skyeng ac roedden ni eisiau gweld pa mor effeithiol oedd y rhaglen symudol yn gweithio gyda'n cynulleidfa blant.

Gan gymryd y logiau a'u rhedeg trwy'r sgript, cefais rywbeth fel hyn:

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python

Y nod cychwyn yw Start General, ac ar y gwaelod mae tri nod allbwn: “syrthiodd y myfyriwr i gysgu,” newidiodd y cwrs, a gorffennodd y cwrs.

  • Syrthiodd i gysgu, “Syrth i gysgu” - mae hyn yn golygu nad yw bellach yn cymryd dosbarthiadau, mae'n debyg iddo syrthio i ffwrdd. Rydyn ni'n optimistaidd yn galw'r cyflwr hwn yn “gysgu”, oherwydd ... mewn theori, mae'n dal i gael y cyfle i barhau â'i astudiaethau. Canlyniad gwaethaf i ni.
  • Gollwng cadfridog, Wedi newid cwrs - newid o Gadfridog i rywbeth arall a mynd ar goll ar gyfer ein cadwyn Markov.
  • Cwrs gorffenedig, Gorffen y cwrs - cyflwr delfrydol, mae'r person wedi cwblhau 80% o'r gwersi (nid oes angen pob gwers).

Mae mynd i mewn i'r nod dosbarth llwyddiannus yn golygu cwblhau'r wers ar ein platfform yn llwyddiannus gyda'r athro. Mae’n cofnodi cynnydd ar hyd y cwrs a’r ymagwedd at y canlyniad dymunol - “Wedi cwblhau’r cwrs.” Mae'n bwysig i ni fod myfyrwyr yn mynychu cymaint â phosibl.

I gael casgliadau meintiol mwy cywir ar gyfer y cymhwysiad symudol (nôd sesiwn app), fe wnaethom adeiladu cadwyni ar wahân ar gyfer pob un o'r nodau terfynol ac yna cymharu'r pwysau ymyl mewn pâr:

  • o'r sesiwn app yn ôl iddo;
  • o sesiwn ap i ddosbarth llwyddiannus;
  • o ddosbarth llwyddiannus i sesiwn ap.

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python
Ar y chwith mae myfyrwyr a gwblhaodd y cwrs, ar y dde mae'r rhai a "syrthiodd i gysgu"

Mae'r tair ymyl hyn yn dangos y berthynas rhwng llwyddiant myfyriwr a'u defnydd o'r ap symudol. Roeddem yn disgwyl gweld y byddai gan fyfyrwyr a gwblhaodd y cwrs gysylltiad cryfach â'r cais na myfyrwyr sy'n syrthio i gysgu. Fodd bynnag, mewn gwirionedd cawsom y canlyniadau yn union i'r gwrthwyneb:

  • gwnaethom yn siŵr bod gwahanol grwpiau o ddefnyddwyr yn rhyngweithio â'r rhaglen symudol yn wahanol;
  • mae myfyrwyr llwyddiannus yn defnyddio'r rhaglen symudol yn llai dwys;
  • mae myfyrwyr sy'n cwympo i gysgu yn defnyddio'r rhaglen symudol yn fwy gweithredol.

Mae hyn yn golygu bod myfyrwyr sy'n cwympo i gysgu yn dechrau treulio mwy a mwy o amser yn y cymhwysiad symudol ac, yn y diwedd, yn aros ynddo am byth.

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python

Ar y dechrau cawsom ein synnu, ond ar ôl meddwl am y peth, sylweddolom fod hyn yn effaith hollol naturiol. Ar un adeg, astudiais Ffrangeg ar fy mhen fy hun gan ddefnyddio dau declyn: cymhwysiad symudol a darlithoedd gramadeg ar YouTube. Ar y dechrau, rhannais yr amser rhyngddynt mewn cymhareb o 50 i 50. Ond mae'r cais yn fwy o hwyl, mae gamification, mae popeth yn syml, yn gyflym ac yn glir, ond yn y ddarlith mae'n rhaid i chi ymchwilio iddo, ysgrifennwch rywbeth i lawr , ymarfer mewn llyfr nodiadau. Yn raddol, dechreuais dreulio mwy o amser ar fy ffôn clyfar, nes i'w gyfran dyfu i 100%: os treuliwch dair awr arno, rydych chi'n creu teimlad ffug o waith gorffenedig, ac oherwydd hynny nid oes gennych unrhyw awydd i fynd i wrando ar unrhyw beth. .

Ond sut y gall hyn fod? Wedi'r cyfan, fe wnaethon ni greu cymhwysiad symudol yn arbennig, wedi ei adeiladu i mewn iddo gromlin Ebbinghaus, gamified ei, ei gwneud yn ddeniadol fel y byddai pobl yn treulio amser ynddo, ond mae'n troi allan mai dim ond tynnu eu sylw? Mewn gwirionedd, y rheswm yw bod tîm y cais symudol wedi ymdopi â'i dasgau yn rhy dda, ac o ganlyniad daeth yn gynnyrch cŵl, hunangynhaliol a dechreuodd ddisgyn allan o'n hecosystem.

O ganlyniad i'r ymchwil, daeth yn amlwg bod angen newid y rhaglen symudol rywsut fel y byddai'n tynnu sylw llai oddi wrth y prif gwrs astudio. Ac yn blant ac oedolion. Mae'r gwaith hwn yn mynd rhagddo ar hyn o bryd.

Ail achos: chwilod ar fwrdd

Mae Onboarding yn weithdrefn ychwanegol ddewisol wrth gofrestru myfyriwr newydd, gan ddileu problemau technegol posibl yn y dyfodol. Mae'r senario sylfaenol yn rhagdybio bod person wedi cofrestru ar y dudalen lanio, wedi cael mynediad i'w gyfrif personol, yn cael ei gysylltu ac yn cael gwers ragarweiniol. Ar yr un pryd, rydym yn nodi canran fawr o anawsterau technegol yn ystod y wers ragarweiniol: nid yw'r fersiwn anghywir o'r porwr, y meicroffon na'r sain yn gweithio, ni all yr athro awgrymu datrysiad ar unwaith, ac mae hyn i gyd yn arbennig o anodd pan ddaw. i blant. Felly, rydym wedi datblygu cymhwysiad ychwanegol yn eich cyfrif personol, lle gallwch chi gwblhau pedwar cam syml: gwiriwch eich porwr, camera, meicroffon a chadarnhewch y bydd rhieni gerllaw yn ystod y wers ragarweiniol (wedi'r cyfan, nhw yw'r rhai sy'n talu am addysg eu plant).

Roedd yr ychydig dudalennau hyn yn dangos twndis fel hyn:

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python
1: bloc cychwyn gyda thri ffurflen mewngofnodi a chyfrinair ychydig yn wahanol (yn dibynnu ar y cleient).
2: blwch ticio yn cytuno i'r weithdrefn onboarding ychwanegol.
2.1-2.3: Gwiriwch am bresenoldeb rhieni, fersiwn Chrome a sain.
3: bloc terfynol.

Mae'n edrych yn naturiol iawn: yn y ddau gam cyntaf, mae'r rhan fwyaf o'r ymwelwyr yn gadael, gan sylweddoli bod rhywbeth i'w lenwi, ei wirio, ond nid oes amser. Os yw'r cleient wedi cyrraedd y trydydd cam, yna bydd bron yn sicr yn cyrraedd y rownd derfynol. Nid oes un rheswm dros amau ​​dim ar y twndis.

Serch hynny, fe benderfynon ni ddadansoddi ein harfyrddio nid ar dwndis un-dimensiwn clasurol, ond gan ddefnyddio cadwyn Markov. Fe wnaethom droi ychydig mwy o ddigwyddiadau ymlaen, rhedeg y sgript a chael hwn:

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python

Yn yr anhrefn hwn, dim ond un peth y gellir ei ddeall yn glir: aeth rhywbeth o'i le. Mae'r broses ymuno yn llinol, mae hyn yn gynhenid ​​yn y dyluniad, ni ddylai fod gwe o gysylltiadau o'r fath ynddo. Ac yma mae'n amlwg ar unwaith bod y defnyddiwr yn cael ei daflu rhwng camau, na ddylai fod unrhyw drawsnewidiadau o gwbl rhyngddynt.

Sut rydym yn defnyddio cadwyni Markov i werthuso datrysiadau a dod o hyd i fygiau. Gyda sgript Python

Gall fod dau reswm am y llun rhyfedd hwn:

  • sleifio i mewn i'r gronfa ddata log;
  • Mae yna gamgymeriadau yn y cynnyrch ei hun - onboarding.

Mae'r rheswm cyntaf yn fwyaf tebygol o fod yn wir, ond mae ei brofi yn eithaf llafurddwys, ac ni fydd cywiro'r logiau yn helpu i wella'r UX. Ond gyda'r ail un, os yw'n bodoli, roedd yn rhaid gwneud rhywbeth ar frys. Felly, aethom i edrych ar y nodau, nodi ymylon na ddylai fodoli, ac edrych am y rhesymau pam eu bod yn digwydd. Gwelsom fod rhai defnyddwyr yn mynd yn sownd ac yn cerdded mewn cylchoedd, syrthiodd eraill allan o'r canol i'r dechrau, ac ni allai eraill, mewn egwyddor, fynd allan o'r ddau gam cyntaf. Fe wnaethon ni drosglwyddo'r data i QA - ac do, daeth yn amlwg bod digon o fygiau wrth fwrdd: mae hwn yn sgil-gynnyrch o'r fath, yn dipyn o fagwr, ni chafodd ei brofi'n ddigon dwfn, oherwydd... Nid oeddem yn disgwyl unrhyw broblemau. Nawr mae'r broses gofnodi gyfan wedi newid.

Dangosodd y stori hon gymhwysiad annisgwyl o gadwyni Markov i ni ym maes SA.

Rhowch gynnig arni'ch hun!

Postiais fy un i Sgript Python ar gyfer hyfforddi cadwyni Markov yn y parth cyhoeddus - defnyddiwch ef ar gyfer eich iechyd. Dogfennaeth ar GitHub, gellir gofyn cwestiynau yma, byddaf yn ceisio ateb popeth.

Wel, dolenni defnyddiol: Llyfrgell NetworkX, Delweddydd Graphviz. Ac yma mae erthygl ar Habré am gadwyni Markov. Mae'r graffiau yn yr erthygl yn cael eu gwneud gan ddefnyddio Gephi.

Ffynhonnell: hab.com

Ychwanegu sylw