决策树(Decision Tree)

这篇具有很好参考价值的文章主要介绍了决策树(Decision Tree)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 决策树简介

决策树,顾名思义,就是帮我们做出决策的树。现实生活中我们往往会遇到各种各样的抉择,把我们的决策过程整理一下,就可以发现,该过程实际上就是一个树的模型。

决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树,这里我们只讨论分类树。

比如选择好瓜的时候:

决策树(Decision Tree)

我们可以认为色泽、根蒂、敲声是一个西瓜的三个特征,每次我们做出抉择都是基于这三个特征来把一个节点分成好几个新的节点。

在上面的例子中,色泽、根蒂、声音特征选取完成后,开始进行决策,在我们的问题中,决策的内容实际上是将结果分成两类,即是(1)否(0)好瓜。这一类智能决策问题称为分类问题,决策树是一种简单的处理分类问题的算法。

2. 决策树原理

2.1 引例

一颗完整的决策树包含以下三个部分:
(1)根节点:就是树最顶端的节点,比如上面图中的“色泽”。
(2)叶子节点:树最底部的那些节点,也就是决策结果,好瓜还是坏瓜。
(3)内部节点,除了叶子结点,都是内部节点。

树中每个内部节点表示在一个属性特征上的测试,每个分支代表一个测试输出,每个叶节点表示一种类别。

给定一个决策树的实例:

决策树(Decision Tree)

构造决策树如下:

决策树(Decision Tree)

第一层

根节点:被分成17份,8是/9否,总体的信息熵为:

决策树(Decision Tree)

第二层

清晰:被分成9份,7是/2否,它的信息熵为:

决策树(Decision Tree)

稍糊:被分成5份,1是/4否,它的信息熵为:

决策树(Decision Tree)

模糊:被分成3份,0是/3否,它的信息熵为:

决策树(Decision Tree)

我们规定,假设我们选取纹理为分类依据,把它作为根节点,那么第二层的加权信息熵可以定义为:

决策树(Decision Tree)

我们规定,H’< H0,也就是随着决策的进行,其不确定度要减小才行,决策肯定是一个由不确定到确定状态的转变。

因此,决策树采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为0,此时每个叶子节点中的实例都属于同一类。

2.2 生成算法

构建决策树时,首先要选择一个根节点,而究竟选择谁来当根节点的准则,有以下三种。

2.2.1 ID3(信息增益)

从信息论的知识中我们知道:信息熵越大,样本的纯度越低。ID3 算法的核心思想就是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂。

信息增益 = 信息熵 - 条件熵:

决策树(Decision Tree)

也可以表示为H0 - H1,比如上面实例中我选择纹理作为根节点,将根节点一分为三,则:

决策树(Decision Tree)

意思是,没有选择纹理特征前,是否是好瓜的信息熵为0.998,在我选择了纹理这一特征之后,信息熵下降为0.764,信息熵下降了0.234,也就是信息增益为0.234。

2.2.2 C4.5(信息增益率)

C4.5算法最大的特点是克服了ID3对特征数目的偏重这一缺点,引入信息增益率来作为分类标准。

信息增益率=信息增益/特征本身的熵:

决策树(Decision Tree)

信息增益率对可取值较少的特征有所偏好(分母越小,整体越大),因此C4.5并不是直接用增益率最大的特征进行划分,而是使用一个启发式方法:先从候选划分特征中找到信息增益高于平均值的特征,再从中选择增益率最高的。

例如上述的例子,我们考虑纹理本身的熵,也就是是否是好瓜的熵。

纹理本身有三种可能,每种概率都已知,则纹理的熵为:

决策树(Decision Tree)

那么选择纹理作为分类依据时,信息增益率为:

决策树(Decision Tree)

2.2.3 CART(基尼指数)

基尼指数(基尼不纯度):表示在样本集合中一个随机选中的样本被分错的概率。

基尼系数越小,不纯度越低,特征越好。这和信息增益(率)正好相反。基尼指数可以用来度量任何不均匀分布,是介于0-1之间的数,0是完全相等,1是完全不相等。

决策树(Decision Tree)

2.3 三种算法的对比

适用范围:

ID3算法只能处理离散特征的分类问题,C4.5能够处理离散特征和连续特征的分类问题,CART算法可以处理离散和连续特征的分类与回归问题。

假设空间:

ID3和C4.5算法使用的决策树可以是多分叉的,而CART算法的决策树必须是二叉树。

优化算法:

ID3算法没有剪枝策略,当叶子节点上的样本都属于同一个类别或者所有特征都使用过了的情况下决策树停止生长。

C4.5算法使用预剪枝策略,当分裂后的增益小于给定阈值或者叶子上的样本数量小于某个阈值或者叶子节点数量达到限定值或者树的深度达到限定值,决策树停止生长。

CART决策树主要使用后剪枝策略。

2.4 剪枝处理

决策树算法很容易过拟合,剪枝算法就是用来防止决策树过拟合,提高泛华性能的方法。剪枝分为预剪枝后剪枝

2.4.1 预剪枝

预剪枝是指在决策树的生成过程中,对每个节点在划分前先进行评估,若当前的划分不能带来泛化性能的提升,则停止划分,并将当前节点标记为叶节点。

预剪枝方法有:
(1)当叶节点的实例个数小于某个阈值时停止生长;
(2)当决策树达到预定高度时停止生长;
(3)当每次拓展对系统性能的增益小于某个阈值时停止生长;

预剪枝不足就是剪枝后决策树可能会不满足需求就被过早停止决策树的生长。

2.4.2 后剪枝

后剪枝是指先从训练集生成一颗完整的决策树,然后自底向上对非叶节点进行考察,若将该节点对应的子树替换为叶节点,能带来泛化性能的提升,则将该子树替换为叶节点。

后剪枝决策树通常比预剪枝决策树保留了更多的分枝,一般情形下,后剪枝决策树的欠拟合风险很小,泛化能力往往优于预剪枝决策树。但后剪枝决策树是在生产完全决策树之后进行的,并且要自底向上地对所有非叶子节点进行逐一考察,因此其训练时间开销比未剪枝的决策树和预剪枝的决策树都要大很多。

3. 决策树特点

优点:
容易理解,可解释性较好
可以用于小数据集
时间复杂度较小
可以处理多输入问题,可以处理不相关特征数据
对缺失值不敏感

缺点:
在处理特征关联性比较强的数据时,表现得不太好
当样本中各类别不均匀时,信息增益会偏向于那些具有更多数值的特征
对连续性的字段比较难预测
容易出现过拟合
当类别太多时,错误可能会增加得比较快

4. 决策树的Python应用

在sklearn库中提供了DecisionTreeClassifier函数来实现决策树算法,其函数原型如下:

sklearn.tree.DecisionTreeClassifier(criterion='gini',max_deepth=None,random_state=None)

参数说明:

在python中决策数中默认的是gini系数,也可以选择信息增益的熵’entropy’

max_depth:树的深度大小

random_state:随机数种子

测试代码如下:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import tree
  
iris = load_iris()	# 数据集导入
features = iris.data	# 属性特征
labels = iris.target	# 分类标签
train_features, test_features, train_labels, test_labels = \
    train_test_split(features, labels, test_size=0.3, random_state=1)	# 训练集,测试集分类
clf = tree.DecisionTreeClassifier(criterion='entropy',max_depth=3)
clf = clf.fit(train_features, train_labels)	#X,Y分别是属性特征和分类label
test_labels_predict = clf.predict(test_features)	# 预测测试集的标签
score = accuracy_score(test_labels, test_labels_predict)	# 将预测后的结果与实际结果进行对比
print("CART分类树的准确率 %.4lf" % score)	# 输出结果
dot_data = tree.export_graphviz(clf, out_file='iris_tree.dot')	# 生成决策树可视化的dot文件

输出结果如下:

CART分类树的准确率 0.9556

5. 源码仓库地址

🌼 图像处理、机器学习的常用算法汇总文章来源地址https://www.toymoban.com/news/detail-503404.html

