วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python

เป็นสิ่งสำคัญสำหรับเราที่จะต้องเข้าใจว่าเกิดอะไรขึ้นกับนักเรียนของเราในระหว่างการฝึกอบรม และเหตุการณ์เหล่านี้ส่งผลต่อผลลัพธ์อย่างไร ดังนั้นเราจึงสร้างแผนที่การเดินทางของลูกค้า - แผนที่ประสบการณ์ของลูกค้า ท้ายที่สุดแล้ว กระบวนการเรียนรู้ไม่ใช่สิ่งที่ต่อเนื่องและครบถ้วน แต่เป็นสายโซ่ของเหตุการณ์และการกระทำที่เชื่อมโยงถึงกันของนักเรียน และการกระทำเหล่านี้อาจแตกต่างกันอย่างมากในนักเรียนแต่ละคน ตอนนี้เขาเรียนจบบทเรียนแล้ว เขาจะทำอะไรต่อไป? มันจะไปทำการบ้านมั้ย? จะเปิดตัวแอพพลิเคชั่นบนมือถือหรือไม่? เขาจะเปลี่ยนวิชาขอเปลี่ยนครูไหม? คุณจะตรงไปยังบทเรียนถัดไปหรือไม่? หรือเขาจะปล่อยให้ผิดหวัง? เป็นไปได้ไหมโดยการวิเคราะห์แผนที่นี้ เพื่อระบุรูปแบบที่นำไปสู่การสำเร็จหลักสูตรหรือในทางกลับกัน ไปสู่การ "ออกกลางคัน" ของนักเรียน

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python

โดยทั่วไปแล้ว เครื่องมือโอเพนซอร์ซเฉพาะทางที่มีราคาแพงมากจะถูกนำมาใช้เพื่อสร้าง CJM แต่เราต้องการสร้างสิ่งที่เรียบง่าย ต้องใช้ความพยายามเพียงเล็กน้อย และหากเป็นไปได้ ก็อาจเป็นโอเพ่นซอร์ส จึงมีความคิดที่จะใช้โซ่มาร์คอฟ - และเราก็ประสบความสำเร็จ เราสร้างแผนที่ ตีความข้อมูลเกี่ยวกับพฤติกรรมของนักเรียนในรูปแบบกราฟ เห็นคำตอบที่ไม่ชัดเจนสำหรับปัญหาทางธุรกิจทั่วโลก และยังพบจุดบกพร่องที่ซ่อนอยู่อย่างลึกซึ้งอีกด้วย เราทำทั้งหมดนี้โดยใช้โซลูชันสคริปต์ Python แบบโอเพ่นซอร์ส ในบทความนี้ ผมจะพูดถึงสองกรณีที่ผลลัพธ์ที่ไม่ชัดเจนเหล่านั้น และแบ่งปันสคริปต์กับทุกคน

ดังนั้น Markov chains จึงแสดงความน่าจะเป็นของการเปลี่ยนแปลงระหว่างเหตุการณ์ นี่คือตัวอย่างดั้งเดิมจาก Wikipedia:

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python

โดยที่ "E" และ "A" คือเหตุการณ์ ลูกศรคือการเปลี่ยนผ่านระหว่างเหตุการณ์เหล่านั้น (รวมถึงการเปลี่ยนจากเหตุการณ์หนึ่งไปเป็นเหตุการณ์เดียวกัน) และน้ำหนักของลูกศรคือความน่าจะเป็นของการเปลี่ยนแปลง (“กราฟกำกับแบบถ่วงน้ำหนัก”)

คุณใช้อะไร?

วงจรนี้ได้รับการฝึกฝนด้วยฟังก์ชัน Python มาตรฐาน ซึ่งป้อนด้วยบันทึกกิจกรรมของนักเรียน กราฟบนเมทริกซ์ผลลัพธ์ถูกสร้างขึ้นโดยไลบรารี NetworkX

บันทึกมีลักษณะดังนี้:

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python

นี่คือไฟล์ CSV ที่มีตารางสามคอลัมน์ ได้แก่ รหัสนักศึกษา ชื่อของกิจกรรม เวลาที่เหตุการณ์เกิดขึ้น ฟิลด์ทั้งสามนี้เพียงพอที่จะติดตามความเคลื่อนไหวของลูกค้า สร้างแผนที่ และได้รับห่วงโซ่ Markov ในท้ายที่สุด

ไลบรารีส่งคืนกราฟที่สร้างขึ้นในรูปแบบ .dot หรือ .gexf หากต้องการเห็นภาพแบบแรก คุณสามารถใช้แพ็คเกจ Graphviz ฟรี (เครื่องมือ gvedit) ซึ่งเราทำงานร่วมกับ .gexf และ Gephi ได้ฟรีเช่นกัน

