10.【机器学习】十大算法之一决策树(Decision tree)算法原理讲解

【机器学习】十大算法之一决策树(Decision tree)算法原理讲解

  • 一·摘要
  • 二·个人简介
  • 三·什么是决策树
  • 四·什么是树
    • 4.1 二叉树
      • 4.1.1 特殊的二叉树:
      • 4.1.2 举例说明
  • 五·决策树的优缺点
    • 5.1 优点
    • 5.2 缺点
  • 六·算法原理
  • 七·信息熵
  • 八·信息增益
  • 九·信息增益率
  • 十·基尼指数
  • 十一·如何学习决策树
  • 十二·3种典型的决策树算法
    • 12.1 ID3算法(Iterative Dichotomiser 3)
    • 12.2 C4.5算法
    • 12.3 CART(Classification and Regression Trees)算法

一·摘要

在这里插入图片描述

决策树是一种广泛应用于机器学习和数据分析领域的算法,它特别适用于分类和回归问题。作为一种监督学习算法,决策树通过模仿人类决策过程来构建预测模型。它的核心思想是从数据特征中选择最优的属性作为决策节点,然后根据这个属性的值将数据分成几个子集,这个过程递归地在每个子集上重复,直到满足某个停止条件。

决策树的结构可以形象地看作是一棵树,其中根节点代表整个数据集,内部节点代表数据的一个特征属性,叶节点则代表最终的决策结果。从根节点到叶节点的每条路径都代表一个规则,这些规则合在一起就形成了一个完整的决策过程。在分类问题中,决策树通过一系列的问题将数据分到不同的类别中;而在回归问题中,决策树则预测一个连续的数值。

构建决策树的过程通常包括特征选择、决策节点的确定、树的生成和剪枝。特征选择的目的是找到数据中最具区分能力的特征,决策节点的确定则是基于这个特征将数据集分割成更小的、更同质的子集。树的生成是递归地应用特征选择和决策节点确定的过程,直到满足停止条件,比如达到某个树深度、所有数据点都属于同一类别或某一类的误差低于预设阈值。剪枝是决策树的优化过程,目的是防止过拟合,通过移除或合并一些节点来简化树的结构。

二·个人简介

🏘️🏘️个人主页:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

🐘 希望大家能持续支持,共同向前迈进!😁
如果您觉得文章有价值,
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
类型专栏
Python基础Python基础入门—详解版
Python进阶Python基础入门—模块版
Python高级Python网络爬虫从入门到精通🔥🔥🔥
Web全栈开发Django基础入门
Web全栈开发HTML与CSS基础入门
Web全栈开发JavaScript基础入门
Python数据分析Python数据分析项目🔥🔥
机器学习机器学习算法🔥🔥
人工智能人工智能

三·什么是决策树

在这里插入图片描述

决策树是一种直观且强大的机器学习算法,用于通过一系列的问题将数据分类到不同的类别中,或者预测一个连续的数值。它模仿了人类决策过程,通过树形结构进行决策,其中每个内部节点代表一个特征属性上的判断,每个分支代表判断的结果,而每个叶节点则代表最终的决策结果。决策树的构建过程从根节点开始,根节点代表整个数据集,然后基于数据集中某个特征的最佳分割点,递归地将数据集分割成越来越小的子集,直到满足特定的停止条件,如达到预设的最大深度、所有数据点属于同一类别或分类误差低于某个阈值。

决策树算法的核心在于特征选择,即在每个节点上选择哪个特征进行分割,以使得数据集的分类尽可能清晰。特征选择的方法有多种,如信息增益、基尼不纯度等,它们帮助算法确定哪个特征对分类最有区分能力。随着树的不断生长,可能会产生过拟合的问题,即模型对训练数据拟合得过于完美,以至于失去了泛化能力。为了避免这种情况,决策树通常需要进行剪枝,剪枝通过减少树的大小来防止过拟合,提高模型的泛化能力。

决策树的优势在于模型的可解释性,我们可以很容易地理解模型是如何做出预测的。此外,决策树能够处理各种类型的数据,包括数值型和类别型,并且对数据的准备要求相对较低。然而,决策树也有一些局限性,比如容易受到数据中噪声和异常值的影响,以及在某些情况下可能会偏向于过于复杂的模型。

四·什么是树

