【机器学习】决策树算法解读
文章目录
- 【机器学习】决策树算法解读
- 1. 介绍
- 1.1 优缺点
- 1.2 结构
- 1.3 学习过程
- 1.4 决策树与条件概率分布
- 2. 决策树学习过程
- 2.1 训练策略
- 2.2 特征选择
- 2.2.1 信息增益和条件熵
- 2.3 决策树的生成
- 2.3.1 ID3
- 2.3.2 C4.5
- 2.3.3 CART
- 2.3.4 小结
- 2.4 决策树的剪枝
- 3. 总结
- 参考
1. 介绍
决策树是一类机器学习算法,它是一个能够做决策的树模型,由若干个节点组成树状结构。
- 决策树是一种基本的分类和回归方法,其模型呈树形结构,可以认为是if-then的规则集合。
- 训练时,利用训练数据,根据损失函数最小化的原则建立决策树模型,预测时,直接利用模型进行分类或回归。
相亲这样一个场景:
- 母亲:给你介绍个男朋友
- 女儿:年龄多大?
- 母亲:26
- 女儿:长得帅不帅?
- 母亲:挺帅的
- 女儿:收入高不高?
- 母亲:不是很高,也不算太低
- 女儿:是公务员吗?
- 母亲:是,在党政机关上班
- 女儿:那好,我去见见
- 可以看出女儿是根据已知的男方的若干条件,来对是否去见他作出判断。上面这个图就是一棵典型的决策树。
1.1 优缺点
- 优点:其优点是具有很好的可读性,训练和预测的速度快。
- 缺点:决策树的其中一个缺点是容易过拟合,因此在生成决策树之后需要对其进行修剪处理。
1.2 结构
决策树有三个节点:
- 根节点:就是树的最顶端,最开始的那个节点。在上图中,“天气”就是一个根节点;
- 内部节点:就是树中间的那些节点,比如说“温度”、“湿度”、“刮风”;
- 叶节点:就是树最底部的节点,也就是决策结果。
分支与节点的含义:
- 每个非叶节点表示一个特征属性测试;
- 每个分支代表这个特征属性在某个值域上的输出;
- 每个叶子节点存放一个类别;
- 每个节点包含的样本集合通过属性测试被划分到子节点中,根节点包含样本全集。
#其中属性测试的目标是让各个划分出来的子节点尽可能低“纯”,即属于同一类别。
1.3 学习过程
决策树的学习过程包括三个步骤:
- 特征选择。不同的特征和预测目标具有不同强度的相关性,选择相关性最强的特征能够有效提高预测效果。
- 节点分裂(生成)。训练集会在决策树中按照节点规则分流,如果 节点A 没办法给出一个满意的分类结果,那它就会选择分裂,分成 2 个或者多个节点。那么根据什么分裂呢?节点A 会用熵来判断用哪个特征分裂是最优的。
- 剪枝。决策树不加限制地分裂容易产生过拟合现象,剪枝可以一定程度地缓解过拟合,提高泛化能力。
1.4 决策树与条件概率分布
决策树本质上是对于给定特征空间上的一个划分,树上的每一条从根节点到叶节点的路径将特征空间划分成互不相交的一个区域。每个区域的类别分布构成了条件概率分布。
- 假设 X 为表示特征的随机变量,Y为表示类别的随机变量,则这个条件概率分布可以表示为P(X|Y),各个叶节点上的条件概率往往偏向与某一个类,也就是属于某一个类的概率比较高。决策树在分类时则将落到该叶节点的事例划分为概率最高的类别。
2. 决策树学习过程
- 我们在做决策树的时候,会经历两个阶段:构造和剪枝,再细分就是特征选择、决策树生成以及修剪。
2.1 训练策略
决策树的学习本质:是从训练数据中归纳出一组与其吻合的规则,或者说是通过对特征空间的划分使每个子空间的分类与训练数据吻合,同时能够有较好的泛化能力。
- 这种划分一般来说有无穷多个,因此需要一个策略来进行决策树的生成。
决策树用损失函数来实现这一个目标,通过建立一个正则化后的损失函数,采取最小化损失函数的策略来建立决策树。
- 即使确立了最小化损失函数的目标,在无穷多个决策树中选取最优的一个仍然是一个非常困难的问题。
为了解决这一问题,采取贪心算法构建决策树,可以获得近似最优解。在构建决策树时,不断递归地选取能够时损失函数最小化的特征来对样本进行划分并构建子树根节点,直到某一个节点上所有的样本都位于同一类,或者满足于其他条件时,停止划分该子树。按照这样方法,总决策树下边的每一个子树都是在当前条件下面的一个最好的分类。
- 以上的方法可以构建一个对训练样本表现很完美的决策树,但是对未知的数据确未必。当树的深度过大时,或者子树上的样本过少时,再对其进行划分可能会造成过拟合。
因此在生成决策树之后,需要对其剪枝,删除过于细分的叶节点,使其退回到父节点。
2.2 特征选择
在构建决策树的时候,最重要的一步是要决定需要选取的特征。通常来说,选取的特征要与最终的分类结果有一定的相关性,如果选取该特征后与随机分类的结果没有太大分布,这样的特征是无效的。
-
下边用一个简单的例子对选取过程作一个介绍:
-
表中是一个由17个训练样本组成的西瓜数据集,每个样本有6个特征。第一个特征是色泽,分为青绿、乌黑、浅白3类,第二个特征是根蒂形状,有蜷缩、稍蜷和硬挺三类…
-
在构建决策树时,我们首先想从6个特征中选取一个。
- 比如色泽一项,将训练数据分成3类。
- 或者选取根蒂形状,将数据分成3类。
-
这样就构建出不同的决策树。如下图:
-
这样的决策树可以有多种,但是哪一种是最好的呢?
- 直观上说,如果按照特征分类结束后,叶节点中的样本类别是更加偏向某一类的,那么按照这个特征分类就比较好了。在数学上可以通过信息增益来描述这一情况。
2.2.1 信息增益和条件熵
1)信息增益
信息量(熵)用 Ent 来表示。信息熵可以理解为平均信息量,就是信息量的期望值。信息是个很抽象的概念,我们平时说信息多,信息少,但是不知道信息到底是有多少,比如我说一句话,这句话中到底有多少信息量。信息熵从另一方面理解也可以说是对信息的一种量化。
2)熵与信息增益
-
熵
举个例子:如下图
接下来计算上图的熵:
-
条件熵
一般来说,一个属性的信息增益越大,就意味着使用该属性来进行划分所得到的“纯度提升”越大。因此,我们可以使用信息增益来进行决策树的第一个结点划分属性选择。(选出决策树的第一个顶头划分的属性,再继续往下划分)。- 信息熵越小,数据就越纯,信息增益就越大。
计算上图中西瓜数据集中各个属性的信息增益,选取值最大的一个属性作为划分属性。
- 信息熵越小,数据就越纯,信息增益就越大。
2.3 决策树的生成
按照不同的特征选择方法,也就是信息增益使用的方法,可以将生成方法分为:ID3,C4.5,CART。
2.3.1 ID3
1)ID3算法的核心
在决策树的各个节点上利用信息增益来选取特征,递归构建决策树。具体方法为:
- 从根节点开始,对其包含的所有样本的所有特征计算信息增益,选取增益最大的特征作为节点特征,建立子节点,再对子节点递归进行以上操作,直到没有再能够分类的特征,或分类后信息增益小于某个阈值,停止构建树。
2)缺点:
- 只能处理离散型属性,并且倾向于选择取值较多的属性;
- 对于缺失值的情况没有做考虑;
- 没有考虑过拟合的问题。
3)原因
信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是条件熵越小,信息增益越大。
2.3.2 C4.5
与ID3算法相似,但是做了改进,将信息增益比作为选择特征的标准。
- 信息增益比:特征A对训练数据集D的信息增益比gR(D,A), 定义为其信息增益g(D,A)与训练数据集D的经验熵之比。
- 缺点:增益率对可取值数目较少的属性有所偏好,所以倾向于选择取值较少的属性。
2.3.3 CART
- 无论是ID3还是C4.5,它们都是基于信息论的熵模型的,这里面不可避免的会涉及大量对数运算,那我们能不能在简化模型的同时也不至于完全丢失熵模型的优点呢?
CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。
- 在分类问题中,假设有 k 个类别,第 k 个类别的概率为 pk, 则基尼系数的表达式为:
- 基尼系数的特质是:
- 类别个数越少,基尼系数越低;
- 类别个数相同时,类别集中度越高,基尼系数越低。
2.3.4 小结
2.4 决策树的剪枝
3. 总结
- 决策树是一种基本的分类和回归方法,其模型呈树形结构;
- 决策树训练过程大致分为:特征选择、决策树生成以及修剪;
- 决策树构造生成过程的其中三种算法:ID3、C4.5和CART算法;
- 为避免产生过拟合现象,我们通过最小化决策树的损失函数来对决策树进行“剪枝”。
参考
【1】https://blog.csdn.net/AAA_jiu/article/details/103041423
【2】https://blog.csdn.net/qq_45997545/article/details/109752960