7.2.1 决策树
决策树是常见集成模型算法的基础,是常见的一种分类器,所以在介绍集成模型前,先简单介绍决策树及其变种。
决策树模型包含决策节点、分支和叶子。决策节点引出分支,每根分支代表一个决策方案,每根分支连接到一个新的节点,新的节点可能是新的决策节点,也可能是叶子,表示一个具体的最终状态。在解决实际问题时,决策节点表示待分类实例的属性,每个分支表示一个可能的取值。决策树算法的技术难点在于如何选择一个好的分支方法。决策树算法在实践中主要应用于分类和预测,它主要提供了一种解决方法,类似于在什么样的条件下会得到什么结果这类规则的方法。一个决策树是一系列问题的集合,每个问题决定了下一个问题是什么。
以判断一个人是否打球的例子来说明,某人记录了多云、降雨、有风、温度和打球与否等情况,如表7-1所示。
表7-1 打球数据

在记录了一段时间的数据后,我们可以发现是否打球的最重要的单一预测因素是天气是否晴朗(阴天=否)。然后,在将数据分为晴天和非晴天后,出现了其他类似的模式,结果如图7-1所示。
由图7-1可知,决策树由决策节点、分支和叶子组成。决策树中最上面的节点为根节点,每个分支是一个新的决策节点,或者是树的叶子。每个决策节点代表一个问题或决策,通常对应于待分类对象的属性。每一个叶子节点代表一种可能的分类结果。决策树模型从上到下遍历的过程中,在每个分支都会进行一次比较,根据不同的结果会走不同的分支,最终会到达一个叶子节点。这个过程就是利用决策树模型进行分类的过程。
(https://www.daowen.com)
图7-1 决策树图
决策树算法适合于处理非数值型数据,如果生成的决策树模型过于庞大,会对实验结果的分析带来困难,因此需要在决策树模型生成后,再对决策树模型进行剪枝处理,最终将决策树模型转化为规则。决策树模型的建立过程,就是不断地把实例数据进行切分。每次切分对应着一个节点,每次切分都尽量要求分成的节点之间的差异性最大。决策树算法的种类很多,它们之间的主要区别就是差异性衡量方式的区别。
建立决策树采用的是贪心算法,这是一种自上而下、分而治之的归纳过程。决策树算法的建立由根节点开始,对于非叶子节点,寻找其对应样本集中的一个属性,对样本集进行测试,然后根据不同的测试结果将训练样本集重新划分成若干个子样本集,每一个子样本集构成一个新叶子节点,对新叶子节点再重复上述划分过程,不断循环,直至达到设置的特定终止条件。每种决策树算法使用的技术也不尽相同,分裂属性的选择和如何划分样本集是建立决策树模型的关键环节。决策树算法进行分类分为两个步骤:第一,利用训练集建立一棵决策树,就是所谓的决策树模型,建立决策树模型的过程本质上是一个从数据库记录中获取知识,进行机器学习的过程;第二,利用第一步建立的决策树模型对输入的数据进行分类。所以决策树模型的算法本质是贪心算法,它以自上而下递归的各个击破方式建立决策树,对输入的数据进行记录,从根节点开始依次测试记录的属性值,一直到达叶子节点,从而找到该记录所在的分类。
下面简单介绍决策树的建立过程:
(1)首先从数据源中选取变量,也就是属性。用户从数据源的所有变量中选择其中一个变量作为因变量,还有许多其他类似的输入变量。
(2)然后分析每个变量对输出结果产生的影响,对每一个变量的值进行分组。这是一个迭代的循环过程。
(3)从第(2)步计算得到基于每一变量的分组之后,就可以根据结果,找到对于因变量来说最具有预测性的变量,且可以用这个变量来建立决策树模型的叶子节点。建立决策树的过程就是树的生长过程,不断地把数据进行分组,每次分组对应一个实际问题,也就是对应着决策树。