【介绍】有哪些决策树_决策树有哪些构建方法,它们有何不同?-程序员宅基地

技术标签: 算法  机器学习  决策树  

目录

0. 前言-决策树介绍

一、决策树有哪些

二、各种决策树详细解释

2.1 ID3决策树

2.2 C4.5决策树

2.3 C5.0决策树

2.4 CART分类树

2.5 CART回归树


 本文部分图文借鉴自《老饼讲解-机器学习》

0. 前言-决策树介绍

决策树(Decision Tree)是一种常见的机器学习方法,它基于树形结构来进行决策。

决策树在分类问题中特别有效,也可以用于回归问题。它通过将数据集划分成若干个子集,从而实现对整个数据集的预测。决策树的每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。决策树是一种直观运用概率分析的一种图解法,其目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。

一、决策树有哪些

那么,但我们经常到到CART决策树、ID3决策树等等,对于刚接触决策树的同学是非常困惑的,下面我们详细讲讲决策树有哪些种类。

主要有以下5种常见决策树

1.ID3决策树

2. C4.5决策树,

3.C5.0决策树

4.CART分类树

5.CART回归树

但从技术角度进行分类,它们又可以分为两条支线

1.CART: classification and regression tree,分类与回归树
                        即CART自身包括了分类树与回归树
2.ID3系列: ID3算法,C4.5算法,C5.0算法         

 

目前matlab和python软件都只实现了CART决策树,如果要实现ID3,C4.5,C5.0等,一般需要自行编写代码进行实现

二、各种决策树详细解释

下面我们详细介绍各种决策树,同时区分各种决策树的特性

2.1 ID3决策树

ID3决策树是由Ross Quinlan发明的用于决策树的算法,该算法建立在奥卡姆剃刀的基础上:越是小型的决策树越优于大的决策树。

ID3决策树只支持枚举变量。每个节点选择一个变量,按该变量所有可能取值分叉。

下面是一棵ID3决策树:

ID3算法使用信息增益来选择属性,以构建决策树。它首先计算当前例子集合的熵,然后计算每个属性的信息增益,并选择信息增益最大的属性作为当前节点的测试条件。然后,算法将根据该属性的值将例子集合划分为两个子集,并递归地在每个子集上执行相同的过程,直到满足停止条件为止。

ID3决策树的优点:
1.算法简单,通俗易懂。
2.可以处理离散型数据。
3.能够利用信息增益来选择属性,选择信息增益最大的属性作为根节点,从而帮助算法有效地进行决策。
ID3决策树的缺点:
1.无法处理缺失值,需要对缺失值进行预处理。
2.只能处理离散值,无法处理连续值。对于连续值的处理需要先进行离散化处理,这个过程可能会带来信息的损失。
3.存在偏向于选择取值较多的特征的问题。因为特征取值越多,说明划分的越细,不确定性越低,信息增益则越高。
4.容易出现过拟合。为了避免过拟合问题,可以裁剪决策树,去掉一些不必要的子树或叶节点,或者设置决策树的最大深度。

2.2 C4.5决策树

C4.5决策树是ID3决策树算法的改进版,由Ross Quinlan提出。C4.5决策树在以下几方面对ID3算法进行了改进:

1.用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足。
2.在树构造过程中进行剪枝。
3.能够完成对连续属性的离散化处理。
4.能够处理不完整数据。
C4.5决策树算法的优点是产生的分类规则易于理解且准确率较高。但是,在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,从而导致算法的低效。

C4.5决策树算法的优点包括:
1.产生的分类规则易于理解,准确率较高。
2.能够完成对连续属性的离散化处理。
3.能够处理不完整数据。
4.在树构造过程中进行剪枝。
C4.5决策树算法的缺点包括:
1.算法相对ID3要复杂许多
2.在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,从而导致算法的低效。

2.3 C5.0决策树

C5.0决策树是对C4.5算法的改进,主要在以下几个方面进行了优化:

1.引入了分支度(branching degree)的概念,用信息增益率作为判断优先划分属性的标准。分支度的计算公式是指,若某划分属性S将样本T划分成n个子集T1,T2,...Tn,则此属性S的分支度就等于:每个分支子集Ti的个数ci,出于样本总个数t,然后再乘以log2ci/t,然后再把各个分支的计算值加起来。
2.C5.0和C4.5可以处理数值型数据,处理方式核心思想:将数值从小到大排序,对每两个数值间进行试探切割,算出Gain Ratio,找到最大的那个切割Gain Ratio,进行切割离散化。
3.剪枝:C4.5和C5要对决策树进行剪枝,剪枝的目的是为了避免过拟合问题。这两种算法的剪枝方法是Bottom-Up从下往上剪枝,也就是说,先利用训练集把决策树建好。然后从下往上砍树。
总的来说,C5.0决策树在保持准确性的同时更注重算法效率,在处理数据时具有更强的泛化能力

