决策树
前言
- 在现实生活中,我们会遇到各种选择,不论是选择男女朋友,还是挑选商品,都是基于以往的经验来做判断。如果把判断背后的逻辑整理成一个结构图,你会发现它实际上是一个树状图,这就是我今天介绍的决策树。
一、工作原理
- 下面介绍相亲这样一个场景:
母亲:给你介绍个男朋友
女儿:年龄多大?
母亲:26
女儿:长得帅不帅?
母亲:挺帅的
女儿:收入高不高?
母亲:不是很高,也不算太低
女儿:是公务员吗?
母亲:是,在党政机关上班
女儿:那好,我去见见 - 我们把女儿选择的逻辑整理成一个简单的结构图:
可以看出女儿是根据已知的男方的若干条件,来对是否去见他作出判断。上面这个图就是一棵典型的决策树。
1. 定义
- 决策树是一种基本的分类和回归方法,其模型呈树形结构,可以认为是if-then的规则集合。
- 训练时,利用训练数据,根据损失函数最小化的原则建立决策树模型,预测时,直接利用模型进行分类或回归。
2. 优缺点
- 优点:其优点是具有很好的可读性,训练和预测的速度快。
- 缺点:决策树的其中一个缺点是容易过拟合,因此在生成决策树之后需要对其进行修剪处理。
3. 结构
- 决策树有三个节点:
根节点:就是树的最顶端,最开始的那个节点。在上图中,“天气”就是一个根节点;
内部节点:就是树中间的那些节点,比如说“温度”、“湿度”、“刮风”;
叶节点:就是树最底部的节点,也就是决策结果。 - 每个非叶节点表示一个特征属性测试;
每个分支代表这个特征属性在某个值域上的输出;
每个叶子节点存放一个类别;
每个节点包含的样本集合通过属性测试被划分到子节点中,根节点包含样本全集。
#其中属性测试的目标是让各个划分出来的子节点尽可能低“纯”,即属于同一类别。
4. 决策树与条件概率分布
- 决策树本质上是对于给定特征空间上的一个划分,树上的每一条从根节点到叶节点的路径将特征空间划分成互不相交的一个区域。每个区域的类别分布构成了条件概率分布,假设X为表示特征的随机变量,Y为表示类的随机变量,则这个条件概率分布可以表示为P(X|Y),各个叶节点上的条件概率往往偏向与某一个类,也就是属于某一个类的概率比较高。决策树在分类时则将落到改叶节点的事例划分为概率最高的类别。
二、决策树训练过程
- 我们在做决策树的时候,会经历两个阶段:构造和剪枝,再细分就是特征选择、决策树生成以及修剪。
1. 训练策略
决策树的学习本质是从训练数据中归纳出一组与其吻合的规则,或者说是通过对特征空间的划分使每个子空间的分类与训练数据吻合,同时能够有较好的泛化能力。这种划分一般来说有无穷多个,因此需要一个策略来进行决策树的生成。
决策树用损失函数来实现这一个目标,通过建立一个正则化后的损失函数,采取最小化损失函数的策略来建立决策树。
即使确立了最小化损失函数的目标,在无穷多个决策树中选取最优的一个仍然是一个非常困难的问题。
为了解决这一问题,采取贪心算法构建决策树,可以获得近似最优解。在构建决策树时,不断递归地选取能够时损失函数最小化的特征来对样本进行划分并构建子树根节点,直到某一个节点上所有的样本都位于同一类,或者满足于其他条件时,停止划分该子树。按照这样方法,总决策树下边的每一个子树都是在当前条件下面的一个最好的分类。
以上的方法可以构建一个对训练样本表现很完美的决策树,但是对未知的数据确未必。当树的深度过大时,或者子树上的样本过少时,再对其进行划分可能会造成过拟合。因此在生成决策树之后,需要对其剪枝,删除过于细分的叶节点,使其退回到父节点。
原文链接:https://blog.csdn.net/a136522541/article/details/87596068
2. 特征选择
- 在构建决策树的时候,最重要的一步是要决定需要选取的特征。通常来说,选取的特征要与最终的分类结果有一定的相关性,如果选取该特征后与随机分类的结果没有太大分布,这样的特征是无效的。
下边用一个简单的例子对选取过程作一个介绍:
- 表中是一个由15个训练样本组成的西瓜数据集,每个样本有6个特征。第一个特征是色泽,分为青绿、乌黑、浅白3类,第二个特征是根蒂形状,有蜷缩、稍蜷和硬挺三类…
- 在构建决策树时,我们首先想从6个特征中选取一个,比如色泽一项,将训练数据分成三类。或者选取根蒂形状,将数据分成3类。这样就构建出不同的决策树。如下图:
- 这样的决策树可以有多种,但是哪一种是最好的呢? 直观上说,如果按照特征分类结束后,叶节点中的样本类别是更加偏向某一类的,那么按照这个特征分类就比较好了。在数学上可以通过信息增益来描述这一情况。
2.1 信息增益
2.1.1 定义
- 假定数据集 D 中离散属性 a 有 V 个可能的取值,若使用 a 对数据进行划分,则会产生 V 个分支节点,其中第 V 个分支节点包含了 D 中所有在属性 a 上取值为 av 的样本,记为 Dv,可以用属性 a 对 样本集D 进行划分所得的信息增益(Information Gain):
G a i n ( D , a ) = E n t ( D ) − ∑ i = 1 v D v D E n t (