树是 个结点的有限集合,若 ,则该树为空树,该集合需要满足以下条件才能被称为树:
对于任意一个非空树,
(1)有且仅有一个根结点,也就是第一层只有一个结点
(2)当结点数量大于1时,根结点以外的结点可分为互不相交的有限集合,每一个集合本身也是一个棵
树,并称为根结点的子树
下图所示是一个完全二叉树,用于理解层次、深度等名词的概念,其中A、B结点有两颗子树,其深度为2,无
子树的结点,其深度为0
在这里插入图片描述

4.1 二叉树

二叉树是一种特殊的树,具有如下特点:
1.每个结点最多有两棵子树,深度只能为0、1、2
2.二叉树的子树是区分左右的,即使结点只有一颗子树,也要区分它是左子树还是右子树
二叉树的五种基本形态:
(1)空子树,没有编号的圆圈表示,实际无结点
(2)只有一个根结点
(3)根结点只有左子树
(4)根结点只有右子树
(5)根结点既有左子树也有右子树
在这里插入图片描述

4.1.1 特殊的二叉树:

	1.完全二叉树
			除了最下层,其余每层的结点数都达到了最大值,且最下层的叶子结点从最左位置开始排列
	2.满二叉树
			每层的结点数都达到了最大值,满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树
			![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/622e28965e7748e4adb1bc384a70ea67.png)

4.1.2 举例说明

比如:你母亲要给你介绍男朋友,是这么来对话的:
女儿:多大年纪了?
母亲:26
女儿:长的帅不帅?
母亲:挺帅的
女儿:收入高不?
母亲:不算很高,中等情况
女儿:是公务员不?
母亲:是,在税务局上班呢
女儿:那好,我去见见
下图完整表达了这个女孩决定是否见一个约会对象的策略
绿色结点表示判断条件,橙色结点表示决策结果

在这里插入图片描述
应用场景
一个叫做二十个问题的游戏,游戏的规则很简单:
参与游戏的一方在脑海中想某个事物,其他参与者向他提问,只允许提 20 个问题,问题的答案也只能
用对或错回答
问问题的人通过推断分解,逐步缩小待猜测事物的范围,最后得到游戏的答案
一个邮件分类系统,大致工作流程如下:
首先检测发件人的邮箱地址,如果是公司邮箱的域名, 则将其归类为需要及时处理的邮件,如果不是来自
这个域名,则检测邮件内容是否包含指定的关键词,如篮球、科技、新闻等,如果包含则将其归类为空
闲时阅读的邮件,如果不包含则将其归类为无需阅读的垃圾邮件。

五·决策树的优缺点

5.1 优点

  1. 决策树易于理解和解释,可以可视化分析,容易提取出规则;
  2. 可以同时处理标称型和数值型数据;
  3. 比较适合处理有缺失属性的样本;
  4. 能够处理不相关的特征;
  5. 测试数据集时,运行速度比较快;
  6. 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

5.2 缺点

  1. 容易发生过拟合(随机森林可以很大程度上减少过拟合);
  2. 容易忽略数据集中属性的相互关联;
  3. 对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
  4. ID3算法计算信息增益时结果偏向数值比较多的特征。 帮我重新整合上述内容

六·算法原理

决策树是一种树形结构(二叉树或非二叉树),由结点(node)和有向边(directed edge)组成,结点有两
种类型:内部结点(internal node)和叶子结点(leaf node),内部结点表示一个特征或属性
(features),叶子结点表示一个类别(labels)
决策树的决策过程:从根结点开始,对实例的某一特征进行测试,并根据测试结果,将实例分配到其子结
点,每个子结点对应该特征的一个取值,如此递归地对实例进行测试并分配,直到到达叶子结点,最后将叶
子结点的类别作为决策结果
如何将数据集最好地划分为不同的类别?如何设定数据集的划分准则:先以哪个特征来划分?后以哪个特征
来划分?
那么就涉及到信息熵和信息增益的重要概念
数据集的划分原则:将无序的数据变得更加有序,将不确定的数据变得更加确定
决策树停止生成的条件,即数据集停止划分的条件:
(1)当前结点包含的样本全属于同一类别,无需划分
(2)当前属性集(即特征)为空,或是所有样本在所有属性(即特征)上取值相同,无法划分
(3)当前结点包含的样本集合为空,不能划分
思考:女孩相亲为何优先判断年龄?如何衡量年龄这个特征的重要性?就是决策树要解决的核心问题

七·信息熵

