Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python

Είναι σημαντικό για εμάς να κατανοήσουμε τι συμβαίνει στους μαθητές μας κατά τη διάρκεια της εκπαίδευσης και πώς αυτά τα γεγονότα επηρεάζουν το αποτέλεσμα, γι' αυτό δημιουργούμε έναν χάρτη ταξιδιού πελατών - έναν χάρτη της εμπειρίας των πελατών. Εξάλλου, η μαθησιακή διαδικασία δεν είναι κάτι συνεχές και αναπόσπαστο, είναι μια αλυσίδα αλληλένδετων γεγονότων και ενεργειών του μαθητή, και αυτές οι ενέργειες μπορεί να διαφέρουν πολύ μεταξύ των διαφορετικών μαθητών. Τώρα ολοκλήρωσε το μάθημά του: τι θα κάνει μετά; Θα πάει στο σπίτι; Θα ξεκινήσει μια εφαρμογή για κινητά; Θα αλλάξει πορεία, θα ζητήσει να αλλάξει καθηγητές; Θα πάτε κατευθείαν στο επόμενο μάθημα; Ή θα φύγει απογοητευμένος; Είναι δυνατόν, με την ανάλυση αυτού του χάρτη, να εντοπιστούν μοτίβα που οδηγούν στην επιτυχή ολοκλήρωση του μαθήματος ή, αντίθετα, στην «εγκατάλειψη» του μαθητή;

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python

Συνήθως, εξειδικευμένα, πολύ ακριβά εργαλεία κλειστού κώδικα χρησιμοποιούνται για την κατασκευή CJM. Αλλά θέλαμε να καταλήξουμε σε κάτι απλό, που απαιτεί ελάχιστη προσπάθεια και, ει δυνατόν, ανοιχτό κώδικα. Έτσι προέκυψε η ιδέα να χρησιμοποιήσουμε αλυσίδες Markov - και τα καταφέραμε. Κατασκευάσαμε έναν χάρτη, ερμηνεύσαμε δεδομένα σχετικά με τη συμπεριφορά των μαθητών με τη μορφή γραφήματος, είδαμε εντελώς μη προφανείς απαντήσεις σε παγκόσμια επιχειρηματικά ζητήματα και ακόμη και βρήκαμε βαθιά κρυμμένα σφάλματα. Όλα αυτά τα κάναμε χρησιμοποιώντας λύσεις σεναρίων Python ανοιχτού κώδικα. Σε αυτό το άρθρο θα μιλήσω για δύο περιπτώσεις με αυτά τα πολύ μη προφανή αποτελέσματα και θα μοιραστώ το σενάριο με όλους.

Έτσι, οι αλυσίδες Markov δείχνουν την πιθανότητα μετάβασης μεταξύ γεγονότων. Εδώ είναι ένα πρωτόγονο παράδειγμα από τη Wikipedia:

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python

Εδώ τα "Ε" και "Α" είναι συμβάντα, τα βέλη είναι μεταβάσεις μεταξύ τους (συμπεριλαμβανομένης της μετάβασης από ένα συμβάν στο ίδιο) και τα βάρη των βελών είναι η πιθανότητα μετάβασης ("σταθμισμένο κατευθυνόμενο γράφημα").

Τι χρησιμοποιήσατε;

Το κύκλωμα εκπαιδεύτηκε με τυπική λειτουργικότητα Python, η οποία τροφοδοτήθηκε με αρχεία καταγραφής δραστηριοτήτων μαθητών. Το γράφημα στον προκύπτοντα πίνακα κατασκευάστηκε από τη βιβλιοθήκη NetworkX.

Το αρχείο καταγραφής μοιάζει με αυτό:

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python

Αυτό είναι ένα αρχείο csv που περιέχει έναν πίνακα τριών στηλών: αναγνωριστικό μαθητή, όνομα του συμβάντος, ώρα που συνέβη. Αυτά τα τρία πεδία είναι αρκετά για να εντοπίσετε τις κινήσεις του πελάτη, να δημιουργήσετε έναν χάρτη και τελικά να αποκτήσετε μια αλυσίδα Markov.

Η βιβλιοθήκη επιστρέφει τα κατασκευασμένα γραφήματα σε μορφή .dot ή .gexf. Για να οπτικοποιήσετε το πρώτο, μπορείτε να χρησιμοποιήσετε το δωρεάν πακέτο Graphviz (εργαλείο gvedit), που δουλέψαμε με το .gexf και το Gephi, επίσης δωρεάν.

