چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون

برای ما مهم است که بفهمیم در طول آموزش چه اتفاقی برای دانش‌آموزانمان می‌افتد و این رویدادها چگونه بر نتیجه تأثیر می‌گذارند، بنابراین ما یک نقشه سفر مشتری - نقشه‌ای از تجربه مشتری می‌سازیم. از این گذشته، فرآیند یادگیری چیزی پیوسته و یکپارچه نیست، بلکه زنجیره ای از رویدادها و اقدامات به هم پیوسته دانش آموز است و این اقدامات می تواند در بین دانش آموزان مختلف بسیار متفاوت باشد. حالا درسش را تمام کرده است: بعدش چه خواهد کرد؟ آیا به مشق شب می رسد؟ آیا یک اپلیکیشن موبایل راه اندازی خواهد کرد؟ آیا او تغییر مسیر خواهد داد، درخواست تغییر معلمان را خواهد داد؟ آیا مستقیماً به درس بعدی می روید؟ یا فقط ناامید خواهد رفت؟ آیا می توان با تجزیه و تحلیل این نقشه، الگوهایی را شناسایی کرد که منجر به اتمام موفقیت آمیز دوره یا برعکس، "ترک تحصیل" دانش آموز می شود؟

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون

به طور معمول، ابزارهای تخصصی و بسیار گران قیمت منبع بسته برای ساخت CJM استفاده می شود. اما ما می‌خواستیم به چیزی ساده بپردازیم که به حداقل تلاش و در صورت امکان منبع باز نیاز دارد. بنابراین ایده استفاده از زنجیر مارکوف به وجود آمد - و ما موفق شدیم. ما نقشه‌ای ساختیم، داده‌های مربوط به رفتار دانش‌آموز را در قالب یک نمودار تفسیر کردیم، پاسخ‌های کاملاً غیر واضح به مسائل تجاری جهانی را دیدیم و حتی باگ‌های عمیقاً پنهان را پیدا کردیم. ما همه این کارها را با استفاده از راه حل های متن باز اسکریپت پایتون انجام دادیم. در این مقاله من در مورد دو مورد با آن نتایج بسیار غیر واضح صحبت خواهم کرد و اسکریپت را با همه به اشتراک خواهم گذاشت.

بنابراین، زنجیره های مارکوف احتمال انتقال بین رویدادها را نشان می دهد. در اینجا یک مثال ابتدایی از ویکی پدیا آورده شده است:

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون

در اینجا "E" و "A" رویدادها هستند، فلش ها انتقال بین آنها هستند (از جمله انتقال از یک رویداد به همان)، و وزن فلش ها احتمال انتقال هستند ("گراف جهت دار وزنی").

از چی استفاده کردی؟

مدار با عملکرد استاندارد پایتون آموزش داده شد که با گزارش‌های فعالیت دانش‌آموز تغذیه می‌شد. نمودار ماتریس به دست آمده توسط کتابخانه NetworkX ساخته شده است.

گزارش به صورت زیر است:

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون

این یک فایل csv است که شامل یک جدول از سه ستون است: شناسه دانشجو، نام رویداد، زمان وقوع آن. این سه فیلد برای ردیابی حرکات مشتری، ساختن یک نقشه و در نهایت یک زنجیره مارکوف کافی است.

کتابخانه نمودارهای ساخته شده را در قالب .dot یا .gexf برمی گرداند. برای تجسم اولی، می توانید از بسته رایگان Graphviz (ابزار gvedit) استفاده کنید، ما با .gexf و Gephi نیز رایگان کار کردیم.

در ادامه می‌خواهم دو مثال از استفاده از زنجیره‌های مارکوف ارائه کنم که به ما امکان می‌دهد نگاهی تازه به اهداف، فرآیندهای آموزشی و خود اکوسیستم Skyeng بیندازیم. خوب، اشکالات را برطرف کنید.

مورد اول: اپلیکیشن موبایل

برای شروع، ما سفر دانشجویی را از طریق محبوب ترین محصولمان - دوره عمومی - بررسی کردیم. در آن لحظه من در بخش کودکان Skyeng کار می کردم و می خواستیم ببینیم که اپلیکیشن موبایل چقدر با مخاطبان کودکان ما کار می کند.

با گرفتن لاگ ها و اجرای آنها در اسکریپت، چیزی شبیه به این دریافت کردم:

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون

گره شروع، شروع عمومی است، و در پایین سه گره خروجی وجود دارد: دانش آموز "خوابش برد"، درس را تغییر داد و دوره را به پایان رساند.

  • به خواب رفت، "به خواب رفت" - این بدان معنی است که او دیگر کلاس نمی گیرد، به احتمال زیاد او از کار افتاده است. ما خوش بینانه این حالت را "خواب" می نامیم، زیرا ... از نظر تئوری، او هنوز فرصت ادامه تحصیل دارد. بدترین نتیجه برای ما
  • ژنرال حذف شد، تغییر مسیر - از ژنرال به چیز دیگری تغییر کرد و برای زنجیره مارکوف ما گم شد.
  • دوره تمام شده، دوره را به پایان رساند - شرایط ایده آل، فرد 80 درصد دروس را تکمیل کرده است (همه درس ها لازم نیست).

ورود به گره کلاس موفق به معنای تکمیل موفقیت آمیز درس در پلت فرم ما همراه با معلم است. این پیشرفت در طول دوره و رویکرد به نتیجه مورد نظر - "تکمیل دوره" را ثبت می کند. حضور دانش آموزان تا حد امکان برای ما مهم است.

برای به دست آوردن نتایج کمی دقیق تر برای برنامه تلفن همراه (گره جلسه برنامه)، ما زنجیره های جداگانه ای برای هر یک از گره های نهایی ساختیم و سپس وزن لبه ها را به صورت زوجی مقایسه کردیم:

  • از جلسه برنامه به آن بازگشت؛
  • از جلسه برنامه تا کلاس موفق؛
  • از کلاس موفق تا جلسه برنامه.

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون
در سمت چپ دانش‌آموزانی هستند که دوره را به پایان رسانده‌اند، در سمت راست کسانی هستند که "خوابشان برد"

این سه لبه رابطه بین موفقیت دانش آموز و استفاده آن ها از اپلیکیشن موبایل را نشان می دهد. ما انتظار داشتیم ببینیم دانش‌آموزانی که دوره را به پایان رسانده‌اند نسبت به دانش‌آموزانی که به خواب رفته‌اند ارتباط قوی‌تری با برنامه کاربردی خواهند داشت. با این حال، در واقعیت دقیقاً نتایج معکوس گرفتیم:

  • ما مطمئن شدیم که گروه های مختلف کاربران با برنامه تلفن همراه به طور متفاوتی تعامل دارند.
  • دانش آموزان موفق با شدت کمتری از اپلیکیشن موبایل استفاده می کنند.
  • دانش‌آموزانی که به خواب می‌روند فعال‌تر از اپلیکیشن موبایل استفاده می‌کنند.

این بدان معنی است که دانش آموزانی که به خواب می روند شروع به گذراندن زمان بیشتر و بیشتری در برنامه تلفن همراه می کنند و در نهایت برای همیشه در آن باقی می مانند.

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون

ابتدا تعجب کردیم اما پس از فکر کردن متوجه شدیم که این یک اثر کاملا طبیعی است. زمانی، با استفاده از دو ابزار، زبان فرانسه را به تنهایی مطالعه می‌کردم: یک اپلیکیشن موبایل و سخنرانی‌های گرامر در یوتیوب. در ابتدا، زمان را بین آنها به نسبت 50 به 50 تقسیم کردم. اما برنامه سرگرم کننده تر است، گیمیفیکیشن وجود دارد، همه چیز ساده، سریع و واضح است، اما در سخنرانی شما باید در آن عمیق شوید، چیزی بنویسید ، در یک دفترچه تمرین کنید. به تدریج، من شروع به صرف زمان بیشتری برای تلفن هوشمند خود کردم، تا زمانی که سهم آن به 100٪ افزایش یافت: اگر سه ساعت را روی آن صرف کنید، احساس کاذبی از انجام کار ایجاد می کنید، به همین دلیل تمایلی به رفتن و گوش دادن به چیزی ندارید. .

اما این چگونه امکان پذیر است؟ از این گذشته ، ما به طور خاص یک برنامه تلفن همراه ایجاد کردیم ، منحنی ابینگهاوس را در آن تعبیه کرده است، آن را گیمی کرد، آن را جذاب کرد تا مردم وقت خود را در آن صرف کنند، اما معلوم می شود که فقط حواس آنها را پرت می کند؟ در واقع، دلیل آن این است که تیم اپلیکیشن موبایل به خوبی با وظایف خود کنار آمد، در نتیجه به محصولی باحال و خودکفا تبدیل شد و شروع به خارج شدن از اکوسیستم ما کرد.

در نتیجه تحقیقات مشخص شد که اپلیکیشن موبایل باید به نحوی تغییر کند تا کمتر حواس خود را از درس اصلی مطالعه منحرف کند. و هم کودکان و هم بزرگسالان. این کار در حال حاضر در حال انجام است.

مورد دوم: اشکالات ورود