信息论(information theory)中的熵(entropy)
1948年,香农提出了信息熵的概念,解决了对信息的量化度量问题,也称香农熵,简称熵
一条信息的信息量大小和它的不确定性有直接的关系。比如说,我们要搞清楚一件非常非常不确定的
事,或是我们一无所知的事情,就需要了解大量的信息。相反,如果我们对某件事已经有了较多的了
解,我们不需要太多的信息就能把它搞清楚。所以,从这个角度,我们可以认为,信息量的度量就等于
不确定性的多少
设数据集 中第 类样本所占比例为 ,则 的信息熵定义为
在这里插入图片描述
简单来说,信息熵表示信息的混乱程度(不确定性或纯度)
信息越有序,信息熵越小,信息越无序,信息熵越大
信息熵越大越不确定,信息熵越小越确定

八·信息增益

信息增益(information gain):数据集划分前后的信息差值称为信息增益,选择信息增益最高的特征优先划

若使用特征 对数据集 进行划分,特征 有 个值,第 个分支结点的样本为 ,数据集 中第 个分支结点
的样本所占比例为 ,那么特征 对数据集 进行划分所获得的信息增益为:

在这里插入图片描述

ID3算法以信息增益为准则划分,划分后的剩余数据集再以信息增益为准则接着划分,以此递归,直到所有数
据集划分完毕,最终得到整个决策树.

九·信息增益率

信息增益准则偏好取值较多的特征,可能导致过拟合,而无法对新样本有效预测
C4.5算法不直接使用信息增益,而是以信息增益率为准则划分,信息增益率定义为:
在这里插入图片描述
注意:信息增益率准则偏好取值较少的特征,因此C4.5算法并不是直接选择信息增益率最高的特征优先划
分,而是从信息增益高于平均水平的特征中,选择信息增益率最高的特征划分.

十·基尼指数

基尼指数:越大越不确定(纯度越低),越小越确定(纯度越高),选择基尼指数最小的特征优先划分
CART算法以基尼指数为准则划分,基尼指数定义为:

十一·如何学习决策树

在这里插入图片描述

决策树学习是一个将数据转换为决策树模型的过程,通常包括三个主要步骤:特征选择、决策树的生成和决策树的剪枝。

  1. 特征选择是决策树学习中的第一步,它涉及从数据集中众多特征中选择一个最具信息量的特征作为节点分裂的依据。特征选择的目的是找到一个特征,使得基于该特征的数据分割能够最大化类别的分离度,即让分割后的数据子集尽可能地纯净,包含同一类别的样本尽可能多,不同类别的样本尽可能少。特征选择的方法通常包括信息增益、基尼不纯度等,这些方法通过计算每个特征的不纯度来评估其对分类的贡献度。
  2. 决策树的生成是基于特征选择的结果,递归地构建树的过程。从根节点开始,使用特征选择得到的最佳特征对数据集进行分割,然后对分割后的每个子集重复这一过程,继续寻找子集中的最佳特征进行进一步的分割,直到满足停止条件,比如子集中的样本全部属于同一类别、没有更多特征可供选择或者达到了预设的最大深度。这个过程中,每个内部节点代表了一个特征的测试,而每个分支代表测试的一个结果,叶节点则代表最终的决策或预测结果。
  3. 决策树的剪枝是为了解决过拟合问题而采取的一种技术。过拟合意味着决策树过于复杂,对训练数据的噪声过于敏感,导致模型在未知数据上的泛化能力下降。剪枝通过移除或合并一些节点来简化决策树的结构,减少树的复杂度。剪枝可以是预剪枝,即在生成过程中提前停止树的生长;也可以是后剪枝,即先生成一个完整的树,然后自底向上地剪除对整体性能没有贡献或贡献很小的分支。剪枝的目的是找到一棵既能很好地拟合训练数据,又具有较强泛化能力的决策树。

十二·3种典型的决策树算法

在这里插入图片描述
决策树算法家族中,有三种特别典型的算法,它们分别是ID3算法、C4.5算法和CART算法,每种算法都有其独特的特点和应用场景。

12.1 ID3算法(Iterative Dichotomiser 3)

ID3算法(Iterative Dichotomiser 3)是最早的决策树算法之一,由Ross Quinlan在1986年提出。它主要用于分类问题,通过信息增益作为特征选择的依据。信息增益度量了不包含数据集中的类别信息时的熵与包含数据集中某个特征后剩余的熵之间的差值。ID3算法递归地选择最具有信息增益的特征作为节点分裂的依据,直到达到停止条件。然而,ID3算法在处理连续特征时存在困难,且对噪声数据和异常值较为敏感。

