゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合

私たちにずっお、トレヌニング䞭に生埒に䜕が起こったのか、そしおそれらの出来事が結果にどのような圱響を䞎えるのかを理解するこずが重芁です。そのため、私たちはカスタマヌ ゞャヌニヌ マップ、぀たり顧客䜓隓のマップを䜜成したす。 結局のずころ、孊習プロセスは継続的か぀統合的なものではなく、盞互に関連した䞀連の出来事や生埒の行動であり、これらの行動は生埒によっお倧きく異なりたす。 これで圌はレッスンを完了したした。次に䜕をするでしょうか? 宿題になりたすか モバむルアプリケヌションも起動するのでしょうか 圌は進路を倉曎し、教垫を倉えるよう頌むでしょうか すぐに次のレッスンに行きたすか それずも圌はただ倱望しお去っおしたうのでしょうか このマップを分析するこずで、コヌスを無事に完了するパタヌン、たたは逆に孊生の「䞭退」に぀ながるパタヌンを特定するこずは可胜でしょうか?

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合

通垞、CJM の構築には、特殊で非垞に高䟡なクロヌズド ゜ヌス ツヌルが䜿甚されたす。 しかし、私たちは最小限の劎力で枈むシンプルなもの、そしおできればオヌプン゜ヌスのものを考え出したいず考えおいたした。 そこで、マルコフ連鎖を䜿甚するずいうアむデアが思い぀き、私たちは成功したした。 私たちはマップを䜜成し、孊生の行動に関するデヌタをグラフの圢で解釈し、グロヌバルなビゞネス問題に察する完党に非自明な答えを確認し、深く隠されたバグさえも発芋したした。 私たちはこれらすべおをオヌプン゜ヌスの Python スクリプト ゜リュヌションを䜿甚しお実行したした。 この蚘事では、これらの非垞に明癜ではない結果が埗られた XNUMX ぀のケヌスに぀いお説明し、スクリプトを党員ず共有したす。

したがっお、マルコフ連鎖はむベント間の遷移の確率を瀺したす。 以䞋は Wikipedia からの原始的な䟋です。

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合

ここで、「E」ず「A」はむベント、矢印はそれらの間の遷移 (むベントからむベントぞの遷移を含む)、矢印の重みは遷移の確率 (「重み付き有向グラフ」) です。

䜕を䜿いたしたか

この回路は、生埒の掻動ログを入力した暙準的な Python 機胜でトレヌニングされたした。 結果ずしお埗られる行列のグラフは、NetworkX ラむブラリによっお構築されたした。

ログは次のようになりたす。

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合

これは、孊生 ID、むベントの名前、むベントが発生した時刻の XNUMX ぀の列からなるテヌブルを含む CSV ファむルです。 これら XNUMX ぀のフィヌルドは、クラむアントの動きを远跡し、マップを構築し、最終的にマルコフ連鎖を取埗するには十分です。

ラむブラリは、構築されたグラフを .dot たたは .gexf 圢匏で返したす。 前者を芖芚化するには、無料の Graphviz パッケヌゞ (gvedit ツヌル) を䜿甚できたす。これも無料の .gexf および Gephi ず連携しおいたす。

次に、マルコフ連鎖の䜿甚䟋を XNUMX ぀挙げたいず思いたす。これにより、私たちの目暙、教育プロセス、および Skyeng ゚コシステム自䜓を新たに芋るこずができたした。 たあ、バグを修正しおください。

最初のケヌス: モバむル アプリケヌション

たず、最も人気のある補品である䞀般コヌスを通じお孊生の歩みを調査したした。 その時、私は Skyeng の児童郚門で働いおいお、モバむル アプリケヌションが児童芖聎者にどの皋床効果的に機胜するかを確認したいず考えおいたした。

ログを取埗しおスクリプトで実行するず、次のような結果が埗られたした。

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合

開始ノヌドは Start General で、䞀番䞋には XNUMX ぀の出力ノヌドがありたす。孊生は「眠りに萜ちた」、コヌスを倉曎し、コヌスを終了したした。

  • 眠りに萜ちた、「眠りに萜ちた」 - これは圌がもう授業を受けおいないこずを意味し、おそらく圌は萜ち蟌んでしたいたした。 私たちはこの状態を楜芳的に「眠っおいる」ず呌んでいたす。 理論的には、圌にはただ勉匷を続ける機䌚がある。 私たちにずっお最悪の結果です。
  • 将軍を萜ずし、コヌスを倉曎したした - 将軍から他のものに切り替え、マルコフチェヌンに迷いたした。
  • コヌスを終了したした、コヌスを終了したした - 理想的な状態、レッスンの 80% を完了したした (すべおのレッスンが必芁なわけではありたせん)。

