机器学习总结(八)决策树ID3,C4.5算法,CART算法

本文主要总结决策树中的ID3,C4.5和CART算法,各种算法的特点,并对比了各种算法的不同点。

决策树:是一种基本的分类和回归方法。在分类问题中,是基于特征对实例进行分类。既可以认为是if-then规则的集合,也可以认为是定义在特征空间和类空间上的条件概率分布。

决策树模型:决策树由结点和有向边组成。结点一般有两种类型,一种是内部结点,一种是叶节点。内部结点一般表示一个特征,而叶节点表示一个类。当用决策树进行分类时,先从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到子结点。而子结点这时就对应着该特征的一个取值。如此递归对实例进行测试分配 ,直至达到叶结点,则该实例属于该叶节点的类。

决策树分类的主要算法有ID3,C4.5。回归算法为CART算法,该算法既可以分类也可以进行回归。

(一)特征选择与信息增益准则

特征选择在于选取对训练数据具有分类能力的 特征,而且是分类能力越强越好,这样子就可以提高决策 树 的效率。如果利用一个特征进行分类,分类的结果与随机分类的结果没有差异,那么这个特征是没有分类能力的。那么用什么来判别一个特征的分类能力呢?那就是信息增益准则。

何为信息增益?首先,介绍信息论中熵的概念。

度量了随机变量的不确定性,越不确定的事物,它的熵就越大。具体的,随机变量X的熵定义如下:

条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵为H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望:

信息增益表示在已知特征X的情况下,而使得Y的信息的不确定性减少的程度。信息增益的定义 式如下:

g(D,A)表示特征A对训练集D的信息增益,其为集合D的经验熵H(D)与在特征A给定条件下D的经验条件熵H(D|A)之差。一般熵与条件熵之差,称为互信息。在决策树中,信息增益就等价于训练数据集中的类与特征的互信息。

具体信息增益的计算

(1)计算数据集D的经验熵H(D)

(2)计算特征A对数据集D的经验条件熵H(D|A):

(3)计算信息增益

(二)ID3算法

ID3算法以信息增益作为选择特征的准则

输入:训练数据集D,特征集A(可以从训练集中提取出来),阀值ε(用来实现提前终止);

(1)若当前节点中所有实例属于同一类Ck,则该结点作为叶子节点,并将类别Ck作为该结点的输出类;

(2)若A为空,则将当前结点作为叶子节点,并将数据集中数量最多的类作为该结点输出类;

(3)否则,计算所有特征的信息增益,若此时最大的信息增益小于阀值ε,则将当前结点作为叶子节点,并将数据集中数量最多的类作为该结点输出类;

(4)若当前的最大信息增益大于阀值ε,则将最大信息增益对应的特征A作为最优划分特征对数据集进行划分,根据特征A的取值将数据集划分为若干个子结点;

(5)对第i个结点,以Di为训练集,以Ai为特征集(之前用过的特征从特征集中去除),递归的调用前面的1- 4 步。

ID3算法的缺点:

(1)ID3算法会偏向于选择类别较多的属性(形成分支较多会导致信息增益大

(2)ID3算法没有考虑连续值,对与连续值的特征无法进行划分

(3) ID3算法对于缺失值的情况没有做考虑。

(4)ID3算法只有树的生成,容易产生过拟合。

(5)ID3算法采用贪心算法,每次划分都是考虑局部最优化,而局部最优化并不是全局最优化,通常需对其进行剪枝,而决策树剪枝是对模型进行整体优化。

(三)C4.5算法

C4.5算法与ID3算法相似,不过在生成树的过程中,采用信息增益比来作为选择特征的准则。

增益比:

其中为特征熵,n为特征取值的数目。

C4.5算法的训练过程与ID3相似,见ID3算法。

C4.5其实是针对ID3算法的不足改进后的算法,采用信息增益比,是为了解决ID3算法会偏向于选择类别多的属性的问题。而对于ID3算法不能对连续值进行划分的问题 ,C4.5采用连续值特征离散化的。此外,C4.5还从以下两方面考虑了缺失值的问题:一是在样本某些特征缺失的情况下选择划分的属性,二是选定了划分属性,对于在该属性上缺失特征的样本的处理。对于ID3存在的过拟合问题,C4.5采用了引进正则化系数,对决策树进行剪枝。

(四)CART算法

CART树既可以用于 分类 ,也可以用于回归。CART树的生成过程同样包括特征选择,树的生成及剪枝。

与ID3,C4.5算法不同的是,首先,CART进行特征选择时,回归树用的平方误差最小化的准则,而对于分类树用基尼系数。对于平方误差好理解。主要介绍下分类时用的基尼系数,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。具体的,在分类问题中,假设有K个类别,第k个类别的概率为pk, 则基尼系数的表达式为:

如果是二类分类问题,计算就更加简单了,如果属于第一个样本输出的概率是p,则基尼系数的表达式为:

简单明了的理解基尼系数那就是,从集合中随机选取两个样本,两个样本的类别不一致的概率,所以这概率越低,说明划分的集合的不纯度就越低。

对于样本D,如果根据特征A的某个值a,把D分成D1和D2两部分,则在特征A的条件下,D的基尼系数表达式为:

基尼系数用于度量时,与熵之半,分类误差率的关系。可见,基尼系数和熵之半的曲线非常接近,都可以近似的代表分类误差率

此外,CART树在生成过程中,生成的是二叉树。即CART树在生成过程中仅仅是对特征的值进行二分,而不是多分。

CART分类树建立的过程

对于给定训练数据集D,从根结点开始递归的建立二叉决策树:

1)根据数据集D中每个特征A,以及其可能的取值a,按照取值的‘是‘和‘否’将数据集分成两部分,然后计算基尼系数 。