12.2 C4.5算法

C4.5算法是ID3算法的改进版,由Ross Quinlan在1993年提出。C4.5算法不仅改进了ID3在处理连续特征和缺失值的问题,还引入了树的构建后剪枝的机制,提高了模型的准确性和鲁棒性。C4.5算法使用信息增益比来选择特征,这在存在多个具有相似信息增益的特征时,能够更有效地选择特征。此外,C4.5算法能够处理不一致的数据集,并生成可理解的规则。

12.3 CART(Classification and Regression Trees)算法

CART(Classification and Regression Trees)算法是一种既可以用于分类问题也可以用于回归问题的决策树算法。CART算法的核心在于它能够处理二元分类问题,并且可以构建出不需要剪枝的决策树。CART算法使用基尼不纯度作为分裂准则,这是一种衡量数据集纯度的指标。在分类问题中,CART算法生成的树能够自动处理多类问题;在回归问题中,它使用成本函数来最小化预测误差。CART算法的另一个特点是它能够处理各种类型的数据,包括数值型和类别型,并且可以自动处理缺失值。

这三种决策树算法各有优势,ID3算法作为基础算法,为决策树的发展奠定了基础;C4.5算法在ID3的基础上进行了改进,提高了算法的健壮性;而CART算法则因其灵活性和对不同类型问题的适应性,成为了应用广泛的决策树算法。在实际应用中,选择哪种算法取决于具体问题的需求和数据的特性。随着机器学习技术的发展,这些算法也在不断地演进和优化,以适应更广泛的应用场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/688013.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2 - 寻找用户推荐人(高频 SQL 50 题基础版)

2.寻找用户推荐人 考点: sql里面的不等于,不包含null -- null 用数字判断筛选不出来 select name from Customer where referee_id !2 OR referee_id IS NULL;

uniapp中使用百度ocr识别引入项目