ต่อไป ฉันอยากจะยกตัวอย่างสองตัวอย่างของการใช้เครือ Markov ซึ่งช่วยให้เราได้พิจารณาเป้าหมาย กระบวนการศึกษา และระบบนิเวศของ Skyeng อีกครั้ง เอาล่ะแก้ไขข้อบกพร่อง

กรณีแรก: แอปพลิเคชันมือถือ

ขั้นแรก เราได้สำรวจเส้นทางของนักเรียนผ่านผลิตภัณฑ์ยอดนิยมของเรา นั่นก็คือหลักสูตรทั่วไป ในขณะนั้น ฉันทำงานในแผนกเด็กของ Skyeng และเราต้องการดูว่าแอปพลิเคชันบนมือถือทำงานร่วมกับผู้ชมที่เป็นเด็กของเราได้อย่างมีประสิทธิภาพเพียงใด

เมื่อนำบันทึกและเรียกใช้ผ่านสคริปต์ ฉันได้สิ่งนี้:

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python

โหนดเริ่มต้นคือเริ่มต้นทั่วไป และที่ด้านล่างสุดจะมีโหนดเอาต์พุตสามโหนด: นักเรียน "ผล็อยหลับไป" เปลี่ยนหลักสูตรและจบหลักสูตร

  • เผลอหลับไป "หลับไป" - หมายความว่าเขาไม่ได้เรียนหนังสืออีกต่อไป ส่วนใหญ่แล้วเขาจะล้มลง เราเรียกสภาวะนี้ในแง่ดีว่า "หลับ" เพราะ... ในทางทฤษฎีเขายังมีโอกาสศึกษาต่อ ผลลัพธ์ที่แย่ที่สุดสำหรับเรา
  • ทิ้งนายพล, เปลี่ยนหลักสูตร - เปลี่ยนจากนายพลเป็นอย่างอื่นและหลงทางสำหรับเครือมาร์คอฟของเรา
  • จบหลักสูตร จบหลักสูตร - สภาพในอุดมคติ บุคคลนั้นเรียนจบบทเรียนไปแล้ว 80% (ไม่จำเป็นต้องเรียนทุกบทเรียน)

การเข้าสู่โหนดชั้นเรียนที่ประสบความสำเร็จหมายถึงการสำเร็จบทเรียนบนแพลตฟอร์มของเราร่วมกับครูได้สำเร็จ บันทึกความคืบหน้าตลอดหลักสูตรและแนวทางสู่ผลลัพธ์ที่ต้องการ - "จบหลักสูตร" เป็นสิ่งสำคัญสำหรับเราที่นักเรียนเข้าร่วมให้มากที่สุด

เพื่อให้ได้ข้อสรุปเชิงปริมาณที่แม่นยำยิ่งขึ้นสำหรับแอปพลิเคชันบนมือถือ (โหนดเซสชันของแอป) เราได้สร้างเชนแยกกันสำหรับแต่ละโหนดสุดท้าย จากนั้นจึงเปรียบเทียบน้ำหนักของ Edge ตามคู่:

  • จากเซสชันของแอปกลับไป
  • จากเซสชันแอปไปจนถึงชั้นเรียนที่ประสบความสำเร็จ
  • จากชั้นเรียนที่ประสบความสำเร็จไปจนถึงเซสชันแอป

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python
ด้านซ้ายคือนักเรียนที่จบหลักสูตร ด้านขวาคือผู้ที่ “หลับไปแล้ว”

ข้อดีทั้งสามประการนี้แสดงความสัมพันธ์ระหว่างความสำเร็จของนักเรียนกับการใช้แอปบนอุปกรณ์เคลื่อนที่ เราคาดหวังว่านักเรียนที่จบหลักสูตรจะมีความเชื่อมโยงกับแอปพลิเคชันมากกว่านักเรียนที่เผลอหลับไป อย่างไรก็ตาม ในความเป็นจริงแล้วเราได้ผลลัพธ์ที่ตรงกันข้าม:

  • เราทำให้แน่ใจว่าผู้ใช้กลุ่มต่างๆ โต้ตอบกับแอปพลิเคชันมือถือแตกต่างกัน
  • นักเรียนที่ประสบความสำเร็จใช้แอปพลิเคชันบนมือถือน้อยลง
  • นักเรียนที่เผลอหลับใช้แอปพลิเคชันมือถือมากขึ้น

ซึ่งหมายความว่านักเรียนที่เผลอหลับจะเริ่มใช้เวลากับแอปพลิเคชันบนมือถือมากขึ้นเรื่อยๆ และสุดท้ายก็จะยังคงอยู่ในแอปพลิเคชันนั้นตลอดไป

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python