2)在所有可能的特征A以及他们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征的与最优切分点。

依最优特征和最优切分点,将现结点生成两个子结点,将训练数据集依特征分配到两个子结点中。

3)递归的调用1)2)步骤,直至达到停止条件

停止条件有:结点中的样本数小于预定的阈值,或者样本集的基尼系数小于预定的阈值(此时基尼系数已经非常小,样本基本属于同一 类),

或者结点样本中没有更多的特征。

CART回归树建立的过程

首先说下分类树和回归树的区别吧,分类树样本输出的值为离散的类别值(如二分类输出的值为0和1),而回归树样本输出的是连续值。

在分类树中,采用基尼系数 来对特征进行划分。而在CART回归树用的平方误差最小化准则,具体就是对于任意划分特征A,

对应的任意划分点s两边划分成的数据集D1和D2,求出使D1和D2各自集合的均方差最小,同时将D1和D2的均方差之和最小所对应的特征和特征值作为划分点。

表达式如下:

其中,c1为D1数据集的样本输出均值,c2为D2数据集的样本输出均值

1)对于数据集D,通过平方误差准则(上面式子),选择最优的切分变量和切分点;

2)用选定的最优切分变量和切分点划定两个子区域区域,并输出该区域数据集样本的均值。

3)继续对两个子区域进行调用步骤1)和2),直至满足停止条件

4)最后将样本空间划分成M个区域,即M个叶结点,以及M个与叶结点对应的输出值。

CART树的剪枝

CART树的剪枝就是加入先验的过程,其损失函数如下:

Cα(T)=C(T)+α|T|

其中T为任意子树,C(T)为对训练数据的预测误差(如基尼系数),|T|为叶结点的个数,α>=0为参数,Cα(T)为整体损失。

正则化项的加入能够起到剪枝的作用 ,从而降低了模型的复杂度。而α参数起到了平衡模型复杂度与训练数据拟合度的 作用。

(五)总结

决策树的缺点

1)决策树算法属于贪心的算法,在生成树的过程中只考虑局部最优形成,而不考虑整体最优,所以生成的树容易产生过拟合,

(即对训练集的分类很正确,但是对未知的数据分类却没那么准确,泛化能力不强)。所以需要在决策树生成后对其进行剪枝,

也就是说简化模型的复杂度,一般通过加正则化项来进行剪枝。

2)决策树对训练数据的变化敏感,数据集变化,树就会发生变化;该缺点可以通过集成树来解决。譬如随机森林,随机森林的数据样本扰动。

3)决策树没有考虑变量之间相关性,每次筛选都只考虑一个变量(因此不需要归一化)

决策树的优点:

1)简单直观,模型解释性好

2)基本不需要预处理,不需要提前归一化,处理缺失值

3)使用决策树预测的代价是O(log2m)。 m为样本数

4)既可以处理离散值也可以处理连续值

5) 对于异常点的容错能力好,健壮性高

6)可以处理多维度输出的分类问题

原文地址:https://www.cnblogs.com/jackhehe/p/9808434.html

时间: 2024-10-12 13:37:51

机器学习总结(八)决策树ID3,C4.5算法,CART算法的相关文章

决策树(ID3,C4.5,CART)原理以及实现

决策树 决策树是一种基本的分类和回归方法.决策树顾名思义,模型可以表示为树型结构,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布. [图片上传失败...(image-2e6565-1543139272117)] 决策树的中间节点可以看做是对一种特征的判断,也是符合上一次判断特征某种取值的数据集,根节点代表所有数据集;叶子节点看做是判断所属的类别. 决策树学习通常包括3个步骤: 特征选择. 决策树生成和决策树剪枝. 目前常用的决策树算法有ID3, C4.5 和C

