目录
在学习算法、做实验、讲解概念、原理过程中,经常需要针对性极高的数据支持,然而现实或网上并非时时存在相应场景和数据记录。那么这一需求怎么解决呢?下面以id3算法为例,为大家展示如何建构数据。
1、数据内在规律:小组评优
假设有这样一个情景:学校为进一步鼓励全校师生勤奋向上,决定在二个月后召开的全校期中考试总结大会上对各班A等小组颁奖给予表扬。陈老师积极响应学校号召,将其所带三(二)班二十名同学分为4个小组,小组与小组间竞争,进行定期评级。经过一段时间的观察记录,得到如下数据:
那么如何对各小组进行评级呢?陈老师仔细查阅学校指导精神,结合自己多年教学经验,并与同事张老师、王老师仔细商讨后,总结出如下两条A级评级规则:
成绩优秀型小组:每位成员总成绩star1,且思想品德better或best、学习表现medium或high;
思想品德型小组:每位成员思想品德best,且学习表现high。
于是,评级结果如下:
哎呀,我的妈,怎么这么多A?
陈老师想:虽然荣誉证书才两个,可这却是对多少孩子辛苦付出的肯定啊,值!
如果要问这张表中的数据有什么内在规律?即A的评定的依据是什么?答案很明显,无非那两条A级评级规则。
2、数据外在规律:id3与决策树
一天,隔壁谭老师来找陈老师借鉴经验,陈老师正忙着上课便送他一张数据表。谭老师接过一看,顿时傻眼:这些数据是如何评出A级的呢?能有什么规律啊?幸好最近在学习id3算法,说不定可以用来分析分析。想到这里,谭老师不禁得意地摸摸什么也没有的下巴,狠狠地点了点头。
一顿操作猛如虎,去掉连续的“学号”列,去掉冗余的“小组”列,就只剩下:
顺手转换成csv:
在上面csv文件中,第二行是方便算法处理所加的英文列名。生成的决策树如下:
什么?怎么还看不明白。没关系,这棵决策树生成的决策过程如下:
为什么这棵树中有些地方和数据表对比起来怪怪的?安啦,从这个决策过程反推一下不就OK吗?比如分支缺失,如图
这里的STUD的分支为什么只有两个?这是因为在现有样本基础上选择STUD,也就是Study后,特征Study的值就只有这两个。
谭老师把陈老师请过来,献上一杯茶,并指指决策代码。陈老师沉默半晌:真有你的,这也行!这决策代码虽然和我的评A规则描述不同,只是一种外在观察,但能够反映内在规律,虽然这有可能不是规律的全部内涵,充满局部性(视数据齐全程度而定,所以需要不断学习)。
3、如何建构数据
上面这个情景不是用来证实什么的,其中解释、说明id3算法的应用方式,以及外在观察统计和内在规律的一致性。
建构数据是一项很有意义的事项。一套规则实施的效果如何,在实施前得有足够多的数据来测试,以支撑其完善。一个程序写的精不精准,得有足够多足够丰富的数据来测试,以发现其中潜在错误。一条假设正确不正确,也得有足够多、相对足够全的数据来验证,以确定适用它的条件范围。
那么,如何建构id3适用数据?
请仔细体会上面的这个情景事例,然后再来总结:
在纸上画出一棵决策树—>随机选择路径、随机选择指定范围数据生成数据表-->用id3算法在计算机中生成决策树。
明天再分享一个例子。