Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə

Təlim zamanı tələbələrimizə nə baş verdiyini və bu hadisələrin nəticəyə necə təsir etdiyini anlamaq bizim üçün vacibdir, ona görə də biz Müştəri Səyahət Xəritəsini - müştəri təcrübəsi xəritəsini qururuq. Axı təlim prosesi davamlı və ayrılmaz bir şey deyil, bu, şagirdin bir-biri ilə əlaqəli hadisələr və hərəkətlər zənciridir və bu hərəkətlər müxtəlif tələbələr arasında çox fərqli ola bilər. İndi o, dərsini başa vurub: bundan sonra nə edəcək? Ev tapşırığına gedəcəkmi? Mobil tətbiqetməni işə salacaqmı? Kursunu dəyişəcək, müəllimləri dəyişdirməyi xahiş edəcək? Növbəti dərsə birbaşa keçəcəksiniz? Yoxsa məyus halda ayrılacaq? Bu xəritəni təhlil etməklə kursu uğurla başa vurmağa və ya əksinə, tələbənin “tanrı”sına səbəb olan nümunələri müəyyən etmək mümkündürmü?

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə

Tipik olaraq, CJM qurmaq üçün ixtisaslaşmış, çox bahalı qapalı mənbə alətləri istifadə olunur. Ancaq biz sadə, minimal səy tələb edən və mümkünsə açıq mənbə ilə çıxış etmək istədik. Beləliklə, Markov zəncirlərindən istifadə etmək fikri ortaya çıxdı - və biz buna nail olduq. Biz bir xəritə qurduq, tələbə davranışı haqqında məlumatları qrafik şəklində şərh etdik, qlobal biznes məsələlərinə tamamilə qeyri-aşkar cavablar gördük və hətta dərindən gizlədilmiş səhvlər tapdıq. Bütün bunları açıq mənbəli Python skript həllərindən istifadə edərək etdik. Bu yazıda mən çox qeyri-aşkar nəticələri olan iki hadisə haqqında danışacağam və ssenarini hər kəslə paylaşacağam.

Beləliklə, Markov zəncirləri hadisələr arasında keçid ehtimalını göstərir. Vikipediyadan primitiv bir nümunə:

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə

Burada “E” və “A” hadisələrdir, oxlar onlar arasındakı keçidlərdir (o cümlədən hadisədən eyni hadisəyə keçid), oxların çəkiləri isə keçid ehtimalıdır (“çəkili istiqamətləndirilmiş qrafik”).

Nə istifadə etdin?

Dövrə tələbə fəaliyyəti qeydləri ilə qidalanan standart Python funksionallığı ilə öyrədildi. Nəticədə alınan matris üzrə qrafik NetworkX kitabxanası tərəfindən qurulmuşdur.

Günlük belə görünür:

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə

Bu, üç sütundan ibarət cədvəldən ibarət csv faylıdır: tələbə identifikatoru, hadisənin adı, baş verdiyi vaxt. Bu üç sahə müştərinin hərəkətlərini izləmək, xəritə yaratmaq və nəticədə Markov zəncirini əldə etmək üçün kifayətdir.

Kitabxana qurulmuş qrafikləri .dot və ya .gexf formatında qaytarır. Birincisini vizuallaşdırmaq üçün pulsuz Graphviz paketindən (gvedit aləti) istifadə edə bilərsiniz, biz .gexf və Gephi ilə işləmişik, həm də pulsuzdur.

Sonra Markov zəncirlərindən istifadə ilə bağlı iki nümunə vermək istərdim ki, bu da bizə məqsədlərimizə, təhsil proseslərinə və Skyeng ekosisteminin özünə yeni nəzər salmağa imkan verdi. Yaxşı, səhvləri düzəldin.

Birinci hal: mobil proqram

Başlamaq üçün biz ən populyar məhsulumuz olan Ümumi kurs vasitəsilə tələbə səyahətini araşdırdıq. Həmin an mən Skyeng-in uşaq şöbəsində işləyirdim və biz mobil tətbiqin uşaq auditoriyası ilə nə dərəcədə effektiv işlədiyini görmək istəyirdik.

Günlükləri götürüb skriptdə işlətməklə belə bir şey əldə etdim:

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə

Başlanğıc qovşağı Başlanğıc Ümumidir və aşağıda üç çıxış qovşağı var: tələbə “yuxuya getdi”, kursu dəyişdi və kursu bitirdi.

  • Yuxuya getdi, "Yuxuya getdi" - bu o deməkdir ki, o, artıq dərs almır, çox güman ki, yıxılıb. Biz bu vəziyyətə nikbinliklə “yuxuda” deyirik, çünki... nəzəri olaraq hələ də təhsilini davam etdirmək imkanı var. Bizim üçün ən pis nəticə.
  • General atıldı, kurs dəyişdi - Generaldan başqa bir şeyə keçdi və Markov zəncirimiz üçün itdi.
  • Kursu bitirdi, Kursu bitirdi - ideal veziyyetdedir, adam derslerin 80%-ni bitirib (bütün dərslər tələb olunmur).

Uğurlu sinif qovşağına daxil olmaq müəllimlə birlikdə platformamızda dərsi uğurla başa vurmaq deməkdir. Kurs boyunca irəliləyişi və istədiyiniz nəticəyə yaxınlaşmağı qeyd edir - "Kursu tamamladı." Tələbələrin mümkün qədər iştirak etməsi bizim üçün vacibdir.

Mobil proqram (tətbiq sessiyası qovşağı) üçün daha dəqiq kəmiyyət nəticələr əldə etmək üçün biz son qovşaqların hər biri üçün ayrıca zəncirlər qurduq və sonra kənar çəkiləri cüt-cüt müqayisə etdik:

  • proqram sessiyasından ona geri;
  • proqram sessiyasından uğurlu sinifə;
  • uğurlu sinifdən tətbiq sessiyasına qədər.

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə
Solda kursu bitirən tələbələr, sağda “yuxuya gedənlər”

Bu üç kənar tələbənin uğuru ilə onların mobil proqramdan istifadəsi arasındakı əlaqəni göstərir. Kursu bitirən tələbələrin yuxuya getmiş tələbələrə nisbətən tətbiqetmə ilə daha güclü əlaqə quracağını görəcəyimizi gözləyirdik. Ancaq reallıqda tam əks nəticələr əldə etdik:

  • müxtəlif istifadəçi qruplarının mobil proqramla fərqli şəkildə qarşılıqlı əlaqədə olmasına əmin olduq;
  • uğurlu tələbələr mobil proqramdan daha az intensiv istifadə edir;
  • yuxuya gedən tələbələr mobil proqramdan daha aktiv istifadə edirlər.

Bu o deməkdir ki, yuxuya gedən tələbələr mobil tətbiqdə getdikcə daha çox vaxt keçirməyə başlayır və sonda əbədi olaraq orada qalırlar.

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə

Əvvəlcə təəccübləndik, amma düşündükdən sonra bunun tamamilə təbii bir təsir olduğunu başa düşdük. Bir vaxtlar iki alətdən istifadə edərək fransız dilini tək başıma öyrəndim: mobil proqram və YouTube-da qrammatika mühazirələri. Əvvəlcə vaxtı 50 ilə 50 nisbətində böldüm.Amma tətbiq daha əyləncəlidir,oyunlaşdırma var,hər şey sadə,sürətli və aydındır,lakin mühazirədə onu dərindən araşdırmaq,nəyisə yazmaq lazımdır. , notebookda məşq edin. Tədricən, smartfonumda daha çox vaxt keçirməyə başladım, onun payı 100% -ə çatana qədər: ona üç saat sərf etsəniz, tamamlanmış işin saxta hissini yaradırsınız, ona görə gedib heç nəyə qulaq asmaq istəmirsiniz. .

Amma bu necə ola bilər? Axı biz xüsusi olaraq mobil proqram yaratdıq, onun içinə Ebbinghaus əyrisi qurulmuşdur, onu oyunlaşdırdı, cazibədar etdi ki, insanlar orada vaxt keçirsinlər, amma belə çıxır ki, bu, onları yalnız yayındırır? Əslində səbəb odur ki, mobil proqramlar komandası üzərinə düşən vəzifələrin öhdəsindən çox yaxşı gəlib, nəticədə o, sərin, özünü təmin edən məhsula çevrilib və ekosistemimizdən düşməyə başlayıb.

Araşdırmalar nəticəsində məlum oldu ki, mobil tətbiqi əsas dərsdən daha az yayındırmaq üçün onun hansısa formada dəyişdirilməsinə ehtiyac var. Həm uşaqlar, həm də böyüklər. Hazırda bu iş davam etdirilir.

İkinci hal: onboarding səhvləri