2.4 CART分类树

CART(Classification And Regression Trees)决策树是一种常见的机器学习方法,可以用于分类和回归。CART决策树在做分类时,称为CART分类树。

下面是一棵CART分类树:

CART分类树采用递归的方式将数据空间划分为不重叠的矩形,其分类过程如下:
1.选择一个自变量和一个值,将数据空间划分为两部分,一部分的所有点都满足该条件,另一部分的所有点都不满足该条件。
2.对每个划分点,计算其基尼系数,并选择划分后基尼系数最小的点进行划分。
3.将整个数据空间划分为多个子集,每个子集都采用相同的划分方式,直到满足停止条件为止。
4.对于每个叶子节点,采用多数表决的方式进行分类,即选择该节点中占比最大的类别作为该节点的预测类别。
CART分类采用叶子节点中样本数最多的类别作为该节点的预测类别。

CART决策树的详细构建过程可参考老饼讲解|【原理】CART决策树构建过程详细讲解

2.5 CART回归树

CART回归树是与CART分类树一样,仍然是一棵二叉树,只是最终叶子节点是一个数值

下面是一棵CART回归树,它通过身高、年龄预测体重(体重是连续变量)

CART决策树回归过程如下:
1.用树模型做回归问题,每一个叶子节点都输出一个预测值,预测值一般是该叶子节点所含训练集样本的输出均值。
2.CART回归树的特征和分割点选择准则:CART回归树常用均方误差(Mean Squared Error,MSE/L2)最小化准则作为特征和分割点的选择方法。
需要注意的是,CART决策树回归的过程与分类树类似,但采用不同的评价标准。对于回归问题,CART采用均方误差作为评价标准,通过最小化每个节点中的观测值和平均值之间的误差平方和来选择最佳的分割点。

CART决策树的优点:
1.可以处理非线性关系:CART决策树可以捕捉变量之间的非线性关系,而不需要事先假设数据之间的关系。
2.易于解释:CART决策树生成的规则很容易理解,有助于业务决策和解释。
3.可以进行特征选择:CART决策树可以通过计算每个特征的信息增益或基尼指数来选择重要的特征,这对于高维数据集非常有用。
4.可以处理大规模数据集:CART决策树算法可以处理大规模数据集,并且在处理大数据集时相对较快。
CART决策树的缺点:
1.容易过拟合:CART决策树容易过度拟合训练数据,导致泛化能力较差。为了避免过拟合,需要进行剪枝或者使用正则化方法。
2.对缺失值和异常值敏感:CART决策树对缺失值和异常值比较敏感,可能导致生成的决策树不稳定。需要对数据进行预处理,如填充缺失值或删除异常值。
3.可能创建偏向的树:如果某些类别的样本数量过大,CART决策树可能会创建偏向这些类别的树。需要对数据进行平衡处理或者使用适当的采样技术。

如果觉得本文有帮助,点个赞吧!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wwcsd2018001/article/details/134742864

智能推荐

神经网络初探-程序员宅基地

文章浏览阅读117次。神经网络初探——读《深度学习的数学》总结​ 学习是一个系统通过某种过程或者方式提升自身的某个或某些性能的过程,它本身包含的是一种自动化和可控化的含义。那么如何能让不具备智能的机器去学习呢?在模拟大脑神经元的工作原理后,看来我们已经找到了通往机器学习的一种方法,它叫做神经网络。神经网络是一种看似不可理解的复杂学习方法,这里包含着许多数学的知识。在阅读《深度学习的数学》一书之后,我想,我对神经网..._神经网络初探

音频分离Spleeter的安装_2stems.tar.gz-程序员宅基地

文章浏览阅读3.5k次,点赞5次,收藏13次。音频分离Spleeter的安装1.环境依赖及建立(需要已安装anaconda)1.0 项目源地址(github地址)1.1 创建虚拟环境1.2 激活虚拟环境1.3 conda 安装spleeter1.4 下载一个示例音乐1.5 将该音乐分离为两部分1.5.1 报错:No module named numba.decorators1.5.2 解决方案:1.6 下载分类模型1.6.1报错ValueError:Can't load save_path when it is None.1.6.2 解决方案:1.6._2stems.tar.gz

让你的软件飞起来:RGB转为YUV-程序员宅基地

文章浏览阅读64次。朋友曾经给我推荐了一个有关代码优化的pdf文档《让你的软件飞起来》,看完之后,感受颇深。为了推广其,同时也为了自己加深印象,故将其总结为word文档。下面就是其的详细内容总结,希望能于己于人都有所帮助。速度取决于算法同样的事情,方法不一样,效果也不一样。比如,汽车引擎,可以让你的速度超越马车,却无法超越音速;涡轮引擎,可以轻松超越音障,却无法飞出地球;如果有火箭发动机,就可以到达火..._bao.yuv