ในตอนแรกเราประหลาดใจ แต่หลังจากคิดถึงเรื่องนี้ เราก็ตระหนักว่านี่เป็นผลกระทบที่เป็นธรรมชาติโดยสมบูรณ์ ครั้งหนึ่ง ฉันเรียนภาษาฝรั่งเศสด้วยตัวเองโดยใช้เครื่องมือ 50 อย่าง ได้แก่ แอปพลิเคชันบนมือถือและการบรรยายไวยากรณ์บน YouTube ตอนแรกฉันแบ่งเวลาเป็นอัตราส่วน 50 ต่อ 100 แต่แอปพลิเคชั่นสนุกกว่า มี gamification ทุกอย่างเรียบง่ายรวดเร็วและชัดเจน แต่ในการบรรยายคุณต้องเจาะลึกเขียนอะไรบางอย่างลงไป ,ฝึกฝนในสมุดบันทึก ฉันเริ่มใช้เวลาบนสมาร์ทโฟนมากขึ้นเรื่อย ๆ จนกระทั่งส่วนแบ่งเพิ่มขึ้นเป็น XNUMX%: หากคุณใช้เวลาสามชั่วโมงกับมัน คุณจะสร้างความรู้สึกผิด ๆ ว่างานที่เสร็จแล้วเพราะเหตุนี้คุณจึงไม่มีความปรารถนาที่จะไปฟังอะไรเลย .

แต่จะเป็นเช่นนี้ได้อย่างไร? ท้ายที่สุดแล้ว เราได้สร้างแอปพลิเคชันบนมือถือขึ้นมาเป็นพิเศษ สร้างเป็นเส้นโค้งเอบบิงเฮาส์, เล่นเกมมัน, ทำให้มันน่าดึงดูดเพื่อให้ผู้คนใช้เวลาอยู่กับมัน แต่กลับกลายเป็นว่ามันกวนใจพวกเขาเท่านั้นเหรอ? ความจริงแล้ว เหตุผลก็คือทีมแอปพลิเคชันบนมือถือสามารถรับมือกับงานของตนได้ดีเกินไป ซึ่งส่งผลให้กลายเป็นผลิตภัณฑ์ที่ยอดเยี่ยมและพึ่งตนเองได้ และเริ่มหลุดออกจากระบบนิเวศของเรา

จากผลการวิจัย เห็นได้ชัดว่าจำเป็นต้องเปลี่ยนแปลงแอปพลิเคชันบนมือถือ เพื่อที่จะรบกวนสมาธิจากการเรียนหลักน้อยลง และทั้งเด็กและผู้ใหญ่ งานนี้อยู่ระหว่างดำเนินการ

กรณีที่สอง: การเริ่มต้นใช้งานข้อบกพร่อง

การเตรียมความพร้อมเป็นขั้นตอนเพิ่มเติมที่ไม่บังคับในการลงทะเบียนนักเรียนใหม่ ซึ่งช่วยขจัดปัญหาทางเทคนิคที่อาจเกิดขึ้นในอนาคต สถานการณ์พื้นฐานถือว่าบุคคลได้ลงทะเบียนบนหน้า Landing Page ได้รับการเข้าถึงบัญชีส่วนตัวของเขา ได้รับการติดต่อและได้รับบทเรียนเบื้องต้น ในเวลาเดียวกัน เราสังเกตเห็นปัญหาทางเทคนิคจำนวนมากในระหว่างบทเรียนเบื้องต้น: เบราว์เซอร์เวอร์ชันที่ไม่ถูกต้อง ไมโครโฟนหรือเสียงไม่ทำงาน ครูไม่สามารถแนะนำวิธีแก้ปัญหาได้ทันที และทั้งหมดนี้เป็นเรื่องยากโดยเฉพาะอย่างยิ่งเมื่อมันมาถึง ให้กับเด็กๆ ดังนั้นเราจึงได้พัฒนาแอปพลิเคชันเพิ่มเติมในบัญชีส่วนตัวของคุณ ซึ่งคุณสามารถดำเนินการสี่ขั้นตอนง่ายๆ ได้: ตรวจสอบเบราว์เซอร์ กล้อง ไมโครโฟน และยืนยันว่าผู้ปกครองจะอยู่ใกล้เคียงในระหว่างบทเรียนเบื้องต้น (ท้ายที่สุด พวกเขาคือผู้ที่ชำระเงิน) การศึกษาของบุตรหลาน)

