在2006年12月召开的 IEEE 数据挖掘国际会议上(ICDM, International Conference on Data Mining),与会的各位专家选出了当时的十大数据挖掘算法( top 10 data mining algorithms ),可以参见文献【1】。本博客已经介绍过的位列十大算法之中的算法包括:
因为原文较长,我尝试把它们分散成几篇。本文是决策树模型系列中的第二篇,希望你在阅读本文之前已经对《数据挖掘十大算法之决策树详解(1)》中之内容有较深入理解。决策树模型是一类算法的集合,在数据挖掘十大算法中,具体的决策树算法占有两席位置,即C4.5和CART算法,本文都会介绍到它们。
欢迎关注白马负金羁的博客 http://blog.csdn.net/baimafujinji,为保证公式、图表得以正确显示,强烈建议你从该地址上查看原版博文。本博客主要关注方向包括:数字图像处理、算法设计与分析、数据结构、机器学习、数据挖掘、统计分析方法、自然语言处理。
ID3和C4.5都是由澳大利亚计算机科学家Ross Quinlan开发的决策树构建算法,其中C4.5是在ID3上发展而来的。下面的算法描述主要出自文献【3】。
ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。具体方法是:从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一棵决策树。ID3相当于用极大似然法进行概率模型的选择。 下面我们给出一个更加正式的ID3算法的描述:
输入:训练数据集 D ,特征集 A ,阈值 ϵ ;
输出:决策树 T 。
若 D 中所有实例属于同一类 Ck ,则 T 为单结点树,并将类 Ck 作为该结点的类标记,返回 T ;
若 A=∅ ,则 T 为单结点树,并将 D 中实例数最大的类 Ck 作为该结点的类标记,返回 T ;
否则,计算 A 中各特征对 D 的信息增益,选择信息增益最大的特征 Ag ;
(1) 如果 Ag 的信息增益小于阈值 ϵ ,则置 T 为单结点树,并将 D 中实例数最大的类 Ck 作为该结点的类标记,返回 T ;
(2) 否则,对 Ag 的每一可能值 ai ,依 Ag=ai 将 D 分割为若干非空子集 Di ,将 Di 中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树 T ,返回 T ;
对第 i 个子结点,以 Di 为训练集,以 A−{Ag} 为特征集,递归地调用步骤(1)~(3),得到子树 Ti ,返回 Ti 。
下面我们来看一个具体的例子,我们的任务是根据天气情况计划是否要外出打球:
C4.5是2006年国际数据挖掘大会票选出来的十大数据挖掘算法之首,可见它应该是非常powerful的!不仅如此,事实上,C4.5的执行也相当的straightforward。
C4.5算法与ID3算法相似,C4.5算法是由ID3算法演进而来的。C4.5在生成的过程中,用信息增益比来选择特征。下面我们给出一个更加正式的C4.5算法的描述:
输入:训练数据集 D ,特征集 A ,阈值 ϵ ;
输出:决策树 T 。
易见,C4.5跟ID3的执行步骤非常类似,只是在划分时所采用的准则不同。我们这里不再赘述。但是这里可以来看看在实际的数据分析中,该如何操作。我们所使用的数据是如下所示的一个csv文件,文件内容同本文最初给出的Play Ball例子中的数据是完全一致的。
使用Weka进行数据挖掘是非常容易的,你不再需要像R语言或者MATLAB那样编写代码或者调用函数。基于GUI界面,在Weka中你只需要点点鼠标即可!首先我们单击“Explorer”按钮来打开操作的主界面,如下图所示。
在后续的决策树系列文章中,我们将继续深入探讨CART算法等相关话题。
(未完,待续…)
【1】Wu, X., Kumar, V., Quinlan, J.R., Ghosh, J., Yang, Q., Motoda, H., McLachlan, G.J., Ng, A., Liu, B., Philip, S.Y. and Zhou, Z.H., 2008. Top 10 algorithms in data mining. Knowledge and information systems, 14(1), pp.1-37. (http://www.cs.uvm.edu/~icdm/algorithms/10Algorithms-08.pdf)
【2】Pang-Ning Tan, Michael Steinbach, Vipin Kumar, 数据挖掘导论,人民邮电出版社
【3】李航,统计学习方法,清华大学出版社
【4】http://www.saedsayad.com/decision_tree.htm
【5】https://www.cise.ufl.edu/~ddd/cap6635/Fall-97/Short-papers/2.htm
如果你对机器学习和数据挖掘感兴趣,你还可以参考我的高能资源帖:
【6】机器学习与数据挖掘网上资源搜罗
【7】机器学习与数据挖掘的学习路线图