PX4装机教程(五)无人船(车)_在px4固体中如何设置差速船-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏33次。文章目录前言一、载具设置二、电机接线三、PWM输出设置四、航点设置前言一个人可以走的更快,一群人才能走的更远,交流学习加qq:2096723956更多保姆级PX4+ROS学习视频:https://b23.tv/ZeUDKqy分享知识,传递正能量,如有疏漏或不当之处,恳请指出.PX4固件版本:1.10.0硬件:淘宝竞速船或者打窝船实验录屏https://www.bilibili.com/video/BV1wA411c7p3?spm_id_from=333.999.0.0一、载具设置单电机_在px4固体中如何设置差速船

一键批量查询快递单号,一键批量查询,共享备份物流,快递物流尽在掌控_批量快递查询-程序员宅基地

文章浏览阅读370次。每天都有大量的快递单号需要查询,如果一个个手动查询,不仅费时费力,还容易出错。为了解决这个问题,我们教您如何批量查询快递单号,并将快递物流信息进行备份并共享,实现高效管理。弹出一个对话框,文件名和保存类型不变,直接点“保存”,会提示备份成功,那么这个数据库就备份在电脑上了,也可以用第三方工具发送到其他电脑上。第四步,查询速度很快,我们就可以在主页面看到该批单号的运件信息了,比如:发出时间,状态,最后更新的物流时间,等等。第二步,在弹出来的文件框里,将需要查询的德邦快递单号都一一导入,并点击保存。_批量快递查询

敏捷开发(scrum)简介-程序员宅基地

文章浏览阅读7.7k次,点赞6次,收藏61次。敏捷开发(scrum)是一种软件开发的流程,强调快速反应、快速迭代、价值驱动。Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;运用该流程,你就能看到你团队高效的工作。一、四大价值观(特点)敏捷开发的特点就是下面4句话:「个体与交互」胜过「过程与工具」「可以工作的软件」胜过「面面俱到的文挡」「客户协作」胜过「合同谈判」「响应变化」胜过「遵循计划」说明:(1)敏捷开发(scrum)适用于竞争激烈,快速变化的市场。 敏捷的客户协作观念,快速迭代能帮助团队以最小成本,最快速_敏捷开发

随便推点

【玩转华为云】手把手教你用Modelarts基于YOLO V3算法实现物体检测-程序员宅基地

文章浏览阅读2k次。本篇推文共计2000个字,阅读时间约3分钟。华为云—华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器、云数据库、云安全等云计算服务,软..._modelarts yolo weights 文件 bbs 华为云

WiFi介绍_wifi dfs-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏13次。802.11 Wi-Fi_wifi dfs

RK3568-sata接口_rk3568 sata-程序员宅基地

文章浏览阅读249次。pcie接口sata接口pcie总线pcie总线pcie控制器sata控制器nvme设备sata设备nvme协议ahci协议m-key接口b-key接口_rk3568 sata

java实现循环队列,解决普通队列假溢出问题_但是要利用循环队列的时候,处理假溢出,要使q.front=0的时候,为什么q.rear要加-程序员宅基地

文章浏览阅读1.3k次。循环队列可以很好的解决假溢出问题,不同于普通队列,在循环队列中,需将rear与front初始值都设置为0,rear指针指向队列中最后一个元素的下一个位置,也正因如此,数组是否存满的判定条件也应做出改变,在普通队列中,front==maxSize-1,即可认为数组已满,但是在循环队列中,由于在存放完数组最后一个有效位置后可以继续像数组中的0号位置进行存储,所以判断满的条件也会发生改变,—(rear+1)%maxSize = front.可以举个例子方便理解,假设一maxSize=5的数组,那么其有0 1_但是要利用循环队列的时候,处理假溢出,要使q.front=0的时候,为什么q.rear要加

linux CentOS 7下载步骤_centos7下载-程序员宅基地

文章浏览阅读4.8k次。linux CentOS 7下载步骤_centos7下载

Qt 22 布局管理器1 - QLayout,QBoxLayout,布局管理器的相互嵌套_qt layout可以嵌套layout吗-程序员宅基地

文章浏览阅读464次。布局管理器提供相关的类对界面组件进行布局管理能够自动排布窗口中的界面组件窗口变化后自动更新界面组件的大小QLayoutQLayout 是Qt 中布局管理器的抽象基类通过继承QLayout实现了功能各异且互补的布局管理器Qt中可以根据需要自定义布局管理器布局管理器不是界面部件,而是界面部件的定位策略QBoxLayout 布局管理器以水平或者垂直的方式管理界面组件水平:QHBoxLayout 水平布局管理器垂直:QVBoxLayout 垂直布局管理器sizePolicy:QSize_qt layout可以嵌套layout吗

推荐文章

热门文章

相关标签