หน้าการเริ่มต้นใช้งานบางส่วนเหล่านี้แสดงช่องทางดังนี้:

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python
1: เริ่มต้นบล็อกด้วยแบบฟอร์มการเข้าสู่ระบบและรหัสผ่านที่แตกต่างกันเล็กน้อย (ขึ้นอยู่กับไคลเอนต์) สามแบบ
2: ช่องทำเครื่องหมายที่ยอมรับขั้นตอนการเริ่มต้นใช้งานเพิ่มเติม
2.1-2.3: ตรวจสอบการมีอยู่ของผู้ปกครอง เวอร์ชัน Chrome และเสียง
3: บล็อกสุดท้าย

มันดูเป็นธรรมชาติมาก: ในสองขั้นตอนแรก ผู้เยี่ยมชมส่วนใหญ่จะออกไป โดยตระหนักว่ามีบางอย่างที่ต้องกรอก ตรวจสอบ แต่ไม่มีเวลา หากลูกค้ามาถึงขั้นตอนที่สามแล้ว เขาเกือบจะไปถึงรอบชิงชนะเลิศอย่างแน่นอน ไม่มีเหตุผลเดียวที่จะสงสัยสิ่งใดในช่องทาง

อย่างไรก็ตาม เราตัดสินใจที่จะวิเคราะห์การเริ่มต้นใช้งานของเรา ไม่ใช่ในช่องทางหนึ่งมิติแบบคลาสสิก แต่ใช้ห่วงโซ่ Markov เราเปิดใช้งานกิจกรรมเพิ่มเติมอีกเล็กน้อย รันสคริปต์และได้รับสิ่งนี้:

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python

ในความสับสนวุ่นวายนี้ มีเพียงสิ่งเดียวที่สามารถเข้าใจได้อย่างชัดเจน: มีบางอย่างผิดพลาด กระบวนการเริ่มต้นใช้งานเป็นแบบเชิงเส้น ซึ่งมีอยู่ในการออกแบบ และไม่ควรมีเว็บของการเชื่อมต่ออยู่ในนั้น และนี่ก็ชัดเจนทันทีว่าผู้ใช้ถูกโยนระหว่างขั้นตอนต่างๆ ซึ่งระหว่างนั้นไม่ควรมีการเปลี่ยนเลย

วิธีที่เราใช้ Markov chains ในการประเมินวิธีแก้ปัญหาและค้นหาจุดบกพร่อง ด้วยสคริปต์ Python

อาจมีสาเหตุสองประการที่ทำให้ภาพแปลก ๆ นี้:

  • สันดอนพุ่งเข้าไปในฐานข้อมูลบันทึก
  • มีข้อผิดพลาดในตัวผลิตภัณฑ์ - การเริ่มต้นใช้งาน

เหตุผลแรกเป็นไปได้มากที่สุด แต่การทดสอบนั้นต้องใช้แรงงานค่อนข้างมาก และการแก้ไขบันทึกจะไม่ช่วยปรับปรุง UX แต่อย่างที่สองถ้ามีก็ต้องทำอะไรสักอย่างอย่างเร่งด่วน ดังนั้นเราจึงไปดูโหนด ระบุขอบที่ไม่ควรอยู่ และมองหาสาเหตุของการเกิดขึ้น เราเห็นว่าผู้ใช้บางคนติดขัดและเดินเป็นวงกลม คนอื่นๆ หลุดออกจากกลางคันไปจนถึงจุดเริ่มต้น และโดยหลักการแล้วคนอื่นๆ ไม่สามารถออกจากสองขั้นตอนแรกได้ เราถ่ายโอนข้อมูลไปยัง QA และใช่ ปรากฏว่ามีข้อบกพร่องเพียงพอในการเริ่มใช้งาน นี่เป็นผลพลอยได้ เป็นเพียงสิ่งค้ำยันเล็กน้อย ไม่ได้รับการทดสอบอย่างลึกซึ้งเพียงพอ เพราะ... เราไม่ได้คาดหวังปัญหาใดๆ ตอนนี้กระบวนการบันทึกทั้งหมดเปลี่ยนไปแล้ว

เรื่องราวนี้แสดงให้เราเห็นถึงการนำ Markov chains ไปใช้ในด้าน QA อย่างไม่คาดคิด

ลองด้วยตัวคุณเอง!

ฉันโพสต์ของฉัน สคริปต์ Python สำหรับฝึกเชน Markov ในสาธารณสมบัติ - ใช้เพื่อสุขภาพของคุณ เอกสารเกี่ยวกับ GitHub สามารถถามคำถามได้ที่นี่ ฉันจะพยายามตอบทุกอย่าง

ลิงค์ที่มีประโยชน์: ไลบรารี NetworkX, โปรแกรมสร้างภาพ Graphviz. และที่นี่ มีบทความเกี่ยวกับHabré เกี่ยวกับโซ่มาร์คอฟ กราฟในบทความถูกสร้างขึ้นโดยใช้ เกฟี.

ที่มา: will.com

เพิ่มความคิดเห็น