对我们而言,重要的是要了解学生在培训期间会发生什么,以及这些事件如何影响结果,因此我们建立了“客户旅程图”(即客户体验图)。 毕竟,学习过程不是一个连续的,不可或缺的过程,它是一系列相互关联的事件和学生的行为,并且这些行为在不同的学生之间可能会有很大差异。 因此,他上了一堂课:下一步该怎么做? 去功课吗 启动移动应用程序? 换课程,问换老师吗? 马上进入下一课? 还是只是失望而已? 通过分析这张卡片,是否有可能确定导致课程成功完成的模式,反之亦然,即学生的“下岗”?

通常,使用专门的,非常昂贵的封闭源代码工具来构建CJM。 但是我们想提出一个简单的方法,只需要最小的努力,甚至可能需要开源。 因此,想法开始使用马尔可夫链-我们成功了。 我们绘制了一张地图,将学生的行为数据解释为图表,看到了对全球业务问题的完全不明显的答案,甚至发现了深藏的错误。 我们在开源Python脚本解决方案的帮助下完成了所有这些工作。 在本文中,我将讨论两种情况,结果非常明显,并与所有人共享该脚本。
因此,马尔可夫链显示了事件之间转换的概率。 这是原始的Wikipedia示例:

在此,“ E”和“ A”是事件,箭头是它们之间的过渡(包括从事件到事件的过渡),箭头权重是过渡的概率(“加权定向图”)。
用什么
该链由标准Python功能进行了培训,该功能由学生活动日志提供。 生成的矩阵上的图形由NetworkX库构建。
日志如下所示:

这是一个包含三列表格的csv文件:学生ID,事件名称,发生时间。 这三个字段足以跟踪客户的动向,绘制地图并最终获得马尔可夫链。
该库以.dot或.gexf格式返回构造的图形。 为了直观地显示前者,您可以使用免费的Graphviz软件包(gvedit工具),我们也使用了.gexf和Gephi,它们也是免费的。
接下来,我想举两个使用马尔可夫链的例子,这使我们可以重新审视我们的目标,教育过程和Skyeng生态系统本身。 好吧,修复错误。
第一种情况:移动应用
首先,我们通过最受欢迎的产品“通用”探索了学生的学习方式。 那时,我在Skyeng儿童部工作,我们想看看移动应用程序如何有效地与孩子们的听众一起工作。
取日志并通过脚本运行它们,我得到了这样的内容:

开始节点是“开始常规”,下面是三个输出节点:学生“入睡”,更改课程,完成课程。
- 睡着了,“睡着了”-这意味着不再上课,很可能他摔倒了。 我们乐观地称这种情况为“睡着了”,因为 从理论上讲,他仍然有机会继续他的学业。 对我们来说最糟糕的结果。
- 放弃了将军,改变了路线-从将军转到了其他地方,迷失了我们的马尔可夫链。
- 完成课程,我从该课程毕业-完美的状态,该人已完成80%的课程(并非所有课程都需要)。
进入成功班级节点意味着与老师在我们平台上成功完成课程。 它捕获课程的进度以及对所需结果的近似值-“课程完成”。 对我们来说重要的是,学生要尽可能多地参加。
为了获得针对移动应用程序(应用程序会话节点)的更准确的定量结论,我们为每个最终节点构建了单独的链,然后成对比较边缘的权重:
- 从应用会话回到它;
- 从应用会话到成功上课;
- 从成功的课程到应用会话。
左侧-完成课程的学生,右侧-“熟睡”这三个肋骨显示了学生的成功与他们对移动应用程序的使用之间的关系。 我们希望看到完成课程的学生比那些“入睡”的学生与应用程序的联系更紧密。 但是,实际上,他们得到的结果恰恰相反:
- 我们确保不同的用户组与移动应用程序进行不同的交互;
- 成功的学生较少使用移动应用程序;
- 入睡的学生更加积极地使用移动应用程序。
这意味着“入睡”的学生开始在移动应用程序中花费越来越多的时间,最后,它永远存在。

起初,我们很惊讶,但经过思考,我们意识到这是完全自然的结果。 一次,我使用两种工具独立学习法语:移动应用程序和YouTube上的语法讲座。 最初,我将时间以50到50的比例分配。但是应用程序更有趣,游戏化了,一切都很简单,快速且易于理解,但是您需要深入学习讲座,写点东西,在笔记本上练习。 渐渐地,我开始在智能手机上花费更多的时间,直到它的占有率提高到100%:如果将其挂起三个小时,就会产生一种错误的完成感,因此就没有去听东西的欲望。
但是,如何呢? 毕竟,我们专门创建了一个移动应用程序,
该应用程序
建立在Ebbinghaus曲线中 ,对其进行了游戏化,使其具有吸引力,以便人们在其中花费时间,但事实证明,它只会分散他们的注意力? 实际上,原因是移动应用程序团队在其任务中做得很好,因此,它变成了很酷的自给自足产品,并开始脱离我们的生态系统。
研究的结果是,人们了解到需要对移动应用程序进行某种方式的更改,以减少它对主要学习过程的依赖。 而且,无论儿童还是成人。 现在这项工作正在进行中。
案例二:入门错误
入学是注册新学生时的可选附加程序,可避免将来出现潜在的技术问题。 基本方案意味着,一个人在登录页面上注册,可以访问其个人帐户,与他联系并进行入门课程。 同时,我们在入门课程中注意到了很大的技术难题:错误版本的浏览器,麦克风或声音无法正常工作,老师无法立即提出解决方案,而对于儿童而言,这一切尤其困难。 因此,我们在您的个人帐户中开发了一个附加应用程序,您可以执行四个简单步骤:检查您的浏览器,摄像头,麦克风,并确认在入门课程中父母会在那里(毕竟,他们为孩子的教育付费)。
入职培训的以下几页显示了此渠道:
1:启动块具有三种略有不同(取决于客户端)的登录名/密码输入形式。
2:寒鸦同意附加的入职程序。
2.1-2.3:检查父级,Chrome版本和声音的存在。
3:最后一块。看起来很自然:在前两个步骤中,大多数访问者合并,意识到需要填写,检查,但是没有时间。 如果客户已到达第三步,那么他几乎可以肯定会到达最后一步。 漏斗上没有一个单一的原因可疑。
尽管如此,我们还是决定不使用经典的一维漏斗而是使用马尔可夫链来分析入职情况。 我们打开了一些事件,运行了脚本并得到了这个:

在这种混乱中,只有一件事可以清楚地理解:出了点问题。 入职过程是线性的,它是设计中固有的,它不应该具有这样的联系网络。 在这里,您可以立即看到用户在步骤之间抛出,在这些步骤之间根本不应该进行任何转换。

这种奇怪的画面可能有两个原因:
第一个原因最有可能发生,但是检查它非常耗时,并且修复日志无助于改善UX。 但是对于第二种(如果有的话),迫切需要做些事情。 因此,我们去检查节点,找出不应该出现的边缘,寻找它们发生的原因。 我们看到,有些用户以循环的方式走来走去,其他的则从中间到开始就掉了下来,而第三条原则上不能走出前两个步骤。 数据已传输到质量检查-是的,事实证明在导入时存在足够的错误:这是副产品,有点像拐杖产品,尚未经过深入测试,因为 没想到有什么问题。 现在整个记录过程已经改变。
这个故事向我们展示了马尔可夫链在质量保证领域中的意外应用。
自己尝试!
我发布了我的
Python脚本,用于在公共领域中
学习马尔可夫链 -将其用于健康。 GitHub上的文档,可以在这里提出问题,我将尽力回答所有问题。
良好且有用的链接:
NetworkX库 ,
Graphviz可视化工具 。
在哈布雷(Habré)上,有一篇关于马尔可夫链
的文章 。 本文中的图形是使用
Gephi制作的 。