前几天,hunter提供了不少关于数据挖掘资源的链接,其中一个是在excel上实现的决策树模型。正好,现在有个分析能用的上,便小试一次,到不难上手。因此此处回顾一下初次体验,大家也可以下载附件试试。
决策树是一种比较简单的分类模型,输入的一堆变量,定义一个目标变量,当然这个变量应该是离散的,例如A、B、C。最后能够形成若干条规则,若干个if then达到A,若干个if then达到B,得到C。这种模型好理解,比什么线性回归,还有什么神经病网络要直观一些。挺适合我这样的非挖掘专业人员。
用这个excel来实现决策树分析,步骤也很简单,说是四步:输入数据、设定参数、查看结果、生成规则。其实我看就三步:输入数据、设定参数、生成结果,当然这三步可能得反复好几次。有关的详细描述,都在Readme页里面,当然都是英文的,而且单元格被保护了,也没法去修改。
建议用自己的数据尝试一次。每个变量,在这个excel中,叫做predictor,表现为字段。变量有四种类型,忽略的(omit)、离散变量(Cat)、连续变量(Cont),以及唯一的一个目标变量(Class),这个变量必须得是离散的。将数据拷贝到Data页,从L24单元格开始,当然,如果带标题行的话,就从L23格开始。然后,在第22行,为每个字段,设定变量类型。注意的是,如果变量类型设定为Cat,那么变量值可不能都一样的,否则运行会中断。而记录数,在挖掘里面叫做Observation,要在10到一万之间。
数据准备好了,接着得设定参数。诸如设定节点分裂条件(不明白这是啥),设定树的大小(节点大小、深度、纯度(啥玩意儿?)),以及设定训练集、验证集、规则生成的条件(根据置信度、支持率来)。它会给你两个选项来选择验证集,一是随机抽取百分之多少,二是取最后多少条记录。
关于support、confidence、capture这三个率,得好好说到一下,挺绕的。比如150条记录里面,有50条A。根据决策树的规则,判断这150条记录里面,有70条记录满足条件,会是A,但实际上只有30条记录确实是A。那么支持率(support)就是判断出来的70条比上总数,70/150=47%,这个率可以表示这条规则是否可以广泛采用的。而置信度(confidence)为30/70=43%。看,这个率表示规则的准确性,说明还有57%是判断错了。最后的命中率(capture)就是通过规则判断出来实际是A的30条跟所有实际的50个A相比,等于60%。
说得我自己都晕了。这里的支持率、置信度跟前面几次谈到的关联规则还是有些区别。在挖掘领域,也不知道这几个率是否有标准的说法,反正曾经听过不同的人对这几个率的不同解释。另外还有什么查全率之类的东东,跟同事讨论半天,发现理解都不大一样。唉,再找机会将这些术语定一下吧。
回过头来看这个决策树,已经将数据拷贝进去,并且设定好选项。按下UserInput页的Build Tree按钮,唰唰地,树就构造好了。在Tree页,可以看到整棵树的形状。NodeView是关于节点的每个数据分布,Result页为分析结论,包括总共训练集记录多少条,验证集多少条。以及,实际和预测的差异有多大等等。最后一Rule页,是生成的规则,用IF Then方式表达出来,比较清晰。并且给出每条规则的support、confidence和capture。
什么样的结论是好的?这是个不好回答的问题。依靠那三个率看判断是一种思路,适当调整参数重新运行,看这几个指标是否能够达到比较高的值。当然,还得依靠业务感觉来判断。比如,我预先期盼有两个变量对目标影响是比较大的,但最后的树并没有显示出来,很是失望。一时也不太敢相信这结果,矛盾呐。
...说得我自己都晕了。...