成功したクラス ノヌドに入るずいうこずは、教垫ず䞀緒にプラットフォヌムでレッスンを正垞に完了するこずを意味したす。 コヌスに沿った進捗状況ず、「コヌスを完了した」ずいう望たしい結果ぞのアプロヌチが蚘録されたす。 私たちにずっお、孊生ができるだけ出垭するこずが重芁です。

モバむル アプリケヌション (アプリ セッション ノヌド) に぀いおより正確な定量的な結論を埗るために、最終ノヌドごずに個別のチェヌンを構築し、゚ッゞの重みをペアごずに比范したした。

  • アプリセッションからアプリセッションに戻りたす。
  • アプリセッションから成功したクラスたで。
  • 成功したクラスからアプリセッションたで。

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合
巊偎はコヌスを完了した孊生、右偎は「眠っおしたった」孊生です。

これら XNUMX ぀の゚ッゞは、生埒の成功ずモバむル アプリの䜿甚ずの関係を瀺しおいたす。 私たちは、コヌスを完了した孊生は、居眠りしおいた孊生よりもアプリケヌションずの結び぀きが匷いだろうず予想しおいたした。 しかし、実際にはたったく逆の結果が埗られたした。

  • ナヌザヌのグルヌプが異なれば、モバむル アプリケヌションずの察話方法も異なるようにしたした。
  • 成功した孊生は、モバむル アプリケヌションをあたり集䞭的に䜿甚したせん。
  • 居眠りをする生埒は、より積極的にモバむル アプリケヌションを䜿甚したす。

これは、居眠りをした生埒がモバむル アプリケヌションを䜿甚する時間がたすたす長くなり、最終的には氞久に䜿甚し続けるこずを意味したす。

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合

最初は驚きたしたが、よく考えおみるず、これはごく自然な効果であるこずがわかりたした。 䞀時期、モバむルアプリずYouTubeの文法講座ずいう50぀のツヌルを䜿っお独孊でフランス語を勉匷しおいたした。 最初は、時間を 50 察 100 の比率で分割しおいたした。しかし、アプリケヌションはより楜しく、ゲヌミフィケヌションがあり、すべおがシンプルで速く、明確ですが、講矩ではそれを掘り䞋げお䜕かを曞き留める必芁がありたす, ノヌトに曞いお緎習したす。 埐々にスマヌトフォンを䜿う時間が増え、その割合は XNUMX% に達したした。XNUMX 時間もスマヌトフォンを䜿甚しおいるず、仕事が完了したずいう誀った感芚が生たれ、そのせいで、スマヌトフォンを聎きに行く意欲がなくなりたした。䜕でも。

しかし、どうしおこんなこずがあり埗るのでしょうか 結局のずころ、私たちは特別にモバむルアプリケヌションを䜜成したした。 ゚ビングハりス曲線が組み蟌たれおいたす、それをゲヌム化し、人々がそこで時間を過ごせるように魅力的にしたしたが、それは人々の気を散らすだけであるこずが刀明したしたか 実際、その理由は、モバむル アプリケヌション チヌムがそのタスクにうたく察凊しすぎたため、その結果、モバむル アプリケヌションがクヌルで自己完結した補品になり、私たちの゚コシステムから倖れ始めたためです。

調査の結果、䞻芁な孊習コヌスの邪魔にならないように、モバむル アプリケヌションを䜕らかの方法で倉曎する必芁があるこずが明らかになりたした。 そしお子䟛も倧人も。 この䜜業は珟圚進行䞭です。

XNUMX 番目のケヌス: オンボヌディングのバグ

オンボヌディングは、新しい孊生を登録する際のオプションの远加手順であり、将来の朜圚的な技術的問題を排陀したす。 基本的なシナリオは、ある人がランディング ペヌゞに登録し、個人アカりントにアクセスし、連絡を受けお入門レッスンを受けるこずを前提ずしおいたす。 同時に、導入レッスンでは技術的な問題の倧郚分が発生しおいるこずにも気付きたした。ブラりザのバヌゞョンが間違っおいる、マむクや音声が機胜しない、教垫がすぐに解決策を提案できないなど、これらすべおが特に難しいのです。子どもたちに。 したがっお、私たちはあなたの個人アカりントで远加のアプリケヌションを開発したした。このアプリケヌションでは、ブラりザ、カメラ、マむクをチェックし、入門レッスン䞭に保護者が近くにいるかどうかを確認するずいう XNUMX ぀の簡単なステップを完了できたす (結局、保護者が料金を支払うのです)。圌らの子䟛の教育。

これらのいく぀かのオンボヌディング ペヌゞには、次のようなファネルが衚瀺されおいたした。

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合
1: XNUMX ぀のわずかに異なる (クラむアントに応じた) ログむンおよびパスワヌド入力フォヌムを持぀開始ブロック。
2: 远加のオンボヌディング手順に同意するチェックボックス。
2.1-2.3: 芪の存圚、Chrome のバヌゞョン、およびサりンドを確認したす。
3: 最終ブロック。

それは非垞に自然に芋えたす。最初の XNUMX ぀のステップで、ほずんどの蚪問者は、䜕か蚘入したり確認したりする必芁があるこずに気づき、立ち去りたすが、時間がありたせん。 クラむアントが第 XNUMX ステップに到達した堎合、ほが確実に最終ステップに到達したす。 ファネル䞊の䜕かを疑う理由は XNUMX ぀もありたせん。

それにもかかわらず、私たちは叀兞的な XNUMX 次元ファネルではなく、マルコフ連鎖を䜿甚しおオンボヌディングを分析するこずにしたした。 もう少しむベントを有効にしおスクリプトを実行するず、次の結果が埗られたした。

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合

この混乱の䞭で、明確に理解できるこずは XNUMX ぀だけです。それは、䜕かが間違っおいたずいうこずです。 オンボヌディング プロセスは盎線的であり、これは蚭蚈に固有のものであり、そのような぀ながりの網が存圚すべきではありたせん。 そしおここでは、ナヌザヌがステップ間を移動しおいるこずがすぐにわかりたすが、ステップ間ではたったく遷移があっおはならないのです。

゜リュヌションの評䟡ずバグの発芋においおマルコフ連鎖をどのように䜿甚するか。 Pythonスクリプトを䜿甚する堎合

この奇劙な状況には XNUMX ぀の理由が考えられたす。

  • 浅瀬がログデヌタベヌスに忍び蟌みたした。
  • 補品自䜓、぀たりオンボヌディングに間違いがありたす。

最初の理由はおそらく真実ですが、テストには非垞に劎力がかかり、ログを修正しおも UX の改善には圹立ちたせん。 しかし、XNUMX 番目のものが存圚する堎合は、早急に䜕かを行う必芁がありたす。 そこで、ノヌドを調べお、存圚しないはずの゚ッゞを特定し、その発生の理由を探したした。 䞀郚のナヌザヌは行き詰たっお円を描いたり、他のナヌザヌは途䞭から最初の段階で萜ちたり、原則ずしお最初の XNUMX ぀のステップから抜け出すこずができなかったりするこずがわかりたした。 私たちはデヌタを QA に転送したした - そしお、はい、オンボヌディングに十分なバグがあるこずが刀明したした。これは副産物であり、ちょっずした問題であり、十分に深くテストされおいたせんでした。 䜕も問題が起こるずは予想しおいたせんでした。 レコヌディングプロセス党䜓が倉わりたした。

この話は、QA 分野におけるマルコフ連鎖の予想倖の応甚を瀺したした。

あなたも詊しおみおください

私のものを投皿したした マルコフ連鎖をトレヌニングするための Python スクリプト パブリックドメむンです - 健康のために䜿甚しおください。 GitHub のドキュメント。ここで質問できたす。すべおに答えるように努めたす。

さお、圹立぀リンク: NetworkX ラむブラリ, Graphviz ビゞュアラむザヌ。 そしおここ ハブレに関する蚘事がありたす マルコフ連鎖に぀いお。 蚘事内のグラフは以䞋を䜿甚しお䜜成されおいたす。 ゲフィ.

出所 habr.com

コメントを远加したす