机器学习之树模型(一)

树模型主要有ID3、C4.5、C5.0、OC1以及CART等,使用最多的树模型为CART,sklearn中的决策树模型是基于CART的。

在介绍树模型之前先介绍一下信息熵、信息增益以及GINi系数。

信息熵:熵度量了事物的不确定性,越不确定的事物,它的熵就越大。

信息增益:它度量了在知道当前特征之后类别的不确定性所减少的程度。信息增益越大不确定性减少的程度越大,对类别的确定越有利。

基尼系数的性质与信息熵一样:度量随机变量的不确定度的大小。

基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经过A=a分割后集合D的不确定性。基尼指数越大,样本的不确定性也就越大。

基尼系数的特质如下:(具体参考:https://blog.csdn.net/yeziand01/article/details/80731078)

1) 类别个数越少,基尼系数越低;

2)类别个数相同时,类别集中度越高,基尼系数越低。

当类别越少,类别集中度越高的时候,基尼系数越低;当类别越多,类别集中度越低的时候,基尼系数越高。

一、ID3

ID3算法就是用信息增益大小来判断当前节点应该用什么特征来构建决策树,用计算出的信息增益最大的特征来建立决策树的当前节点

信息熵的具体计算例子如下:

比如我们有15个样本D,输出为0或者1。其中有9个输出为1, 6个输出为0。 样本中有个特征A,取值为A1,A2和A3。在取值为A1的样本的输出中,有3个输出为1, 2个输出为0,取值为A2的样本输出中,2个输出为1,3个输出为0, 在取值为A3的样本中,4个输出为1,1个输出为0.

ID3存在的不足:第一、没有考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。这大大限制了ID3的用途。第二、ID3采用信息增益大的特征优先建立决策树的节点。但是在相同条件下,取值比较多的特征比取值少的特征信息增益大。(对于信息增益作为评价标准偏向于选择较多的特征,其实是很简单的。从信息增益的定义我们知道,它度量了输出在知道特征以后不确定性减少程度。当特征类别数较多时候,这个不确定性减少程度一般会多一些,因为此时特征类别数较多,每个类别里的样本数量较少,样本更容易被划分的散落到各个特征类别,即样本不确定性变小。)第三、ID3算法对于缺失值的情况没有做考虑。第四、没有考虑过拟合的问题。

二、C4.5

C4.5是在ID3的不足之处上进行改进得来的。第一、对于连续值的处理。例如某特征具备m个连续值,先对这m个连续值进行排序,然后取这m个值两两之间的中值作为这一特征的离散取值,这样就把连续型特征转换为离散型特征了。在根据划分出的取值进行条件熵的计算时,小于该值的当做一类,大于该值的当做另一类,同时计算完条件熵之后该属性后面还可以参与子节点的产生选择过程。

对于连续值的处理例子如下:(具体参考:https://blog.csdn.net/u012328159/article/details/79396893

第二、引入信息增益比大小来判断当前节点应该用什么特征来构建决策树,用计算出的信息增益比最大的特征来建立决策树的当前节点。

信息增益比=信息增益/特征熵

特征熵的计算例子如下:

特征A有3个特征值A1,A2,A3。 3个特征值对应的无缺失A特征的样本个数为2,3,4.则a同时划分入A1,A2,A3。对应权重调节为2/9,3/9, 4/9。则特征熵为-2/9*log(2/9)-3/9*log(3/9)-4/9*log(4/9)

第三、提供了缺失值处理。第四、提供了剪枝操作来解决决策树的过拟合问题。

C4.5处理连续性数值和离散型数值最大的区别在于,对于连续型数值以两两中值作为离散型取值,在处理完之后它还可以参与子节点的产生选择过程。

C4.5算法的缺点

C4.5由于仍然使用了熵模型,里面有大量的耗时的对数运算,如果是连续值还有大量的排序运算。

C4.5只能用于分类。且使用了模型较为复杂的多叉树。

三、CART

CART:它既可以用于分类也可用于回归,是sklearn中的决策树所使用的方法。

CART分类树对于连续值的处理和C4.5思路一样把连续型数值转换为离散型的,但是在判断当前节点应该用什么特征来构建决策树时它选择的度量方式是基尼系数(基尼系数代表了模型的不纯度)基尼系数越小,则不纯度越低,特征越好。

CART对于离散值处理与C4.5也有不同之处。对于CART分类树离散值的处理问题,采用的思路是不停的二分离散特征。回忆下ID3或者C4.5,如果某个特征A被选取建立决策树节点,如果它有A1,A2,A3三种类别,我们会在决策树上一下建立一个三叉的节点。这样导致决策树是多叉树。但是CART分类树使用的方法不同,他采用的是不停的二分,还是这个例子,CART分类树会考虑把A分成{A1}和{A2,A3},{A2}和{A1,A3},{A3}和{A1,A2}三种情况,找到基尼系数最小的组合,比如{A2}和{A1,A3},然后建立二叉树节点,一个节点是A2对应的样本,另一个节点是{A1,A3}对应的节点。同时,由于这次没有把特征A的取值完全分开,后面我们还有机会在子节点继续选择到特征A来划分A1和A3。这和ID3或者C4.5不同,在ID3或者C4.5的一棵子树中,离散特征只会参与一次节点的建立。

gini系数的计算案例:

CART对于离散值与连续值的处理:

对于CART分类树连续值的处理问题,其思想和C4.5是相同的,都是将连续的特征离散化。唯一的区别在于在选择划分点时的度量方式不同,C4.5使用的是信息增益比,则CART分类树使用的是基尼系数。

对于CART分类树离散值的处理问题,采用的思路是不停的二分离散特征。

回忆下ID3或者C4.5,如果某个特征A被选取建立决策树节点,如果它有A1,A2,A3三种类别,我们会在决策树上一下建立一个三叉的节点。这样导致决策树是多叉树。但是CART分类树使用的方法不同,他采用的是不停的二分,还是这个例子,CART分类树会考虑把A分成{A1}和{A2,A3},{A2}和{A1,A3},{A3}和{A1,A2}三种情况,找到基尼系数最小的组合,比如{A2}和{A1,A3},然后建立二叉树节点,一个节点是A2对应的样本,另一个节点是{A1,A3}对应的节点。同时,由于这次没有把特征A的取值完全分开,后面我们还有机会在子节点继续选择到特征A来划分A1和A3。这和ID3或者C4.5不同,在ID3或者C4.5的一棵子树中,离散特征只会参与一次节点的建立。

CART解决回归问题:

首先,我们要明白,什么是回归树,什么是分类树。两者的区别在于样本输出,如果样本输出是离散值,那么这是一颗分类树。如果果样本输出是连续值,那么那么这是一颗回归树。

除了概念的不同,CART回归树和CART分类树的建立和预测的区别主要有下面两点:

1)连续值的处理方法不同