Στη συνέχεια, θα ήθελα να δώσω δύο παραδείγματα χρήσης αλυσίδων Markov, που μας επέτρεψαν να ρίξουμε μια νέα ματιά στους στόχους μας, τις εκπαιδευτικές διαδικασίες και το ίδιο το οικοσύστημα Skyeng. Λοιπόν, διορθώστε τα σφάλματα.

Πρώτη περίπτωση: εφαρμογή για κινητά

Αρχικά, εξερευνήσαμε το ταξίδι των μαθητών μέσα από το πιο δημοφιλές προϊόν μας - το μάθημα Γενικά. Εκείνη τη στιγμή δούλευα στο παιδικό τμήμα του Skyeng και θέλαμε να δούμε πόσο αποτελεσματικά λειτουργούσε η εφαρμογή για κινητά με το παιδικό μας κοινό.

Παίρνοντας τα αρχεία καταγραφής και περνώντας τα μέσα από το σενάριο, πήρα κάτι σαν αυτό:

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python

Ο κόμβος εκκίνησης είναι το Start General και στο κάτω μέρος υπάρχουν τρεις κόμβοι εξόδου: ο μαθητής «κοιμήθηκε», άλλαξε πορεία και ολοκλήρωσε το μάθημα.

  • Αποκοιμήθηκε, "Κοιμήθηκε" - αυτό σημαίνει ότι δεν παρακολουθεί πλέον μαθήματα, πιθανότατα έπεσε. Αυτή την κατάσταση την ονομάζουμε αισιόδοξα «κοιμισμένη», γιατί... θεωρητικά έχει ακόμα την ευκαιρία να συνεχίσει τις σπουδές του. Το χειρότερο αποτέλεσμα για εμάς.
  • Έριξε στρατηγός, Άλλαξε πορεία - άλλαξε από Γενικός σε κάτι άλλο και χάθηκε για την αλυσίδα Markov μας.
  • Τελειωμένο μάθημα, Ολοκληρώθηκε το μάθημα - ιδανική κατάσταση, το άτομο έχει ολοκληρώσει το 80% των μαθημάτων (δεν απαιτούνται όλα τα μαθήματα).

Η είσοδος στον κόμβο επιτυχούς τάξης σημαίνει επιτυχής ολοκλήρωση του μαθήματος στην πλατφόρμα μας μαζί με τον δάσκαλο. Καταγράφει την πρόοδο κατά μήκος της πορείας και την προσέγγιση στο επιθυμητό αποτέλεσμα - "Ολοκληρώθηκε το μάθημα". Είναι σημαντικό για εμάς οι μαθητές να παρακολουθούν όσο το δυνατόν περισσότερο.

Για να λάβουμε πιο ακριβή ποσοτικά συμπεράσματα για την εφαρμογή για κινητά (κόμβος συνεδρίας εφαρμογής), δημιουργήσαμε ξεχωριστές αλυσίδες για κάθε έναν από τους τελικούς κόμβους και στη συνέχεια συγκρίναμε τα βάρη των άκρων ανά ζεύγη:

  • από την περίοδο λειτουργίας της εφαρμογής πίσω σε αυτήν.
  • από τη συνεδρία εφαρμογής στην επιτυχημένη τάξη.
  • από επιτυχημένη τάξη σε συνεδρία εφαρμογής.

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python
Αριστερά οι μαθητές που ολοκλήρωσαν το μάθημα, δεξιά αυτοί που «κοιμήθηκαν»

Αυτά τα τρία άκρα δείχνουν τη σχέση μεταξύ της επιτυχίας ενός μαθητή και της χρήσης της εφαρμογής για κινητά. Περιμέναμε να δούμε ότι οι μαθητές που ολοκλήρωσαν το μάθημα θα είχαν ισχυρότερη σύνδεση με την εφαρμογή από τους μαθητές που αποκοιμήθηκαν. Ωστόσο, στην πραγματικότητα είχαμε ακριβώς τα αντίθετα αποτελέσματα:

  • βεβαιωθήκαμε ότι διαφορετικές ομάδες χρηστών αλληλεπιδρούν με την εφαρμογή για κινητά διαφορετικά.
  • Οι επιτυχημένοι μαθητές χρησιμοποιούν την εφαρμογή για κινητά λιγότερο εντατικά.
  • οι μαθητές που κοιμούνται χρησιμοποιούν την εφαρμογή για κινητά πιο ενεργά.

Αυτό σημαίνει ότι οι μαθητές που αποκοιμιούνται αρχίζουν να περνούν όλο και περισσότερο χρόνο στην εφαρμογή για κινητά και, στο τέλος, παραμένουν σε αυτήν για πάντα.

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python