到了这里,关于决策树(Decision Tree)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第六章.决策树(Decision Tree)—CART算法

    第六章.决策树(Decision Tree) CART决策树的生成就是递归地构建二叉决策树的过程。 CART用基尼(Gini)系数最小化准则来进行特征选择,生成二叉树 。 1).题干: 分别计算它们的Gini系数增益,取Gini系数增益值最大的属性作为决策树的根节点属性。 2).计算 ①. 根节点的Gini系数: ②

    2024年01月17日
    浏览(50)
  • 基于决策树(Decision Tree)的乳腺癌诊断

            决策树(DecisionTree)学习是以实例为基础的归纳学习算法。算法从--组无序、无规则的事例中推理出决策树表示形式的分类规则,决策树也能表示为多个If-Then规则。一般在决策树中采用“自顶向下、分而治之”的递归方式,将搜索空间分为若千个互不相交的子集,在决策

    2024年02月12日
    浏览(40)
  • 决策树(Decision Tree)原理解析:从基本概念到建立模型

    决策树是一种常用的机器学习算法,用于解决分类和回归问题。它基于树形结构进行决策,通过一系列的分裂和判断条件来预测目标变量的值。本文将详细解析决策树的原理,从基本概念到建立模型的过程 决策树由节点和边组成,其中节点表示特征或属性,边表示特征的取值

    2024年02月10日
    浏览(47)
  • 【机器学习】Decision Tree 决策树算法详解 + Python代码实战

    决策树即通过一步步决策得到最终结果的树 如下图所示,如果要判断一个人在家庭里的身份,我们可以先判断ta年龄是否大于15,如果是,则说明ta是爷爷或奶奶或妈妈,如果不是,则再判断ta是否为男性,如果是,则ta是儿子,否则ta是女儿。 这就是一个决策树的基本流程。

    2024年01月23日
    浏览(47)
  • 【机器学习】决策树(Decision Tree,DT)算法介绍:原理与案例实现

    前言   决策树算法是机器学习领域中的一种重要分类方法,它通过树状结构来进行决策分析。决策树凭借其直观易懂、易于解释的特点,在分类问题中得到了广泛的应用。本文将介绍决策树的基本原理,包括熵和信息熵的相关概念,以及几种经典的决策树算法。   在进

    2024年04月11日
    浏览(42)
  • 机器学习集成学习——GBDT(Gradient Boosting Decision Tree 梯度提升决策树)算法

    机器学习神经网络——Adaboost分离器算法 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 文章目录 系列文章目录 前言 一、GBDT(Gradient Boosting Decision Tree) 梯度提升决策树简介 1.1、集成学习 1.2、

    2024年02月09日
    浏览(50)
  • 什么是机器学习?监督学习的定义、概率论的基本概念以及模型选择、过拟合与欠拟合的问题。常见的监督学习算法,包括朴素贝叶斯(Naive Bayes)、决策树(Decision Tree)支持向量机随机森林

    作者:禅与计算机程序设计艺术 什么是机器学习?从定义、发展历程及目前的状态来看,机器学习由3个主要分支组成:监督学习(Supervised Learning),无监督学习(Unsupervised Learning)和强化学习(Reinforcement Learning)。这三类学习都可以使计算机系统根据输入数据自动分析和改

    2024年02月09日
    浏览(53)
  • 软件测试_决策表(Decision Table)

    定义 利用判定表设计测试用例集合的方法叫做判定表驱动分析法(决策表法)。 决策表测试 在所有的黑盒测试方法中,基于决策表的测试是 最严格的、最具有逻辑性的 测试方法。 决策表一直被用来表示和分析复杂的逻辑关系,描述不同条件集合下采取行动的若干组合情况

    2024年02月07日
    浏览(40)
  • 【python库学习】 sklearn中的决策树Decision Trees

    一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集.从根结点到每个叶结点的路径对应了一个判定测试序列. 划分准则

    2024年04月28日
    浏览(41)
  • 关于credal set和credal decision tree的一点思考(其实就是论文笔记)

    阅读Abellán老师的Credal-C4.5时,发现好难。。。然后又额外补充了一些论文,终于稍微懂一点点了,所以记录如下。 credal set在DS theory的定义如下 [1]: 这句话的意思是(证据理论中的)credal set是一个概率的凸集,这里面的概率p(x)受到上界pl函数和下界bel函数的控制(约束),

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包