2)决策树建立后做预测的方式不同。

对于连续值的处理,我们知道CART分类树采用的是用基尼系数的大小来度量特征的各个划分点的优劣情况。这比较适合分类模型,但是对于回归模型,我们使用了常见的和方差的度量方式,CART回归树的度量目标是,对于任意划分特征A,对应的任意划分点s,把特征划分成的数据集D1和D2,求出D1和D2各自集合的均方差,把D1和D2的均方差之和最小所对应的特征和特征值作为划分点。

具体分析为:CART回归树假如有4个变量,每个变量有10个值(连续变量)那么去计算每个变量的每个划分点的均方误差来选择优先的变量和划分点其实就是去计算4*9 = 36,然后比大小。

对于决策树建立后做预测的方式,上面讲到了CART分类树采用叶子节点里概率最大的类别作为当前节点的预测类别。而回归树输出不是类别,它采用的是用最终叶子的均值或者中位数来预测输出结果。

  除了上面提到了以外,CART回归树和CART分类树的建立算法和预测没有什么区别。

CART树剪枝策略:

CART回归树和CART分类树的剪枝策略除了在度量损失的时候一个使用均方差,一个使用基尼系数,算法基本完全一样,这里我们一起来讲。

  由于决策时算法很容易对训练集过拟合,而导致泛化能力差,为了解决这个问题,我们需要对CART树进行剪枝,即类似于线性回归的正则化,来增加决策树的泛化能力。但是,有很多的剪枝方法,我们应该这么选择呢?CART采用的办法是后剪枝法,即先生成决策树,然后产生所有可能的剪枝后的CART树,然后使用交叉验证来检验各种剪枝的效果,选择泛化能力最好的剪枝策略。

  也就是说,CART树的剪枝算法可以概括为两步,第一步是从原始决策树生成各种剪枝效果的决策树,第二部是用交叉验证来检验剪枝后的预测能力,选择泛化预测能力最好的剪枝后的数作为最终的CART树。

CART的缺点:

1)大家应该有注意到,无论是ID3, C4.5还是CART,在做特征选择的时候都是选择最优的一个特征来做分类决策,但是大多数,分类决策不应该是由某一个特征决定的,而是应该由一组特征决定的。这样得到的决策树更加准确。这个决策树叫做多变量决策树(multi-variate decision tree)。在选择最优特征的时候,多变量决策树不是选择某一个最优特征,而是选择最优的一个特征线性组合来做决策。这个算法的代表是OC1,这里不多介绍。

2)如果样本发生一点点的改动(这里指的是数据分布的波动,而决策树有很好的容错性是指特征存在异常值并不会给最终的预测结果造成很大的影响。),就会导致树结构的剧烈改变。这个可以通过集成学习里面的随机森林之类的方法解决。

原文地址:https://www.cnblogs.com/dyl222/p/10532920.html

时间: 2024-10-21 11:23:07

机器学习之树模型(一)的相关文章

编译器架构的王者LLVM——(5)语法树模型的基本结构