uniapp中使用百度ocr识别引入项目 官网申请地址 orcAPI文档地址 1.先获取token const getToken () > {uni.request({url: https://aip.baidubce.com/oauth/2.0/token,method: POST,data: {grant_type: client_credentials,client_id: **, apikeyclient_secret: **, skey…

实现开源可商用的 ChatPDF RAG:密集向量检索(R)+上下文学习(AG)

实现 ChatPDF & RAG:密集向量检索(R)上下文学习(AG) RAG 是啥?实现 ChatPDF怎么优化 RAG? RAG 是啥? RAG 是检索增强生成的缩写,是一种结合了信息检索技术与语言生成…

刷代码随想录有感(94):划分字母区间(怪!)

题干&#xff1a; 代码&#xff1a; class Solution { public:vector<int> partitionLabels(string s) {int hash[26] {0};for(int i 0; i < s.size(); i) hash[s[i] - a] i;vector<int> res;int left 0;int right 0;for(int i 0; i < s.size(); i){r…

算法2:滑动窗口(下)

文章目录 水果成篮找到字符串中所有字母异位词串联所有单词的子串*最小覆盖子串* 水果成篮 两元素排空操作 窗口中存在元素交错情况&#xff0c;所以出窗口一定要出干净&#xff01;&#xff01;&#xff01; class Solution { public:int totalFruit(vector<int>& …

AI图书推荐:《如何利用ChatGPT在线赚钱》

这本书《如何利用ChatGPT在线赚钱》&#xff08;$100m ChatGPT_ How To Make Money Online With ChatGPT -- Sharp, Biily -- 2023 &#xff09;主要阐述如何利用ChatGPT这一强大的语言模型工具在互联网上创造收入。 以下是各章节内容的概要&#xff1a; **引言** - 介绍了Chat…

机器学习——多层感知机

感知机 缺点&#xff1a;只能处理线性问题&#xff0c;感知机无法解决异或问题 在这里偏置就像线性模型的常数项&#xff0c;加入偏置模型的表达能力增强&#xff0c;而激活函数就像示性函数&#xff0c;可以模拟神经元的兴奋和抑制&#xff0c;当大于等于0就输出1。 多层感…

从军事角度理解“战略与战术”

战略与战术&#xff0c;均源于军事术语。 战略&#xff08;Strategy&#xff09;&#xff0c;源自希腊语词汇“strategos&#xff08;将军&#xff09;”和“strategia&#xff08;军事指挥部&#xff0c;即将军的办公室和技能&#xff09;”。指的是指挥全局性作战规划的谋略…

网络基础_02

1.ARP协议 地址解析协议&#xff08;Address Resolution Protocol&#xff09; 已知对方的三层ip地址&#xff0c;需要二层mac地址 当一台设备&#xff08;请求方&#xff09;需要知道某个 IP 地址对应的 MAC 地址时&#xff0c;会使用 ARP封装一个数据帧。这台设备的网络层以…

[职场] 为什么不能加薪? #学习方法#知识分享#微信

为什么不能加薪&#xff1f; 不能加薪的根本原因&#xff0c;终于被我找到了&#xff01; 朋友们&#xff01;职场这个地方是个很神奇的世界&#xff0c;有些规则并不是你想象的那样。我们都希望能在这个世界里施展自己的才华&#xff0c;获得升职加薪的荣耀。然而&#xff0c…

Blender 学习笔记(二)游标与原点

1. 游标 游标是界面中的红色圆圈&#xff1a; 1.1 移动游标 我们可以通过点击工具栏中的游标按钮&#xff0c;来移动游标&#xff0c;或者通过快捷键 shift右键 移动。若想要重置复游标位置&#xff0c;可以用 shiftc 恢复&#xff0c;或则通过 shifts 点击 游标->世界原…

Python中的Paramiko与FTP文件夹及文件检测技巧

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; Python代码的魅力与实用价值 在当今数字化时代&#xff0c;编程已成为一种不可或缺的技能。Python作为一种简洁、易读且功能强大的编程语言&#xff0c;受到了全球开发者的喜爱。它不仅适用于初学者入门&#xff0c…

Java 数据库连接(JDBC)的使用,包括连接数据库、执行SQL语句等

一、简介 Java Database Connectivity&#xff08;JDBC&#xff09;是Java应用程序与关系数据库进行交互的一种API。它提供了一组用于访问和操作数据库的标准接口&#xff0c;使开发人员能够使用Java代码执行数据库操作&#xff0c;如查询、插入、更新和删除等。 二、JDBC架构…

C++ AVL树 详细讲解

目录 一、AVL树的概念 二、AVL树的实现 1.AVL树节点的定义 2.AVL树的插入 3.AVL树的旋转 4.AVL树的验证 三、AVL树的性能 四、完结撒❀ 一、AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但 如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 …

SQL进阶day11——窗口函数

目录 1专用窗口函数 1.1 每类试卷得分前3名 1.2第二快/慢用时之差大于试卷时长一半的试卷 1.3连续两次作答试卷的最大时间窗 1.4近三个月未完成试卷数为0的用户完成情况 1.5未完成率较高的50%用户近三个月答卷情况 2聚合窗口函数 2.1 对试卷得分做min-max归一化 2.2每份…

m3u8视频怎么打开?教你三招!

m3u8 是一种文本文件格式&#xff0c;用于创建媒体播放列表&#xff0c;现在大部分的视频流媒体都是m3u8格式。当我们从网上下载下来m3u8文件的时候会发现&#xff0c;它本身不是一段视频&#xff0c;而是一个索引纯文本文件。想要正常打开播放m3u8视频其实也很简单&#xff0c…

解码 LangChain | LangChain + GPTCache =兼具低成本与高性能的 LLM

LangChain 联合创始人 Harrison Chase 提到&#xff0c;多跳问题会给语义检索带来挑战&#xff0c;并提出可以试用 AI 代理工具解决。不过&#xff0c;频繁调用 LLM 会导致出现使用成本高昂的问题。 对此&#xff0c;Zilliz 软件工程师 Filip Haltmayer 指出&#xff0c;将 GP…

塑造财务规划团队的未来角色

随着企业不断改革&#xff0c;其财务规划团队的格局也在不断变化&#xff0c;领先行业的专业人士已经开始利用更创新的财务知识和思维来驾驭现代化财务规划角色的复杂性。财务团队需要不同的职能角色和技能组合来支持其发展&#xff0c;多学科团队和跨职能协作带来的挑战和机遇…

C语言详解(动态内存管理)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

MacBook Pro上高cpu上不断重启运行的efilogin-helper

高 cpu 运行这个不知道干什么的进程&#xff0c;让风扇疯狂输出&#xff0c;让人甚是烦躁&#xff0c;苹果社区里的回答比较抽象&#xff0c;要么换设备&#xff0c;要么重装。 尝试过找到这个文件&#xff0c;删了部分内容&#xff0c;无果。。。 stack overflow 有个回答&a…