Onboarding, gələcəkdə potensial texniki problemləri aradan qaldıran yeni tələbənin qeydiyyatı zamanı əlavə bir prosedurdur. Əsas ssenari bir insanın açılış səhifəsində qeydiyyatdan keçdiyini, şəxsi hesabına giriş əldə etdiyini, əlaqə saxladığını və giriş dərsi verildiyini nəzərdə tutur. Eyni zamanda, giriş dərsi zamanı texniki çətinliklərin böyük bir hissəsini qeyd edirik: brauzerin səhv versiyası, mikrofon və ya səs işləmir, müəllim dərhal bir həll təklif edə bilməz və bütün bunlar gəldikdə xüsusilə çətindir. uşaqlara. Buna görə də, şəxsi hesabınızda dörd sadə addımı yerinə yetirə biləcəyiniz əlavə bir proqram hazırladıq: brauzerinizi, kameranızı, mikrofonunuzu yoxlayın və giriş dərsi zamanı valideynlərin yaxınlıqda olacağını təsdiqləyin (hər şeydən sonra ödəniş edənlər onlardır. uşaqlarının təhsili).

Bu bir neçə onboarding səhifəsi belə bir huni göstərdi:

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə
1: üç bir qədər fərqli (müştəridən asılı olaraq) giriş və parol giriş forması ilə başlanğıc bloku.
2: əlavə işə qəbul proseduru ilə razılaşan onay qutusu.
2.1-2.3: Valideyn varlığını, Chrome versiyasını və səsi yoxlayın.
3: son blok.

Bu, çox təbii görünür: ilk iki addımda ziyarətçilərin çoxu, doldurmaq, yoxlamaq üçün bir şeyin olduğunu başa düşərək, tərk edirlər, lakin vaxt yoxdur. Müştəri üçüncü pilləyə çatıbsa, demək olar ki, finala yüksələcək. Hunidə bir şeydən şübhələnmək üçün tək bir səbəb yoxdur.

Buna baxmayaraq, biz klassik bir ölçülü hunidə deyil, Markov zəncirindən istifadə edərək, onboardingimizi təhlil etmək qərarına gəldik. Bir az daha hadisələri aktiv etdik, skripti işlətdik və bunu əldə etdik:

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə

Bu xaosda yalnız bir şeyi aydın başa düşmək olar: nəsə səhv getdi. Onboarding prosesi xəttidir, bu dizayna xasdır, onda belə bir əlaqə şəbəkəsi olmamalıdır. Və burada dərhal aydın olur ki, istifadəçi heç bir keçid olmamalı olan addımlar arasında atılır.

Həll yollarını qiymətləndirmək və səhvləri tapmaq üçün Markov zəncirlərindən necə istifadə edirik. Python skripti ilə

Bu qəribə mənzərənin iki səbəbi ola bilər:

  • sürülər log verilənlər bazasına daxil oldu;
  • Məhsulun özündə səhvlər var - onboarding.

Birinci səbəb çox güman ki, doğrudur, lakin onu sınaqdan keçirmək kifayət qədər əmək tələb edir və qeydləri düzəltmək UX-i yaxşılaşdırmağa kömək etməyəcək. Ancaq ikincisi ilə, əgər varsa, təcili olaraq nəsə etmək lazım idi. Buna görə də, qovşaqlara baxmağa, mövcud olmaması lazım olan kənarları müəyyən etməyə və onların meydana gəlməsinin səbəblərini axtarmağa getdik. Bəzi istifadəçilərin ilişib dairələrdə gəzdiyini, bəzilərinin ortadan başlanğıca düşdüklərini, digərləri isə prinsipcə ilk iki pillədən çıxa bilmədiklərini gördük. Biz məlumatları QA-ya köçürdük - və bəli, onboardingdə kifayət qədər səhvlər olduğu ortaya çıxdı: bu, belə bir əlavə məhsuldur, bir az baltadır, kifayət qədər dərin sınaqdan keçirilməmişdir, çünki... Heç bir problem gözləmirdik. İndi bütün qeyd prosesi dəyişib.

Bu hekayə bizə QA sahəsində Markov zəncirlərinin gözlənilməz tətbiqini göstərdi.

Özünüz sınayın!

Özümü yerləşdirdim Markov zəncirlərini öyrətmək üçün Python skripti ictimai sahədə - sağlamlığınız üçün istifadə edin. GitHub-da sənədlər, suallar burada verilə bilər, hər şeyə cavab verməyə çalışacağam.

Yaxşı, faydalı bağlantılar: NetworkX kitabxanası, Qraphviz vizualizatoru. Və burada Habré haqqında bir məqalə var Markov zəncirləri haqqında. Məqalədəki qrafiklər istifadə edərək hazırlanmışdır Gefi.

Mənbə: www.habr.com

Добавить комментарий