Στην αρχή ήμασταν έκπληκτοι, αλλά αφού το σκεφτήκαμε, καταλάβαμε ότι αυτό ήταν ένα εντελώς φυσικό αποτέλεσμα. Κάποτε, μελετούσα μόνος μου γαλλικά χρησιμοποιώντας δύο εργαλεία: μια εφαρμογή για κινητά και διαλέξεις γραμματικής στο YouTube. Στην αρχή, μοίρασα τον χρόνο μεταξύ τους σε αναλογία 50 προς 50. Αλλά η εφαρμογή είναι πιο διασκεδαστική, υπάρχει gamification, όλα είναι απλά, γρήγορα και ξεκάθαρα, αλλά στη διάλεξη πρέπει να το εμβαθύνεις, να γράψεις κάτι , εξάσκηση σε τετράδιο. Σταδιακά, άρχισα να αφιερώνω περισσότερο χρόνο στο smartphone μου, έως ότου το μερίδιό του αυξήθηκε στο 100%: αν αφιερώσεις τρεις ώρες σε αυτό, δημιουργείς μια ψεύτικη αίσθηση ολοκληρωμένης εργασίας, εξαιτίας της οποίας δεν έχεις καμία επιθυμία να πας και να ακούσεις τίποτα .

Αλλά πώς μπορεί να γίνει αυτό; Μετά από όλα, δημιουργήσαμε ειδικά μια εφαρμογή για κινητά, ενσωμάτωσε σε αυτό την καμπύλη Ebbinghaus, το διαμόρφωσε, το έκανε ελκυστικό ώστε οι άνθρωποι να περνούν χρόνο σε αυτό, αλλά αποδεικνύεται ότι τους αποσπά μόνο την προσοχή; Στην πραγματικότητα, ο λόγος είναι ότι η ομάδα εφαρμογών για κινητά αντιμετώπισε πολύ καλά τα καθήκοντά της, με αποτέλεσμα να γίνει ένα δροσερό, αυτάρκης προϊόν και να αρχίσει να ξεφεύγει από το οικοσύστημά μας.

Ως αποτέλεσμα της έρευνας, έγινε σαφές ότι η εφαρμογή για κινητά έπρεπε να αλλάξει με κάποιο τρόπο, ώστε να αποσπά λιγότερο την προσοχή από το κύριο μάθημα της μελέτης. Και παιδιά και ενήλικες. Αυτή η εργασία βρίσκεται σε εξέλιξη.

Δεύτερη περίπτωση: σφάλματα ενσωμάτωσης

Η ενσωμάτωση είναι μια προαιρετική πρόσθετη διαδικασία κατά την εγγραφή νέου μαθητή, εξαλείφοντας πιθανά τεχνικά προβλήματα στο μέλλον. Το βασικό σενάριο προϋποθέτει ότι ένα άτομο έχει εγγραφεί στη σελίδα προορισμού, έχει αποκτήσει πρόσβαση στον προσωπικό του λογαριασμό, επικοινωνεί μαζί του και του δίνεται ένα εισαγωγικό μάθημα. Ταυτόχρονα, σημειώνουμε ένα μεγάλο ποσοστό τεχνικών δυσκολιών κατά τη διάρκεια του εισαγωγικού μαθήματος: η λάθος έκδοση του προγράμματος περιήγησης, το μικρόφωνο ή ο ήχος δεν λειτουργεί, ο δάσκαλος δεν μπορεί να προτείνει αμέσως μια λύση και όλα αυτά είναι ιδιαίτερα δύσκολα όταν πρόκειται. στα παιδιά. Επομένως, έχουμε αναπτύξει μια πρόσθετη εφαρμογή στον προσωπικό σας λογαριασμό, όπου μπορείτε να ολοκληρώσετε τέσσερα απλά βήματα: ελέγξτε το πρόγραμμα περιήγησής σας, την κάμερα, το μικρόφωνό σας και επιβεβαιώστε ότι οι γονείς θα είναι κοντά κατά τη διάρκεια του εισαγωγικού μαθήματος (εξάλλου, αυτοί είναι που πληρώνουν εκπαίδευση των παιδιών τους).

Αυτές οι λίγες σελίδες ενσωμάτωσης έδειξαν μια διοχέτευση όπως αυτή:

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python
1: μπλοκ έναρξης με τρεις ελαφρώς διαφορετικές (ανάλογα με τον πελάτη) φόρμες εισαγωγής σύνδεσης και κωδικού πρόσβασης.
2: πλαίσιο ελέγχου που συμφωνεί με την πρόσθετη διαδικασία επιβίβασης.
2.1-2.3: Ελέγξτε για παρουσία γονέα, έκδοση Chrome και ήχο.
3: τελικό μπλοκ.

