{"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\/de\/blog\/news\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","title":{"rendered":"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Es ist wichtig f\u00fcr uns zu verstehen, was mit unseren Studenten w\u00e4hrend des Lernens passiert und wie diese Ereignisse das Ergebnis beeinflussen. Daher erstellen wir eine Customer Journey Map \u2013 eine Karte des Kundenerlebnisses. Denn der Lernprozess ist kein kontinuierlicher und einheitlicher Prozess, sondern eine Kette von miteinander verbundenen Ereignissen und Aktionen des Studenten, wobei diese Aktionen bei verschiedenen Sch\u00fclern stark variieren k\u00f6nnen. Er hat also Unterricht gehabt: Was macht er als N\u00e4chstes? Macht er die Hausaufgaben? Startet er die mobile Anwendung? \u00c4ndert er den Kurs oder bittet um einen Lehrerwechsel? Geht er sofort zur n\u00e4chsten Lektion? Oder verl\u00e4sst er einfach entt\u00e4uscht? Kann man durch die Analyse dieser Karte Muster identifizieren, die zum erfolgreichen Abschluss des Kurses f\u00fchren oder im Gegenteil dazu, dass der Student \u201eaufgibt\u201c?<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/3eaee2e858273669b4490f6ceb65d281.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNormalerweise werden f\u00fcr den Aufbau von CJMs spezialisierte, ziemlich teure Werkzeuge mit geschlossener Software verwendet. Aber wir wollten etwas Einfaches entwickeln, das minimale Anstrengungen erfordert und nach M\u00f6glichkeit Open Source ist. So entstand die Idee, Markov-Ketten zu verwenden \u2013 und wir hatten Erfolg. Wir haben eine Karte erstellt, die Daten \u00fcber das Verhalten von Studenten in Form eines Graphen interpretiert, und dabei ganz unerwartete Antworten auf globale Gesch\u00e4ftsfragen gefunden und sogar tief versteckte Bugs entdeckt. All dies haben wir mit Hilfe von Open Source-L\u00f6sungen eines Python-Skripts realisiert. In diesem Artikel werde ich zwei F\u00e4lle mit diesen unerwarteten Ergebnissen erl\u00e4utern und das Skript mit allen Interessierten teilen.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMarkov-Ketten zeigen die Wahrscheinlichkeit von \u00dcberg\u00e4ngen zwischen Ereignissen. Hier ist ein einfaches Beispiel aus Wikipedia:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/978e18169ba4c7b2b71787536e4bb219.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHier sind \u201eE\u201c und \u201eA\u201c Ereignisse, die Pfeile sind \u00dcberg\u00e4nge zwischen ihnen (einschlie\u00dflich des \u00dcbergangs von einem Ereignis zu sich selbst), und die Gewichte der Pfeile sind die \u00dcbergangswahrscheinlichkeiten (\u201egewichteter gerichteter Graph\u201c).<\/p>\n<h2>Was wir verwendet haben<\/h2>\n<p>\nDie Kette wurde mit der Standardfunktionalit\u00e4t von Python trainiert, die die Protokolldaten der Aktivit\u00e4ten der Studenten verarbeitet hat. Der Graph wurde mit der Bibliothek NetworkX aus der erhaltenen Matrix erstellt.<\/p>\n<p>Das Protokoll sieht so aus:<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/bc75077802cd7eeb00ebe4a56bc61050.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs handelt sich um eine CSV-Datei, die eine Tabelle mit drei Spalten enth\u00e4lt: die ID des Studenten, die Bezeichnung des Ereignisses und die Zeit, zu der es aufgetreten ist. Diese drei Felder sind ausreichend, um die Bewegungen des Kunden nachzuvollziehen, eine Karte zu erstellen und schlie\u00dflich eine Markov-Kette zu erhalten.<\/p>\n<p>Die Bibliothek gibt die erstellten Graphen im .dot- oder .gexf-Format zur\u00fcck. Zum Visualisieren der ersten kann man das kostenlose Paket Graphviz (Werkzeug gvedit) verwenden, wir haben mit .gexf und Gephi, ebenfalls kostenlos, gearbeitet.<\/p>\n<p>Als n\u00e4chstes m\u00f6chte ich zwei Beispiele f\u00fcr die Nutzung von Markow-Ketten vorstellen, die es uns erm\u00f6glicht haben, unsere Ziele, Bildungsprozesse und das gesamte Skyeng-\u00d6kosystem neu zu betrachten. Und einige Fehler zu beheben.<\/p>\n<h2>Erster Fall: mobile Anwendung<\/h2>\n<p>\nZun\u00e4chst haben wir den Weg des Sch\u00fclers durch unser beliebtestes Produkt - den General-Kurs - untersucht. Zu diesem Zeitpunkt arbeitete ich in der Kinderabteilung von Skyeng und wir wollten herausfinden, wie effektiv die mobile App mit unserem Kinderpublikum arbeitet.<\/p>\n<p>Nachdem ich die Protokolle genommen und sie durch ein Skript gejagt habe, erhielt ich Folgendes:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ws\/ru\/de\/wsrudeufw3pzwrrxtxtn1pjeqvu.png\"><img decoding=\"async\" alt=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/f2533ddfae7d5f85d0e86902b9b7005f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Startknoten - Start General, und unten drei Ausgangsnodes: Sch\u00fcler 'ist eingeschlafen', hat den Kurs gewechselt, hat den Kurs beendet.<\/p>\n<ul>\n<li>'Ist eingeschlafen' bedeutet, dass er die Lektionen nicht mehr besucht, wahrscheinlich hat er aufgegeben. Wir nennen diesen Zustand optimistisch 'eingeschlafen', da er theoretisch die M\u00f6glichkeit hat, das Lernen fortzusetzen. Das schlechteste Ergebnis f\u00fcr uns.<\/li>\n<li>'Kurs gewechselt' - er ist von General zu etwas anderem gewechselt und ist aus unserer Markow-Kette verschwunden.<\/li>\n<li>'Kurs beendet' - idealer Zustand, die Person hat 80 % der Lektionen besucht (nicht alle Lektionen sind verpflichtend).<\/li>\n<\/ul>\n<p>\nDas Erreichen des Knotens 'successful class' bedeutet, dass die Lektion auf unserer Plattform zusammen mit dem Lehrer erfolgreich absolviert wurde. Es dokumentiert den Fortschritt im Kurs und das N\u00e4herkommen zum gew\u00fcnschten Ergebnis - 'Kurs beendet'. Es ist uns wichtig, dass die Sch\u00fcler ihn so oft wie m\u00f6glich besuchen.<\/p>\n<p>Um genauere quantitative Schlussfolgerungen f\u00fcr die mobile Anwendung (Knoten 'app session') zu erhalten, haben wir separate Ketten f\u00fcr jeden der Endknoten erstellt und anschlie\u00dfend paarweise die Gewichte der Kanten verglichen:<\/p>\n<ul>\n<li>von der app session zur\u00fcck zu ihr selbst;<\/li>\n<li>von der app session zur successful class;<\/li>\n<li>von der successful class zur 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=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/fc68ca73b379f57a38b53f0c31e75cb1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Links - Sch\u00fcler, die den Kurs beendet haben, rechts - 'eingeschlafene'<\/i><\/p>\n<p>Diese drei Kanten zeigen die Verbindung zwischen dem Erfolg des Sch\u00fclers und der Nutzung der mobilen Anwendung. Wir erwarteten, dass die Verbindung mit der App bei den Sch\u00fclern, die den Kurs abgeschlossen haben, st\u00e4rker ist als bei den 'eingeschlafenen'. In Wirklichkeit haben wir jedoch genau gegenteilige Ergebnisse erhalten:<\/p>\n<ul>\n<li>Wir haben festgestellt, dass verschiedene Benutzergruppen unterschiedlich mit der mobilen Anwendung interagieren;<\/li>\n<li>Erfolgreiche Studenten nutzen die mobile App weniger intensiv;<\/li>\n<li>Schlafende Studenten nutzen die mobile App aktiver.<\/li>\n<\/ul>\n<p>\nDas bedeutet, dass die \u201eschlafenden\u201c Studenten immer mehr Zeit in der mobilen App verbringen und letztendlich f\u00fcr immer darin bleiben.<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/45c17a908e2178edd99e340f34657cad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZun\u00e4chst waren wir \u00fcberrascht, aber nach eingehender \u00dcberlegung erkannten wir, dass dies ein ganz nat\u00fcrlicher Effekt ist. Ich habe in der Vergangenheit eigenst\u00e4ndig Franz\u00f6sisch gelernt, indem ich zwei Werkzeuge genutzt habe: die mobile App und Grammatikvorlesungen auf YouTube. Anfangs habe ich die Zeit zwischen den beiden im Verh\u00e4ltnis 50 zu 50 aufgeteilt. Aber die App macht mehr Spa\u00df, es gibt Gamification, alles ist einfach, schnell und verst\u00e4ndlich, w\u00e4hrend man sich in die Vorlesungen vertiefen, etwas aufschreiben und in einem Heft \u00fcben muss. Allm\u00e4hlich habe ich immer mehr Zeit mit meinem Smartphone verbracht, bis der Anteil auf 100% angestiegen ist: Wenn man drei Stunden darin verbringt, entsteht ein falsches Gef\u00fchl der erledigten Arbeit, weshalb man keine Lust hat, etwas zu h\u00f6ren oder zu lernen.<\/p>\n<p>Aber wie kann das sein? Schlie\u00dflich haben wir die mobile App extra entwickelt, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/312126\/\">haben die Vergessenskurve von Ebbinghaus integriert,<\/a><\/noindex>, gamifiziert und sie ansprechend gestaltet, damit die Leute Zeit darin verbringen, und jetzt stellt sich heraus, dass sie nur ablenkt? Tats\u00e4chlich liegt der Grund darin, dass das Team der mobilen App seine Aufgaben zu gut gel\u00f6st hat, wodurch sie ein gro\u00dfartiges, eigenst\u00e4ndiges Produkt geschaffen haben, das aus unserem \u00d6kosystem herausf\u00e4llt.<\/p>\n<p>Am Ende der Forschung kam das Verst\u00e4ndnis zustande, dass die mobile App irgendwie ver\u00e4ndert werden muss, damit sie weniger vom Kern des Lernens ablenkt. Und zwar sowohl f\u00fcr Kinder als auch f\u00fcr Erwachsene. Diese Arbeit wird derzeit durchgef\u00fchrt.<\/p>\n<h2>Zweiter Fall: Bugs im Onboarding<\/h2>\n<p>\nOnboarding ist ein optionales zus\u00e4tzliches Verfahren bei der Registrierung eines neuen Sch\u00fclers, das potenzielle technische Probleme in der Zukunft vermeidet. Das Basisszenario sieht vor, dass sich eine Person auf der Landingpage registriert, Zugang zum pers\u00f6nlichen Bereich erh\u00e4lt, kontaktiert wird und eine Einf\u00fchrungsstunde erh\u00e4lt. Dabei stellen wir einen hohen Anteil an technischen Schwierigkeiten w\u00e4hrend der Einf\u00fchrungsstunde fest: falsche Browser-Version, Mikrofon oder Ton funktionieren nicht, der Lehrer kann nicht sofort eine L\u00f6sung anbieten, und das alles ist besonders schwierig, wenn es um Kinder geht. Deshalb haben wir eine zus\u00e4tzliche Anwendung im pers\u00f6nlichen Bereich entwickelt, in der vier einfache Schritte durchgef\u00fchrt werden k\u00f6nnen: den Browser, die Kamera, das Mikrofon pr\u00fcfen und best\u00e4tigen, dass die Eltern w\u00e4hrend der Einf\u00fchrungsstunde anwesend sein werden (schlie\u00dflich zahlen sie f\u00fcr die Ausbildung der Kinder).<\/p>\n<p>Diese wenigen Seiten des Onboardings zeigten folgendes Trichterdiagramm:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/l5\/pt\/aj\/l5ptajlgx6msydvswctke1w505w.jpeg\"><img decoding=\"async\" alt=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/5e949640d4d4f8a70dc4fd677e3c93a7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>1: Ein Einstiegsblock mit drei leicht unterschiedlichen (je nach Kunde) Login-Passwort Eingabeformularen.<br \/>\n2: H\u00e4kchen f\u00fcr die Zustimmung zum zus\u00e4tzlichen Onboarding-Verfahren.<br \/>\n2.1-2.3: \u00dcberpr\u00fcfung der Anwesenheit des Elternteils, der Chrome-Version und des Tons.<br \/>\n3: Schlussblock.<\/i><\/p>\n<p>Es sieht sehr nat\u00fcrlich aus: In den ersten beiden Schritten scheitert ein Gro\u00dfteil der Besucher, weil sie erkennen, dass sie etwas ausf\u00fcllen und \u00fcberpr\u00fcfen m\u00fcssen, und keine Zeit haben. Wenn der Kunde bis zur dritten Stufe gelangt ist, wird er mit Sicherheit auch das Ende erreichen. Im Trichter sind keinerlei Gr\u00fcnde zu erkennen, um an etwas zu zweifeln.<\/p>\n<p>Dennoch haben wir uns entschieden, unser Onboarding nicht anhand des klassischen eindimensionalen Trichters, sondern mithilfe einer Markov-Kette zu analysieren. Wir haben etwas mehr Ereignisse einbezogen, ein Skript gestartet und Folgendes erhalten:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/pi\/e6\/9p\/pie69p-4rmwaqdqqunigm3oz8am.png\"><img decoding=\"async\" alt=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/44c094cb0be013beac00c0af5a3801be.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Man kann in diesem Chaos eindeutig nur eines verstehen: Etwas ist schiefgelaufen. Der Onboarding-Prozess ist linear, das ist im Design vorgesehen, und es sollte dort definitiv kein so komplexes Geflecht von Verbindungen geben. Und hier ist sofort ersichtlich, dass der Benutzer zwischen den Schritten hin und her geworfen wird, zwischen denen es eigentlich keine \u00dcberg\u00e4nge geben sollte.<\/p>\n<p><img decoding=\"async\" alt=\"Wie wir Markov-Ketten zur Entscheidungsbewertung und Fehlersuche verwenden. Mit einem Python-Skript\" src=\"\/wp-content\/uploads\/2019\/10\/f43fcabaa7b773c17741b4eaa927b600.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Gr\u00fcnde f\u00fcr dieses merkw\u00fcrdige Bild k\u00f6nnten zwei sein:<\/p>\n<ul>\n<li>Fehler haben sich in die Log-Datenbank eingeschlichen;<\/li>\n<li>Fehler sind im Produkt selbst vorhanden \u2014 im Onboarding.<\/li>\n<\/ul>\n<p>\nDer erste Grund ist wahrscheinlich vorhanden, aber es ist zeitaufwendig, ihn zu \u00fcberpr\u00fcfen, und das Korrigieren von Protokollen wird das Benutzererlebnis nicht verbessern. Bei dem zweiten Grund, falls er existiert, musste dringend etwas unternommen werden. Daher haben wir uns auf die Suche nach Knoten begeben, fehlerhafte Verbindungen identifiziert und die Ursachen f\u00fcr deren Entstehung gesucht. Wir haben festgestellt, dass einige Benutzer sich in einer Schleife gefangen haben, andere aus der Mitte zum Anfang zur\u00fcckfielen, und Dritte im Grunde genommen nicht \u00fcber die ersten beiden Schritte hinauskommen konnten. Wir haben die Daten an QA \u00fcbergeben \u2013 und ja, es stellte sich heraus, dass es im Onboarding viele Bugs gab: es ist ein eher nebens\u00e4chliches, etwas improvisiertes Produkt, das nicht ausreichend getestet wurde, da man keine Probleme erwartete. Jetzt hat sich der gesamte Registrierungsprozess ge\u00e4ndert.<\/p>\n<p>Diese Geschichte hat uns eine unerwartete Anwendung von Markow-Ketten im Bereich QA gezeigt.<\/p>\n<h3>Probiert es selbst aus!<\/h3>\n<p>\nIch habe mein <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/BartolomeuD\/markov-chain\">Python-Skript zur Schulung von Markow-Ketten<\/a><\/noindex> \u00f6ffentlich zug\u00e4nglich gemacht \u2013 viel Spa\u00df damit. Die Dokumentation befindet sich auf GitHub, Fragen k\u00f6nnen hier gestellt werden, ich werde versuchen, alles zu beantworten.<\/p>\n<p>Und hier sind n\u00fctzliche Links: <noindex><a rel=\"nofollow\" href=\"https:\/\/networkx.github.io\/\">die Bibliothek NetworkX<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.graphviz.org\/\">Visualisierer Graphviz<\/a><\/noindex>. Und hier gibt es <noindex><a rel=\"nofollow\" href=\"http:\/\/habr.com\/ru\/post\/455762\">einen Artikel auf Habr\u00e9<\/a><\/noindex> \u00fcber Markow-Ketten. Die Grafiken im Artikel wurden mit Hilfe von <noindex><a rel=\"nofollow\" href=\"https:\/\/gephi.org\/\">Gephi erstellt.<\/a><\/noindex>.<br \/>\n<br \/>Quelle: <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-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - 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.\" \/>\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\/de\/blog\/news\/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) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/news\/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\udd47Wie wir Markow-Ketten zur Bewertung von Entscheidungen und zur Fehlersuche nutzen. Mit einem Python-Skript | ProHoster","description":"Es ist uns wichtig zu verstehen, was w\u00e4hrend des Lernens mit unseren Studenten passiert und wie diese Ereignisse das Ergebnis beeinflussen, deshalb erstellen wir eine Customer Journey Map \u2013 eine Karte des Kundenerlebnisses.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/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":"de_DE","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.","og:url":"https:\/\/prohoster.info\/de\/blog\/news\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/39546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=39546"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/39546\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/39547"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=39546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=39546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=39546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}