{"id":39546,"date":"2019-10-31T22:35:27","date_gmt":"2019-10-31T19:35:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python\/"},"modified":"2019-10-31T22:35:27","modified_gmt":"2019-10-31T19:35:27","slug":"kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","title":{"rendered":"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00c8 fondamentale per noi comprendere cosa accade ai nostri studenti durante il loro percorso formativo e come questi eventi influenzino i risultati. Per questo motivo, creiamo una Customer Journey Map \u2014 una mappa dell'esperienza del cliente. Il processo di apprendimento non \u00e8 un insieme continuo e omogeneo, ma piuttosto una serie di eventi e azioni interconnessi del singolo studente, il cui comportamento pu\u00f2 variare notevolmente. Dopo aver completato una lezione, cosa far\u00e0 poi? Inizier\u00e0 i compiti a casa? Aprir\u00e0 l'app mobile? Cambier\u00e0 corso o chieder\u00e0 di cambiare insegnante? Inizier\u00e0 subito la lezione successiva? Oppure si allontaner\u00e0 deluso? \u00c8 possibile, analizzando questa mappa, identificare le tendenze che portano a un completamento con successo del corso o, al contrario, all'abbandono da parte dello studente?<\/p>\n<p><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/3eaee2e858273669b4490f6ceb65d281.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDi solito, per costruire un CJM si utilizzano strumenti specializzati, piuttosto costosi e con codice chiuso. Ma volevamo ideare qualcosa di semplice, che richiedesse sforzi minimi e fosse il pi\u00f9 possibile open source. Cos\u00ec \u00e8 nata l'idea di utilizzare le catene di Markov \u2014 e ci siamo riusciti. Abbiamo costruito una mappa, interpretato i dati sul comportamento degli studenti sotto forma di grafo, abbiamo scoperto risposte sorprendenti a domande globali e persino trovato bug profondamente nascosti. Tutto questo \u00e8 stato realizzato grazie a soluzioni open source con uno script Python. In questo articolo parler\u00f2 di due casi con i risultati inaspettati e condivider\u00f2 lo script con tutti coloro che sono interessati.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nQuindi, le catene di Markov mostrano la probabilit\u00e0 di transizioni tra eventi. Ecco un esempio primitivo da Wikipedia:<\/p>\n<p><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/978e18169ba4c7b2b71787536e4bb219.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQui 'E' e 'A' sono eventi, le frecce sono transizioni tra di essi (compresa la transizione da un evento a se stesso), e i pesi delle frecce rappresentano la probabilit\u00e0 di transizione ('grafo orientato pesato').<\/p>\n<h2>Cosa abbiamo usato<\/h2>\n<p>\nLa catena \u00e8 stata addestrata con le funzionalit\u00e0 standard di Python, a cui sono stati forniti i log delle attivit\u00e0 degli studenti. Il grafo sulla matrice ottenuta \u00e8 stato costruito con la libreria NetworkX.<\/p>\n<p>Il log appare cos\u00ec:<\/p>\n<p><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/bc75077802cd7eeb00ebe4a56bc61050.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto \u00e8 un file csv che contiene una tabella di tre colonne: id dello studente, nome dell'evento, e l'ora in cui \u00e8 avvenuto. Questi tre campi sono sufficienti per tracciare i movimenti del cliente, costruire una mappa e alla fine ottenere una catena di Markov.<\/p>\n<p>La libreria restituisce i grafi costruiti nei formati .dot o .gexf. Per visualizzare i primi, si pu\u00f2 utilizzare il pacchetto gratuito Graphviz (strumento gvedit); noi abbiamo lavorato con .gexf e Gephi, anch'esso gratuito.<\/p>\n<p>Ora, voglio presentare due esempi di utilizzo delle catene di Markov, che ci hanno permesso di guardare nuovamente ai nostri obiettivi, ai processi di apprendimento e all'ecosistema Skyeng. E di correggere i bug.<\/p>\n<h2>Primo caso: applicazione mobile<\/h2>\n<p>\nInnanzitutto, abbiamo esaminato il percorso dello studente nel nostro prodotto pi\u00f9 popolare \u2014 il corso General. In quel momento, lavoravo nel dipartimento per bambini di Skyeng e volevamo vedere quanto fosse efficace l'applicazione mobile con il nostro pubblico infantile.<\/p>\n<p>Prendendo i log e facendoli passare attraverso uno script, ho ottenuto qualcosa del genere:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ws\/ru\/de\/wsrudeufw3pzwrrxtxtn1pjeqvu.png\"><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/f2533ddfae7d5f85d0e86902b9b7005f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Il nodo di partenza \u00e8 Start General, e in basso ci sono tre nodi in uscita: lo studente \u00absi \u00e8 addormentato\u00bb, ha cambiato corso, ha terminato il corso.<\/p>\n<ul>\n<li>Si \u00e8 addormentato, \u00abZasnul\u00bb \u2014 significa che non sta pi\u00f9 seguendo le lezioni, molto probabilmente \u00e8 andato via. Lo chiamiamo ottimisticamente uno stato di \u00absi \u00e8 addormentato\u00bb, poich\u00e9 in teoria ha ancora la possibilit\u00e0 di riprendere lo studio. Il risultato peggiore per noi.<\/li>\n<li>Cambiato corso, ha cambiato da General a qualcos'altro ed \u00e8 andato perso per la nostra catena di Markov.<\/li>\n<li>Corso concluso, significa che la persona ha completato l'80% delle lezioni (non tutte le lezioni sono obbligatorie).<\/li>\n<\/ul>\n<p>\nEntrare nel nodo successful class significa aver completato una lezione sulla nostra piattaforma insieme all'insegnante. Segna i progressi nel corso e la vicinanza al risultato desiderato \u2014 \u00abCorso concluso\u00bb. \u00c8 importante che gli studenti la frequentino il pi\u00f9 possibile.<\/p>\n<p>Per ottenere conclusioni quantitative pi\u00f9 precise per l'applicazione mobile (nodo app session), abbiamo costruito catene separate per ciascuno dei nodi finali e poi confrontato in coppia i pesi degli archi:<\/p>\n<ul>\n<li>da app session di nuovo in essa;<\/li>\n<li>da app session a successful class;<\/li>\n<li>da successful class a app session.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/iw\/mz\/yq\/iwmzyqmlmbkgzmjqa7qhxwd7shq.png\"><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/fc68ca73b379f57a38b53f0c31e75cb1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>A sinistra \u2014 studenti che hanno completato il corso, a destra \u2014 quelli che si sono \"addormentati\"<\/i><\/p>\n<p>Queste tre barre mostrano il rapporto tra il successo dello studente e l'uso dell'app mobile. Ci aspettavamo di vedere che gli studenti che hanno completato il corso avessero un rapporto con l'app pi\u00f9 forte rispetto a quelli che si sono \"addormentati\". Tuttavia, i risultati ottenuti sono stati esattamente opposti:<\/p>\n<ul>\n<li>abbiamo constatato che diversi gruppi di utenti interagiscono in modi differenti con l'app mobile;<\/li>\n<li>gli studenti di successo utilizzano l'app mobile in modo meno intenso;<\/li>\n<li>gli studenti che si \"addormentano\" usano attivamente l'app mobile.<\/li>\n<\/ul>\n<p>\nCi\u00f2 significa che gli studenti \"addormentati\" iniziano a trascorrere sempre pi\u00f9 tempo nell'app mobile e alla fine rimangono attivi in essa per sempre.<\/p>\n<p><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/45c17a908e2178edd99e340f34657cad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAll'inizio siamo rimasti sorpresi, ma poi abbiamo capito che si trattava di un effetto del tutto naturale. Tempo fa ho studiato il francese da solo, utilizzando due strumenti: un'app mobile e lezioni di grammatica su YouTube. Inizialmente dividevo il tempo tra di loro in proporzione 50 a 50. Ma l'app era pi\u00f9 divertente, con la gamification, tutto era semplice, veloce e chiaro, mentre nelle lezioni dovevo approfondire, scrivere appunti e praticare nel quaderno. Progressivamente ho iniziato a trascorrere pi\u00f9 tempo sullo smartphone, finch\u00e9 la sua percentuale non \u00e8 salita al 100%: dopo tre ore in esso, si crea una falsa impressione di lavoro svolto, che rende poco attraente l'idea di andare a seguire qualcosa.<\/p>\n<p>Ma come pu\u00f2 essere? Abbiamo creato appositamente un'app mobile, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/312126\/\">integrando la curva di Ebbinghaus,<\/a><\/noindex>, gamificando, rendendola attraente affinch\u00e9 le persone vi trascorressero tempo, e invece sembra solo distrarli? In realt\u00e0, il motivo \u00e8 che il team dell'app mobile ha svolto troppo bene i propri compiti, trasformandola in un prodotto autonomo e fantastico che ha iniziato a uscire dal nostro ecosistema.<\/p>\n<p>Dalla ricerca \u00e8 emerso che \u00e8 necessario modificare l'app mobile affinch\u00e9 non distolga troppo dall'apprendimento professionale, sia per bambini che per adulti. Attualmente stiamo lavorando a questo.<\/p>\n<h2>Secondo caso: problemi di onboarding<\/h2>\n<p>\nL'onboarding \u00e8 una procedura aggiuntiva non obbligatoria durante la registrazione di un nuovo studente, progettata per eliminare potenziali problemi tecnici futuri. Lo scenario di base prevede che l'utente si sia registrato sulla landing page, abbia ottenuto l'accesso all'area personale, venga contattato e segua una lezione introduttiva. Notiamo un alto tasso di difficolt\u00e0 tecniche durante la lezione introduttiva: versione errata del browser, microfono o audio non funzionanti, l'insegnante non pu\u00f2 suggerire immediatamente una soluzione, e tutto ci\u00f2 \u00e8 particolarmente difficile quando si tratta di bambini. Per questo motivo abbiamo sviluppato un'app aggiuntiva nell'area personale, dove \u00e8 possibile completare quattro semplici passaggi: controllare il browser, la fotocamera, il microfono e confermare che i genitori saranno presenti durante la lezione introduttiva (dopotutto, sono loro a pagare per l'istruzione dei bambini).<\/p>\n<p>Queste poche pagine di onboarding mostrano il seguente funnel:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/l5\/pt\/aj\/l5ptajlgx6msydvswctke1w505w.jpeg\"><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/5e949640d4d4f8a70dc4fd677e3c93a7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>1: blocco iniziale con tre moduli di accesso leggermente diversi (a seconda del cliente).<br \/>\n2: spunta di consenso per una procedura di onboarding aggiuntiva.<br \/>\n2.1-2.3: verifica della presenza del genitore, versione di Chrome e audio.<br \/>\n3: blocco finale.<\/i><\/p>\n<p>Risulta molto naturale: nei primi due passaggi, la maggior parte dei visitatori abbandona, rendendosi conto che devono compilare qualcosa, controllare, e che non hanno tempo. Se il cliente arriva al terzo passo, \u00e8 quasi certo che raggiunger\u00e0 il traguardo. Non ci sono ragioni visibili nella funnel per sospettare qualcosa.<\/p>\n<p>Tuttavia, abbiamo deciso di analizzare il nostro onboarding non con la classica funnel unidimensionale, ma tramite una catena di Markov. Abbiamo incluso un numero maggiore di eventi, eseguito lo script e ottenuto questo risultato:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/pi\/e6\/9p\/pie69p-4rmwaqdqqunigm3oz8am.png\"><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/44c094cb0be013beac00c0af5a3801be.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Da questo caos si pu\u00f2 capire solo una cosa: qualcosa \u00e8 andato storto. Il processo di onboarding \u00e8 lineare, come concepito dal design, e non dovrebbe avere una rete di collegamenti cos\u00ec complessa. Qui si vede chiaramente che l'utente viene spostato tra i passaggi, tra i quali non dovrebbero esserci transizioni.<\/p>\n<p><img decoding=\"async\" alt=\"Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script Python\" src=\"\/wp-content\/uploads\/2019\/10\/f43fcabaa7b773c17741b4eaa927b600.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe ragioni di questa strana situazione potrebbero essere due:<\/p>\n<ul>\n<li>errori inseriti nel database dei log;<\/li>\n<li>i difetti sono presenti nel prodotto stesso \u2014 onboarding.<\/li>\n<\/ul>\n<p>\nLa prima ragione, probabilmente, \u00e8 valida, ma verificarla \u00e8 abbastanza laborioso, e correggere i log non aiuter\u00e0 a migliorare l'esperienza utente. Tuttavia, per la seconda, se esiste, dovevamo agire rapidamente. Quindi abbiamo iniziato a esaminare i nodi, identificare gli archi che non dovevano esserci e cercare le cause della loro comparsa. Abbiamo notato che alcuni utenti si bloccavano e giravano in tondo, altri saltavano dalla met\u00e0 all'inizio, altri ancora non riuscivano a uscire dai primi due passi. Abbiamo comunicato i dati al QA \u2014 e s\u00ec, si \u00e8 scoperto che nel onboarding c'erano molti bug: \u00e8 un prodotto secondario, un po' improvvisato, non \u00e8 stato testato a fondo, poich\u00e9 non ci si aspettava problemi. Ora l'intero processo di registrazione \u00e8 cambiato.<\/p>\n<p>Questa storia ci ha mostrato un'applicazione inaspettata delle catene di Markov nell'ambito del QA.<\/p>\n<h3>Provate voi stessi!<\/h3>\n<p>\nHo pubblicato il mio <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/BartolomeuD\/markov-chain\">script Python per l'addestramento delle catene di Markov<\/a><\/noindex> in accesso aperto \u2014 usatelo pure. La documentazione \u00e8 disponibile su GitHub, potete fare domande qui e cercher\u00f2 di rispondere a tutto.<\/p>\n<p>Ecco alcuni link utili: <noindex><a rel=\"nofollow\" href=\"https:\/\/networkx.github.io\/\">libreria NetworkX<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.graphviz.org\/\">visualizzatore Graphviz<\/a><\/noindex>. Qui <noindex><a rel=\"nofollow\" href=\"http:\/\/habr.com\/ru\/post\/455762\">c'\u00e8 un articolo su Habr<\/a><\/noindex> sulle catene di Markov. I grafi nell'articolo sono realizzati con <noindex><a rel=\"nofollow\" href=\"https:\/\/gephi.org\/\">Gephi<\/a><\/noindex>.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/473124\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Customer Journey Map \u2014 \u043a\u0430\u0440\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430. \u0412\u0435\u0434\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u2014 \u043d\u0435 \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0438 \u0446\u0435\u043b\u044c\u043d\u043e\u0435, \u044d\u0442\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0447\u0435\u043d\u0438\u043a\u043e\u0432. \u0412\u043e\u0442 \u043e\u043d [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":39547,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-39546","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Customer Journey Map \u2014 \u043a\u0430\u0440\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430. \u0412\u0435\u0434\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u2014 \u043d\u0435 \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0438 \u0446\u0435\u043b\u044c\u043d\u043e\u0435, \u044d\u0442\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0447\u0435\u043d\u0438\u043a\u043e\u0432. \u0412\u043e\u0442 \u043e\u043d\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0446\u0435\u043f\u0438 \u041c\u0430\u0440\u043a\u043e\u0432\u0430 \u0432 \u043e\u0446\u0435\u043d\u043a\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0431\u0430\u0433\u043e\u0432. \u0421\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043d\u0430 Python | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Customer Journey Map \u2014 \u043a\u0430\u0440\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430. \u0412\u0435\u0434\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u2014 \u043d\u0435 \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0438 \u0446\u0435\u043b\u044c\u043d\u043e\u0435, \u044d\u0442\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0447\u0435\u043d\u0438\u043a\u043e\u0432. \u0412\u043e\u0442 \u043e\u043d\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:35:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:35:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Come utilizziamo le catene di Markov nella valutazione delle decisioni e nella ricerca di bug. Con uno script in Python | ProHoster","description":"\u00c8 importante per noi comprendere cosa accade ai nostri studenti durante l'apprendimento e come questi eventi influenzano i risultati, quindi costruiamo una Customer Journey Map \u2014 una mappa dell'esperienza del cliente. Infatti, il processo di apprendimento non \u00e8 qualcosa di continuo e omogeneo, ma \u00e8 una sequenza di eventi e azioni interconnesse dello studente, dove queste azioni possono variare significativamente tra diversi alunni. Ecco","canonical_url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0446\u0435\u043f\u0438 \u041c\u0430\u0440\u043a\u043e\u0432\u0430 \u0432 \u043e\u0446\u0435\u043d\u043a\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0431\u0430\u0433\u043e\u0432. \u0421\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043d\u0430 Python | ProHoster","og:description":"\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Customer Journey Map \u2014 \u043a\u0430\u0440\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430. \u0412\u0435\u0434\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u2014 \u043d\u0435 \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0438 \u0446\u0435\u043b\u044c\u043d\u043e\u0435, \u044d\u0442\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0447\u0435\u043d\u0438\u043a\u043e\u0432. \u0412\u043e\u0442 \u043e\u043d","og:url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:35:27+00:00","article:modified_time":"2019-10-31T19:35:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39546","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 02:13:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:16:25","updated":"2026-01-24 02:13:24"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/39546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=39546"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/39546\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/39547"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=39546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=39546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=39546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}