Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan

Trening davomida talabalarimiz bilan nima sodir bo'lishini va bu voqealar natijaga qanday ta'sir qilishini tushunish biz uchun muhim, shuning uchun biz Mijozlar sayohati xaritasini - mijozlar tajribasi xaritasini yaratamiz. Zero, o‘quv jarayoni uzluksiz va yaxlit narsa emas, u o‘quvchining o‘zaro bog‘langan hodisalari va harakatlari zanjiri bo‘lib, bu harakatlar turli o‘quvchilarda juda katta farq qilishi mumkin. Endi u darsini tugatdi: keyin nima qiladi? Uy vazifasiga ketadimi? U mobil ilovani ishga tushiradimi? U kursni o'zgartiradimi, o'qituvchilarni almashtirishni so'raymi? To'g'ridan-to'g'ri keyingi darsga o'tasizmi? Yoki u shunchaki hafsalasi pir bo'lib ketadimi? Ushbu xaritani tahlil qilib, kursni muvaffaqiyatli yakunlash yoki aksincha, talabaning "tarqatilishi" ga olib keladigan naqshlarni aniqlash mumkinmi?

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan

Odatda, CJM ni yaratish uchun maxsus, juda qimmat yopiq manba vositalaridan foydalaniladi. Ammo biz minimal kuch talab qiladigan va iloji bo'lsa, ochiq manbani talab qiladigan oddiy narsani o'ylab topmoqchi edik. Shunday qilib, Markov zanjirlaridan foydalanish g'oyasi paydo bo'ldi - va biz muvaffaqiyatga erishdik. Biz xarita yaratdik, talabalarning xatti-harakatlari haqidagi ma'lumotlarni grafik shaklida izohladik, global biznes muammolariga mutlaqo noaniq javoblarni ko'rdik va hatto chuqur yashirin xatolarni topdik. Bularning barchasini ochiq manba Python skript yechimlari yordamida qildik. Ushbu maqolada men juda aniq bo'lmagan natijalarga ega bo'lgan ikkita holat haqida gaplashaman va skriptni hamma bilan baham ko'raman.

Shunday qilib, Markov zanjirlari hodisalar orasidagi o'tish ehtimolini ko'rsatadi. Mana Vikipediyadan ibtidoiy misol:

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan

Bu erda "E" va "A" hodisalar, o'qlar ular orasidagi o'tishlar (shu jumladan bir hodisadan bir xil holatga o'tish) va o'qlarning og'irliklari o'tish ehtimoli ("vaznli yo'naltirilgan grafik").

Nima ishlatdingiz?

Sxema standart Python funksionalligi bilan o'qitildi, u talaba faoliyati jurnallari bilan ta'minlangan. Olingan matritsadagi grafik NetworkX kutubxonasi tomonidan tuzilgan.

Jurnal quyidagicha ko'rinadi:

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan

Bu uchta ustunli jadvalni o'z ichiga olgan csv fayl: talaba identifikatori, voqea nomi, sodir bo'lgan vaqt. Ushbu uchta maydon mijozning harakatlarini kuzatish, xaritani yaratish va oxir-oqibat Markov zanjirini olish uchun etarli.

Kutubxona tuzilgan grafiklarni .dot yoki .gexf formatida qaytaradi. Birinchisini tasavvur qilish uchun siz bepul Graphviz to'plamidan (gvedit vositasi) foydalanishingiz mumkin, biz .gexf va Gephi bilan ishlaganmiz, shuningdek, bepul.

Keyin men Markov zanjirlaridan foydalanishning ikkita misolini keltirmoqchiman, bu bizga maqsadlarimizga, ta'lim jarayonlariga va Skyeng ekotizimining o'ziga yangicha qarashga imkon berdi. Xo'sh, xatolarni tuzating.

Birinchi holat: mobil ilova

Boshlash uchun biz eng mashhur mahsulotimiz - Umumiy kurs orqali talabalar sayohatini o'rganib chiqdik. O'sha paytda men Skyeng bolalar bo'limida ishlayotgan edim va biz mobil ilovaning bolalar auditoriyasi bilan qanchalik samarali ishlashini ko'rmoqchi edik.

Jurnallarni olib, ularni skript orqali ishga tushirib, men shunday bir narsaga ega bo'ldim:

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan

Boshlang'ich tugun Boshlash Umumiy bo'lib, pastki qismida uchta chiqish tugunlari mavjud: talaba "uxlab qoldi", kursni o'zgartirdi va kursni tugatdi.

  • Uxlab qoldi, "Uxlab qoldi" - demak u endi darsga qatnashmayapti, ehtimol u yiqilib tushdi. Biz bu holatni optimistik tarzda “uyqu” deb ataymiz, chunki... nazariy jihatdan u hali ham o'qishni davom ettirish imkoniyatiga ega. Biz uchun eng yomon natija.
  • Generalni tashlab ketdi, kursni o'zgartirdi - generaldan boshqa narsaga o'tdi va Markov zanjirimiz uchun adashib qoldi.
  • Kursni tugatdi, Kursni tugatdi - ideal holat, odam darslarning 80% ni bajargan (barcha darslar shart emas).

Muvaffaqiyatli sinf tuguniga kirish o'qituvchi bilan birgalikda platformamizdagi darsni muvaffaqiyatli yakunlashni anglatadi. U kurs bo'yicha taraqqiyot va kerakli natijaga yaqinlashishni qayd etadi - "Kursni tugatdim." Biz uchun talabalar imkon qadar ko'proq qatnashishi muhim.

Mobil ilova (ilova seansi tuguni) uchun aniqroq miqdoriy xulosalar olish uchun biz yakuniy tugunlarning har biri uchun alohida zanjirlar qurdik va so‘ngra chekka og‘irliklarni juftlik bilan solishtirdik:

  • ilova seansidan unga qaytish;
  • ilova seansidan muvaffaqiyatli sinfgacha;
  • muvaffaqiyatli sinfdan ilova sessiyasiga.

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan
Chap tomonda kursni tugatgan talabalar, o'ng tomonda "uxlab qolganlar"

Ushbu uchta chekka talabaning muvaffaqiyati va mobil ilovadan foydalanishi o'rtasidagi bog'liqlikni ko'rsatadi. Kursni tamomlagan talabalar uxlab qolgan talabalarga qaraganda dastur bilan kuchliroq aloqaga ega bo'lishini kutgan edik. Biroq, aslida biz mutlaqo teskari natijalarga erishdik:

  • biz turli foydalanuvchilar guruhlari mobil ilova bilan boshqacha munosabatda bo'lishiga ishonch hosil qildik;
  • muvaffaqiyatli talabalar mobil ilovadan kamroq foydalanishadi;
  • uxlab qolgan talabalar mobil ilovadan faolroq foydalanishadi.

Bu shuni anglatadiki, uxlab qolgan talabalar mobil ilovada ko'proq vaqt o'tkazishni boshlaydilar va oxir-oqibat unda abadiy qoladilar.

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan

Avvaliga biz hayratda qoldik, lekin o'ylab ko'rganimizdan so'ng, bu mutlaqo tabiiy ta'sir ekanligini angladik. Bir vaqtlar men ikkita vositadan foydalangan holda frantsuz tilini o'rganganman: mobil ilova va YouTube'da grammatika ma'ruzalari. Avvaliga vaqtni ular o‘rtasida 50 dan 50 gacha bo‘lgan nisbatda bo‘ldim. Lekin ilova qiziqarliroq, o‘yinlashtirish bor, hamma narsa oddiy, tez va tushunarli, lekin ma’ruzada siz uni chuqur o‘rganishingiz, biror narsani yozib olishingiz kerak. , daftarda mashq qiling. Sekin-asta men smartfonimga ko'proq vaqt ajrata boshladim, uning ulushi 100% gacha o'sdi: agar siz unga uch soat vaqt sarflasangiz, siz tugallangan ish haqida yolg'on tuyg'uni yaratasiz, shuning uchun siz borib, hech narsa tinglashni xohlamaysiz. .

Lekin bu qanday bo'lishi mumkin? Axir, biz maxsus mobil ilovani yaratdik, unga Ebbinghaus egri chizig'i qurilgan, uni o'yinga aylantirdi, odamlar unda vaqt o'tkazishlari uchun uni jozibali qildi, lekin bu ularni faqat chalg'itadimi? Aslida, sabab mobil ilovalar jamoasi o'z vazifalarini juda yaxshi bajardi, natijada u ajoyib, o'zini o'zi etarli mahsulotga aylandi va ekotizimimizdan chiqib keta boshladi.

Tadqiqotlar natijasida mobil ilovani asosiy o‘quv kursidan chalg‘itmasligi uchun qandaydir tarzda o‘zgartirish kerakligi ma’lum bo‘ldi. Va ham bolalar, ham kattalar. Hozirda bu ish olib borilmoqda.

Ikkinchi holat: ishga tushirish xatolari

Onboarding yangi talabani ro'yxatdan o'tkazishda ixtiyoriy qo'shimcha protsedura bo'lib, kelajakda yuzaga kelishi mumkin bo'lgan texnik muammolarni bartaraf etadi. Asosiy stsenariy, odam ochilish sahifasida ro'yxatdan o'tgan, shaxsiy hisobiga kirish huquqiga ega bo'lgan, bog'langan va kirish darsi berilgan deb taxmin qiladi. Shu bilan birga, biz kirish darsida texnik qiyinchiliklarning katta qismini qayd etamiz: brauzerning noto'g'ri versiyasi, mikrofon yoki ovoz ishlamayapti, o'qituvchi darhol yechim taklif qila olmaydi va bularning barchasi ayniqsa qiyin bo'ladi. bolalarga. Shuning uchun biz sizning shaxsiy hisobingizda qo'shimcha dastur ishlab chiqdik, unda siz to'rtta oddiy qadamni bajarishingiz mumkin: brauzeringizni, kamerangizni, mikrofoningizni tekshiring va kirish darsida ota-onalar yaqinda bo'lishini tasdiqlang (oxir-oqibat, ular pul to'laydilar. ularning farzandlarining ta'limi).

Ushbu bir nechta ishga tushirish sahifalarida shunday huni ko'rsatilgan:

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan
1: uchta biroz farqli (mijozga qarab) login va parolni kiritish shakllari bilan boshlang'ich blok.
2: qo'shimcha ishga tushirish tartibiga rozilik bildiruvchi katakcha.
2.1-2.3: Ota-ona borligini, Chrome versiyasi va ovozni tekshiring.
3: yakuniy blok.

Bu juda tabiiy ko'rinadi: dastlabki ikki bosqichda tashrif buyuruvchilarning ko'pchiligi to'ldirish, tekshirish kerak bo'lgan narsa borligini tushunib, ketishadi, lekin vaqt yo'q. Agar mijoz uchinchi bosqichga chiqqan bo'lsa, u deyarli finalga chiqadi. Hunida biror narsadan shubhalanish uchun bitta sabab yo'q.

Shunga qaramay, biz klassik bir o'lchovli huni bo'yicha emas, balki Markov zanjiri yordamida bortga kirishimizni tahlil qilishga qaror qildik. Biz yana bir oz tadbirlarni yoqdik, skriptni ishga tushirdik va buni oldik:

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan

Ushbu tartibsizlikda faqat bitta narsani aniq tushunish mumkin: nimadir noto'g'ri ketdi. Bortga kirish jarayoni chiziqli, bu dizaynga xosdir, unda bunday ulanishlar tarmog'i bo'lmasligi kerak. Va bu erda foydalanuvchi qadamlar orasiga tashlanayotgani darhol aniq bo'ladi, ular orasida hech qanday o'tish bo'lmasligi kerak.

Yechimlarni baholash va xatolarni topishda Markov zanjiridan qanday foydalanamiz. Python skripti bilan

Ushbu g'alati rasmning ikkita sababi bo'lishi mumkin:

  • shoals jurnallar bazasiga kirdi;
  • Mahsulotning o'zida - bortda xatolar mavjud.

Birinchi sabab, ehtimol, to'g'ri, lekin uni sinab ko'rish juda ko'p mehnat talab qiladi va jurnallarni tuzatish UXni yaxshilashga yordam bermaydi. Ammo ikkinchisi bilan, agar u mavjud bo'lsa, shoshilinch ravishda biror narsa qilish kerak edi. Shuning uchun biz tugunlarni ko'rib chiqishga, mavjud bo'lmasligi kerak bo'lgan qirralarni aniqlashga va ularning paydo bo'lish sabablarini izlashga bordik. Biz ba'zi foydalanuvchilar tiqilib qolgan va aylana bo'ylab yurishganini, boshqalari o'rtadan boshiga tushib qolganini, boshqalari esa, printsipial ravishda, dastlabki ikki qadamdan chiqa olmaganini ko'rdik. Biz ma'lumotlarni QA ga o'tkazdik - va ha, bortga kirishda xatolar etarli ekanligi ma'lum bo'ldi: bu juda qo'shimcha mahsulot, biroz qo'ltiq tayoqchasi, u etarlicha chuqur sinovdan o'tkazilmagan, chunki... Biz hech qanday muammo kutmagan edik. Endi butun yozish jarayoni o'zgardi.

Ushbu hikoya bizga QA sohasida Markov zanjirlarining kutilmagan qo'llanilishini ko'rsatdi.

O'zingiz sinab ko'ring!

Men o'zimni joylashtirdim Markov zanjirlarini o'rgatish uchun Python skripti jamoat mulkida - sog'ligingiz uchun foydalaning. GitHub-dagi hujjatlar, bu erda savollar berilishi mumkin, men hamma narsaga javob berishga harakat qilaman.

Xo'sh, foydali havolalar: NetworkX kutubxonasi, Graphviz vizualizator. Va bu erda Habre haqida maqola bor Markov zanjirlari haqida. Maqoladagi grafiklar yordamida tuzilgan Gefi.

Manba: www.habr.com

a Izoh qo'shish