LLVM平台,短短几年间,改变了众多编程语言的走向,也催生了一大批具有特色的编程语言的出现,不愧为编译器架构的王者,也荣获2012年ACM软件系统奖 -- 题记 版权声明:本文为 西风逍遥游 原创文章,转载请注明出处 西风世界 http://blog.csdn.net/xfxyy_sxfancy 语法树模型的基本结构 上次我们看了Lex和Yacc的翻译文件,可能一些朋友并不了解其中的执行部分,而且,对这个抽象语法树是怎么构建起来的还不清楚.今天我们就再详细介绍一下如果方便的构建一棵抽象语法树(A

DOM:文档对象模型 --树模型 文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西

DOM:文档对象模型 --树模型文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西 一:window: 属性(值或者子对象):opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null,可以利用这个属性来关闭源窗口. 方法(函数):事件(事先设置好的程序,被触发): 1.window.open("第一部分","第二部分","第三部分","第四部分"): 特征参数: 第一部分:写要

数组无限分类树模型序列化

<?php $array = array( array('id'=>'1', 'name'=>'电子产品', 'parent_id'=>0), array('id'=>'2', 'name'=>'电脑', 'parent_id'=>1), array('id'=>'3', 'name'=>'笔记本', 'parent_id'=>2), array('id'=>'4', 'name'=>'台式电脑', 'parent_id'=>2

从2-3-4树模型到红黑树实现

目录 从2-3-4树模型到红黑树实现 前言 2-3-4树 查找 插入 树的生长 删除 左倾红黑树 查找 插入 删除 总结 参考文献 从2-3-4树模型到红黑树实现 前言 红黑树,是一个高效的二叉查找树.其定义特性保证了树的路径长度在黑色节点上完美平衡,使得其查找效率接近于完美平衡的二叉树. 但是红黑树的实现逻辑很复杂,各种旋转,颜色变化,直接针对其分析,大多数都是死记硬背各种例子,不太容易有个直观的理解.实际上,红黑树是实现手段,是其他概念模型为了方便在二叉树上实现进而定义的节点颜色这个信息.如

机器学习day14 机器学习实战树回归之CART与模型树

这几天完成了树回归的相关学习,这一部分内容挺多,收获也挺多,刚刚终于完成了全部内容,非常开心. 树回归这一章涉及了CART,CART树称作(classify and regression tree) 分类与回归树,既可以用于分类,也可以用于回归.这正是前面决策树没有说到的内容,在这里补充一下.正好也总结一下我们学的3种决策树. ID3:用信息增益来选择特性进行分类,只能处理分类问题.缺点是往往偏向于特性种类多的特性进行分解,比如特性A有2种选择,特性B有3种选择,混乱度差不多的情况下,ID3会偏

笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting

本杂记摘录自文章<开发 | 为什么说集成学习模型是金融风控新的杀手锏?> 基本内容与分类见上述思维导图. . . 一.机器学习元算法 随机森林:决策树+bagging=随机森林 梯度提升树:决策树Boosting=GBDT  . 1.随机森林 博客: R语言︱决策树族--随机森林算法 随机森林的原理是基于原始样本随机抽样获取子集,在此之上训练基于决策树的基学习器,然后对基学习器的结果求平均值,最终得到预测值.随机抽样的方法常用的有放回抽样的booststrap,也有不放回的抽样.RF的基学习器

机器学习笔记(二)模型评估与选择

2.模型评估与选择 2.1经验误差和过拟合 不同学习算法及其不同参数产生的不同模型,涉及到模型选择的问题,关系到两个指标性,就是经验误差和过拟合. 1)经验误差 错误率(errorrate):分类错误的样本数占样本总数的比例.如果在m个样本中有a个样本分类错误,则错误率E=a/m,相应的,1-a/m称为精度(accuracy),即精度=1-错误率. 误差(error):学习器的实际预测输出和样本的真实输出之间的差异.训练误差或经验误差:学习器在训练集上的误差:泛化误差:学习器在新样本上的误差.

机器学习如何选择模型 &amp; 机器学习与数据挖掘区别 &amp; 深度学习科普

今天看到这篇文章里面提到如何选择模型,觉得非常好,单独写在这里. 更多的机器学习实战可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6159187.html 另外关于机器学习与数据挖掘的区别, 参考这篇文章:https://www.zhihu.com/question/30557267 数据挖掘:也就是data mining,是一个很宽泛的概念.字面意思就是从成吨的数据里面挖掘有用的信息.这个工作BI(商业智能)可以做,数据分析可以做,甚至市场运营也可以做

【机器学习123】模型评估与选择 (上)

第2章 模型评估与选择 2.1 经验误差与过拟合 先引出几个基本概念: 误差(error):学习器的实际预测输出与样本的真实输出之间的差异. 训练误差(training error):学习器在训练集上的误差,也称"经验误差". 测试误差(testing error):学习器在测试集上的误差. 泛化误差(generalization error):学习器在新样本上的误差. 错误率(error rate):分类错误的样本数占样本总数的比例. 精度(accuracy) = 1 – 错误率.