数据挖掘领域经典算法——CART算法

简介 CART与C4.5类似,是决策树算法的一种.此外,常见的决策树算法还有ID3,这三者的不同之处在于特征的划分: ID3:特征划分基于信息增益 C4.5:特征划分基于信息增益比 CART:特征划分基于基尼指数 基本思想 CART假设决策树是二叉树,内部结点特征的取值为"是"和"否",左分支是取值为"是"的分支,右分支是取值为"否"的分支.这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单

机器学习实战python3 决策树ID3

代码及数据:https://github.com/zle1992/MachineLearningInAction 决策树 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型和标称型. 创建分支的伪代码函数createBranch()如下所示:检测数据集中的每个子项是否属于同一分类:if so return 类标签; Else 寻找划分数据集的最好特征 划分数据集 创建分支节点 for 每个划分的子集 调用函

《机器学习实战》基于信息论的三种决策树算法(ID3,C4.5,CART)

============================================================================================ <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记,包含对其中算法的理解和算法的Python代码实现 另外博主这里有机器学习实战这本书的所有算法源代码和算法所用到的源文件,有需要的留言 如需转载请注明出处,谢谢 ======================================

机器学习算法概述第五章——CART算法

特点: 是一个二叉树,元素可以重复利用,可以做回归也可以做分类,分类用最小二乘法,即误差平方和最小 切割方法: 对于可量化的x来说: 切割点通常为两个x的平均值 左右两部分分别取均值,再评判以哪个分割点的误差平方和最小,即第一层根节点为此点 以此为规则,往下迭代,构建出回归树 对于不可量化的x来说: x无法去均值.直接以特征属性割分,再计算两个区域的均值,再寻找误差平方和最小的切割点 举个栗子: CART回归树的构建: 优点: 易于解释 处理类别特征,其他的技术往往要求数据属性的单一 延展到多分

《机器学习技法》---CART算法

1 决策树模型的数学表达形式 决策树模型画出图很简单.那么它的数学表达形式是怎样的呢?这里介绍递归形式: 其中,G(x)表示决策树对应的函数,b(x)表示分叉的规则,Gc(x)是子树的模型. 2 一般决策树生成算法的框架 即,学习划分规则b(x),然后把数据按照b(x)划分为C部分,对每一部分递归地生成子树.注意递归在一定条件停止,直接返回一个g(x). 事实上,不同的决策树算法,都是这个基本的框架.不同的地方在于这四个部分的具体定义是不同的: 3 CART算法 CART算法中,框架中的四个部分

处理分类问题常用算法(二)-----算法岗面试题

● 分层抽样的适用范围 参考回答: 分层抽样利用事先掌握的信息,充分考虑了保持样本结构和总体结构的一致性,当总体由差异明显的几部分组成的时候,适合用分层抽样. ● LR的损失函数 参考回答: M为样本个数,为模型对样本i的预测结果,为样本i的真实标签. ● LR和线性回归的区别 参考回答: 线性回归用来做预测,LR用来做分类.线性回归是来拟合函数,LR是来预测函数.线性回归用最小二乘法来计算参数,LR用最大似然估计来计算参数.线性回归更容易受到异常值的影响,而LR对异常值有较好的稳定性. ● 生

决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)

1. 1.问题的引入 2.一个实例 3.基本概念 4.ID3 5.C4.5 6.CART 7.随机森林 2. 我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款? 一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话: 女儿:多大年纪了? 母亲:26. 女儿:长的帅不帅? 母亲:挺帅的. 女儿:收入高不? 母亲:不算很高,中等情况. 女儿:是公务员不? 母亲:是,在税务局上班呢. 女儿:那好,我去见见. 决策过程: 这个女孩的决策过程就是典型的分类树决策.

决策树归纳一般框架(ID3,C4.5,CART)

感性认识决策树 构建决策树的目的是对已有的数据进行分类,得到一个树状的分类规则,然后就可以拿这个规则对未知的数据进行分类预测. 决策树归纳是从有类标号的训练元祖中学习决策树. 决策树是一种类似于流程图的树结构,其中每个内部节点(非树叶结点)表示一个属性上的测试,每个分支代表该测试上的一个输出,而每个树叶结点(或终端结点)存放一个类标号.树的最顶层结点是根结点.一个典型的决策树如下图所示, 该决策树是通过下表所示的训练元组和它们对应的类标号得到的, 为什么决策树如此流行 决策树分类器的构造不需要任