هنگام ثبت نام دانش آموز جدید، ورود به سیستم یک روش اضافی اختیاری است که مشکلات فنی احتمالی در آینده را از بین می برد. سناریوی اصلی فرض می کند که شخصی در صفحه فرود ثبت نام کرده است، به حساب شخصی خود دسترسی پیدا کرده است، با او تماس گرفته می شود و یک درس مقدماتی داده می شود. در عین حال، درصد زیادی از مشکلات فنی را در طول درس مقدماتی متذکر می شویم: نسخه اشتباه مرورگر، میکروفون یا صدا کار نمی کند، معلم نمی تواند فوراً راه حلی را پیشنهاد کند، و همه اینها به ویژه زمانی که می آید دشوار است. به کودکان بنابراین، ما یک برنامه اضافی در حساب شخصی شما ایجاد کرده ایم، که در آن می توانید چهار مرحله ساده را انجام دهید: مرورگر، دوربین، میکروفون خود را بررسی کنید و تأیید کنید که والدین در طول درس مقدماتی در نزدیکی شما هستند (در نهایت آنها هستند که هزینه را پرداخت می کنند. تحصیل فرزندانشان).

این چند صفحه ورودی قیفی مانند این را نشان می‌دادند:

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون
1: بلوک شروع با سه فرم ورود و ورود رمز عبور کمی متفاوت (بسته به مشتری).
2: کادر تأیید موافقت با روش اضافی ورود.
2.1-2.3: حضور والدین، نسخه Chrome و صدا را بررسی کنید.
3: بلوک نهایی

خیلی طبیعی به نظر می رسد: در دو مرحله اول، اکثر بازدیدکنندگان با درک اینکه چیزی برای پر کردن، بررسی وجود دارد، ترک می کنند، اما زمان وجود ندارد. اگر مشتری به مرحله سوم رسیده باشد، تقریباً به طور قطع به فینال خواهد رسید. هیچ دلیل واحدی برای مشکوک شدن به چیزی در قیف وجود ندارد.

با این وجود، ما تصمیم گرفتیم که پردازنده خود را نه بر روی یک قیف کلاسیک تک بعدی، بلکه با استفاده از یک زنجیره مارکوف تجزیه و تحلیل کنیم. ما کمی بیشتر رویدادها را روشن کردیم، اسکریپت را اجرا کردیم و این را دریافت کردیم:

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون

در این هرج و مرج، تنها یک چیز را می توان به وضوح درک کرد: اشتباهی رخ داد. فرآیند سوار شدن خطی است، این در طراحی ذاتی است، نباید چنین شبکه ای از اتصالات در آن وجود داشته باشد. و در اینجا بلافاصله مشخص می شود که کاربر بین مراحلی پرتاب می شود که بین آنها اصلاً انتقالی وجود ندارد.

چگونه از زنجیره های مارکوف در ارزیابی راه حل ها و یافتن اشکالات استفاده می کنیم. با اسکریپت پایتون

ممکن است دو دلیل برای این تصویر عجیب وجود داشته باشد:

  • shoals به پایگاه داده ورود به سیستم نفوذ کردند.
  • اشتباهاتی در خود محصول وجود دارد - سوار شدن.

دلیل اول به احتمال زیاد درست است، اما آزمایش آن کاملاً کار فشرده است و اصلاح گزارش‌ها کمکی به بهبود UX نمی‌کند. اما با مورد دوم، اگر وجود داشته باشد، باید فوراً کاری انجام می شد. بنابراین، ما به سراغ گره‌ها رفتیم، لبه‌هایی را که نباید وجود داشته باشند را شناسایی کردیم و دلایل وقوع آنها را جستجو کردیم. دیدیم که برخی از کاربران گیر افتادند و دایره ای راه رفتند، برخی دیگر از وسط به ابتدا افتادند و برخی دیگر اصولاً نتوانستند از دو مرحله اول خارج شوند. ما داده ها را به QA منتقل کردیم - و بله، مشخص شد که اشکالات کافی در نصب وجود دارد: این یک محصول جانبی است، کمی عصا، به اندازه کافی عمیق آزمایش نشده است، زیرا ... انتظار مشکلی نداشتیم. اکنون کل روند ضبط تغییر کرده است.

این داستان کاربرد غیرمنتظره ای از زنجیره های مارکوف در زمینه QA را به ما نشان داد.

خودتان انرا آزمایش کنید!

منم پست کردم اسکریپت پایتون برای آموزش زنجیره های مارکوف در حوزه عمومی - از آن برای سلامتی خود استفاده کنید. اسناد در GitHub، سوالات را می توان در اینجا پرسید، من سعی خواهم کرد به همه چیز پاسخ دهم.

خب لینک های مفید: کتابخانه NetworkX, تصویرساز گرافویز. و اینجا مقاله ای در مورد Habré وجود دارد درباره زنجیر مارکوف نمودارهای موجود در مقاله با استفاده از آن ساخته شده اند جفی.

منبع: www.habr.com

اضافه کردن نظر