这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
算法简介
决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。在分类问题中,表示基于特征对实例进行分类的过程。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型;预测时,对新的数据,利用决策模型进行分类。
决策树模型
基本概念
学习过树形结构的同学应该能够比较好的理解决策树中的一些概念,可以跳过这一小节。
决策树所涉及到的概念包括:
- 根结点:它表示整个样本集合,并且该节点可以进一步划分成两个或多个子集。
- 拆分:表示将一个结点拆分成多个子集的过程。
- 决策结点:当一个子结点进一步被拆分成多个子节点时,这个子节点就叫做决策结点。可以理解为做出选择
- 叶子结点:无法再拆分的结点被称为叶子结点。在树结构中为底层节点
- 剪枝:移除决策树中子结点的过程就叫做剪枝,跟拆分过程相反,常用于优化。
- 分支/子树:一棵决策树的一部分就叫做分支或子树。
- 父结点和子结点:一个结点被拆分成多个子节点,这个结点就叫做父节点;其拆分后的子结点也叫做子结点。(根节点也是父亲节点)
模型建立
特征选择
把不同的特征作为决策的标准生成的决策树模型是不同的。一般而言,决策树的建立有三种方法:ID3, C4.5以及CART。其中,CART的分类效果一般优于其他两个方法。在本章中,我们会详细介绍这三种方法。
决策树的生成
决策树通过选择的特征来评估标准,递归地进行生成子节点的过程,直到数据集不再可分。每一次数据集的划分,都希望各个子集的不确定性更小
剪枝
对于过拟合的决策树模型,需要进行适当的剪枝,缩小树结构的规模。
模型优缺点
决策树的优点:
- 具有可读性,如果给定一个模型,根据所产生的决策树很容易推理出相应的逻辑表达。
- 分类速度快,能在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
决策树的缺点: - 对未知的测试数据未必有好的分类能力,即可能发生过拟合现象,此时可采用剪枝或随机森林。(随机森林我们会在之后的文章中提到)
ID3算法
由信息增益的原理来进行决策对于一组数据,熵越小,代表分类实现效果越好。
信息增益
熵是随机变量不确定性的度量,也就是熵越大,则随机变量的不确定性越大,熵越小,则随机变量的不确定性越小。其数学定义如下:
假设X是取得有限个值的离散随机变量,那么它的概率分布为
它的熵为
条件熵H(Y|X)表示在已知随机变量X的条件下,随机变量Y的不确定性。随机变量X给定的条件下随机变量Y的条件熵H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望:
信息增益表示由于得知特征A的信息后的数据集D的分类不确定性减少的程度,定义为:
C4.5算法
算法简介
通过对ID3的学习,可以知道ID3存在一个问题,那就是越细小的分割分类错误率越小,所以ID3会越分越细。C4.5算法与ID3相似,但做了一些改进,即通过信息增益比来作为选择特征的标准。
信息增益比
特征A对训练数据集D的信息增益比GainRatio(D,A)定义为其信息增益Gain(D,A)与训练数据集D的经验熵H(D)之比,即
CART算法
算法简介
CART也被成为回归分类树,它是一个二叉树。所以CART只能将一个父节点分成两个子节点,这里通过Gini指数来决定如何分裂。
Gini指数
总体内包含的类别越杂乱,Gini指数越大。在分类问题中,假设有k个类,样本点属于第k类的概率为Pk,则概率分布的Gini指数定义为:
由于我们可以得到简化公式:
样本集合D中的基尼系数:
值得一提的是,CART是一个二叉树,当时用某个特征划分集合样本时只有两个集合:
1.等于给定的特征值的样本集合D1
2.不等于给定的特征值的样本集合D2
所以样本集合D可以划分为两个子集:
代码实现
接下来我们将介绍基于sklearn的决策树代码实现。