Φαίνεται πολύ φυσικό: στα δύο πρώτα βήματα, οι περισσότεροι επισκέπτες φεύγουν, συνειδητοποιώντας ότι υπάρχει κάτι να συμπληρώσουν, να ελέγξουν, αλλά δεν υπάρχει χρόνος. Εάν ο πελάτης έχει φτάσει στο τρίτο σκαλί, τότε είναι σχεδόν βέβαιο ότι θα φτάσει στον τελικό. Δεν υπάρχει ούτε ένας λόγος να υποπτευόμαστε οτιδήποτε στο χωνί.

Ωστόσο, αποφασίσαμε να αναλύσουμε την ενσωμάτωση μας όχι σε μια κλασική μονοδιάστατη χοάνη, αλλά χρησιμοποιώντας μια αλυσίδα Markov. Ενεργοποιήσαμε λίγο περισσότερα συμβάντα, εκτελέσαμε το σενάριο και πήραμε αυτό:

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python

Μέσα σε αυτό το χάος, μόνο ένα πράγμα μπορεί να γίνει κατανοητό: κάτι πήγε στραβά. Η διαδικασία ενσωμάτωσης είναι γραμμική, αυτό είναι εγγενές στη σχεδίαση, δεν θα πρέπει να υπάρχει τέτοιος ιστός συνδέσεων σε αυτό. Και εδώ είναι αμέσως σαφές ότι ο χρήστης ρίχνεται ανάμεσα στα βήματα, μεταξύ των οποίων δεν πρέπει να υπάρχουν καθόλου μεταβάσεις.

Πώς χρησιμοποιούμε τις αλυσίδες Markov για την αξιολόγηση λύσεων και την εύρεση σφαλμάτων. Με σενάριο Python

Μπορεί να υπάρχουν δύο λόγοι για αυτήν την παράξενη εικόνα:

  • κοπάδια εισχώρησαν στη βάση δεδομένων καταγραφής.
  • Υπάρχουν λάθη στο ίδιο το προϊόν - ενσωμάτωση.

Ο πρώτος λόγος είναι πιθανότατα αληθινός, αλλά η δοκιμή του είναι αρκετά εντατική και η διόρθωση των αρχείων καταγραφής δεν θα βοηθήσει στη βελτίωση του UX. Αλλά με το δεύτερο, αν υπάρχει, κάτι έπρεπε να γίνει επειγόντως. Επομένως, πήγαμε να εξετάσουμε τους κόμβους, να εντοπίσουμε ακμές που δεν θα έπρεπε να υπάρχουν και να αναζητήσουμε τους λόγους για την εμφάνισή τους. Είδαμε ότι κάποιοι χρήστες κόλλησαν και έκαναν κύκλους, άλλοι έπεσαν από τη μέση στην αρχή και άλλοι, καταρχήν, δεν μπορούσαν να βγουν από τα δύο πρώτα βήματα. Μεταφέραμε τα δεδομένα στο QA - και ναι, αποδείχθηκε ότι υπήρχαν αρκετά σφάλματα στην ενσωμάτωση: αυτό είναι ένα τέτοιο υποπροϊόν, λίγο δεκανίκι, δεν δοκιμάστηκε αρκετά βαθιά, γιατί... Δεν περιμέναμε κανένα πρόβλημα. Τώρα έχει αλλάξει όλη η διαδικασία εγγραφής.

Αυτή η ιστορία μας έδειξε μια απροσδόκητη εφαρμογή των αλυσίδων Markov στον τομέα του QA.

Δοκιμάστε το μόνοι σας!

δημοσίευσα το δικό μου Σενάριο Python για εκπαίδευση αλυσίδων Markov στον δημόσιο τομέα - χρησιμοποιήστε το για την υγεία σας. Τεκμηρίωση στο GitHub, ερωτήσεις μπορούν να γίνουν εδώ, θα προσπαθήσω να απαντήσω σε όλα.

Λοιπόν, χρήσιμοι σύνδεσμοι: Βιβλιοθήκη NetworkX, Οπτικοποιητής Graphviz. Και εδώ υπάρχει ένα άρθρο για το Habré για τις αλυσίδες Markov. Τα γραφήματα στο άρθρο γίνονται χρησιμοποιώντας Gephi.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο