大数据与机器学习在产品设计中的应用
扫描二维码
随时随地手机看文章
最近调研了一位班主任,他反馈了一个现象:过往的几届学生中总会出现这样一种情况,原本明明是物理尖子生,但是随着学业的进展,部分学生的物理成绩开始下滑。
通过分析学生的试卷情况,老师发现学生的失分点可能是和一些数学知识相关。这是不是意味着学生物理学的不好的原因可能是在数学方面出了问题?如果真的是这样,我该怎么帮助学生?
针对这种情况,我们是否有一种方法能够找到物理知识点与数学知识点的关系呢?正好,公司产品里已经沉淀了大量关于学生的答题数据,基于关联规则分析我们可以找到学生的错题知识点的规则,最终获得知识点间的相关规律,并将该规律应用于产品中进行知识图谱的搭建。
关联分析规则
关联规则分析也称为购物篮分析,一个经典的案例就是啤酒与尿布,最早是为了发现超市销售数据库中不同的商品之间的关联关系。
美国沃尔玛超市管理人员分析销售数据时,发现了一个令人难以理解的现象:
在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品,会经常出现在同一个购物篮中,且大多出现在年轻的父亲身上。经调查发现,在美国有婴儿的家庭中,一般是母亲在家中照看婴儿,年轻的父亲去超市买尿布。父亲在购买尿布的同时,往往会顺便为自己购买啤酒。
言归正传,我们将数据库的学生答题数据进行处理,将每位学生的数据整理成如下格式(整理方式不是本文重点内容,这里就不做阐述了):
现在假设,我们有10000条数据用来统计各个学生在知识点1与知识点2的掌握情况,其中有6000位学生未掌握知识点1,8000位学生未掌握知识点2,而有4000位学生同时未掌握知识点1和知识点2。
通过这个数据我们可以产生一条两个知识点之间的关联规则,用来表示未掌握知识点1的学生也未掌握知识点2。
这里我们需要引入三个关键指标来评估这条规则的有效性,分别为支持度、置信度和提升度,这里我尽量简单的讲解下:
支持度、置信度和提升度
支持度揭示了同时未掌握知识点1与知识点2的学生在整个数据集的占比,针对上方案例支持度 Support = 4000/10000 = 40%。
支持度越小,说明同时未掌握知识点1和知识点2的学生少之又少,两个知识点之间的联系并不大;若支持度很大,则说明未掌握知识点1与知识点2的学生占比非常大,那两个知识点的相关性可能已经成为常识了,并不值得深究。
那仅了解支持度就足够了么?肯定不是,通过支持度我们仅能了解到学生同时未掌握知识点1与知识点2的频率,但我们并不能得到未掌握知识点1对未掌握知识点2起了多少决定因素。因此,我们要引入第二个指标,就是置信度。
置信度揭示了在未掌握知识点1的学生人群中,同时有多少学生也未掌握知识点2。针对上方案例,置信度 confidence = 4000/6000 = 67%。也就是意味着,在未掌握知识点1的学生中有67%的学生也未掌握知识点2。
是不是看了以上两个指标后,你会觉得知识点1与知识点2肯定存在着某种频繁关系?
毕竟67%已经不算是一个小数字了。但是我们再回看下案例,如果我们不考虑知识点1的掌握情况,只看知识点2的未掌握学生占比,这个值会高达 80% !这就表明未掌握知识点1对未掌握知识点2并不是一个正向的关系,未掌握知识点1的可能性提升反而会导致未掌握知识点2的可能性下降。
是不是很反常理?我额外掌握了一个知识点居然会让我遗忘另一个知识点。其实,从现象上讲这也是可能的。因为,人的大脑容量有限,并且部分知识点会存在干扰项,你学得多就会导致做题的时候会多种思考的维度,这可能会让学生误入歧途。(时隔多年,我终于找到我考试考不好的原因了!)。为了解决这个问题,我们引入了提升度。
当提升度为1时说明,应用关联规则和不应用关联规则产生相同的结果;
当提升度大于1时,说明应用关联规则和不应用关联规则能产生更好的结果;
当提升度小于1时,关联规则具有负相关的作用。
本例中的提升度 Lift = 67 % / 80% = 0.84,所以知识点1与知识点2是负相关的。
实际应用
解释完以上内容后,相信大家已经对关联分析规则有了一个大致的概念。接下来我们进行实操,针对所有知识点进行两两组合,分别统计在未掌握知识点1的情况下未掌握知识点2的学生出现的数量、支持度、置信度和提升度。
因为阅读本文的你很有可能并不会代码(产品经理也不需要会代码,了解整体思路即可),我们就直接给出代码运行结果(有兴趣的小伙伴可以去自学下,工具为Python,库为sys,Pandas,apriori), 我们根据出现的实例数进行降序,并找到提升度>1的知识对,得到如下表格。
通过表格我们可以发现(牵扯到公司数据安全,这里我们就使用ID来进行说明),ID为0131535的知识点与ID为0134176的知识点同时未掌握的频次最高。并且,两个知识点未掌握知识点0131535的学生,同时未掌握的知识点0134176的概率是47.23%,未掌握知识点0131535将会增加未掌握知识点0134176的可能性,提升度为1.341。
我们可以建议老师在学生若未掌握知识点0134176 的时候,可以适当讲解知识点0131535。
并且通过如上分析结果,我们可以提炼学生知识点间掌握程度的关联(也可扩展到多个知识点),一个8年级的知识点学不会可能是因为6、7年级的某些知识点没有掌握而导致的,以此来搭建学生知识图谱,帮助学生追根溯源,找到知识漏洞。