决策树(分类决策树)

分类决策树是一种基于树状结构的监督学习模型,主要用于对数据进行分类任务。它通过一系列规则(即树的分支)对输入数据进行递归划分,最终达到预测输出类别(即树的叶节点)的目的。分类决策树以其直观易懂、解释性强的特点被广泛应用在各种领域,如医学诊断、金融风险评估、市场营销策略制定等。下面我们对分类决策树进行更详细描述:

基本原理

分类决策树模拟人类在面对问题时进行逻辑判断和决策的过程。它通过一系列问题(基于数据的特征)逐步缩小决策范围,直至达到一个明确的结论。在数据科学和机器学习的语境下,这个过程表现为:

  • 根节点:代表整个数据集,即所有待分类的样本集合。

  • 内部节点(决策节点):每个内部节点表示一个特征测试条件。根据该特征的不同取值,数据被分割成若干子集,并沿着树的分支流向对应的子节点。

  • 分支:连接内部节点和子节点的连线,代表特征测试条件的结果导向。

  • 叶节点(终端节点):树的最底层节点,表示分类结果。每个叶节点对应一个类别标签,代表经过从根到该节点路径上的特征测试后,数据样本被归属于该类别的概率或确定性标签。

构建过程

构建分类决策树通常包括以下步骤:

特征选择

在每个内部节点,选择一个最优特征作为划分标准。最优特征通常是指根据这个特征划分后信息增益、基尼指数或类似指标的特征最优的特征,这些指标反映了根据该特征划分数据集后纯度的提升程度。

纯度:对于包含多个类别的数据集,如果类别数越多,则认为这个数据集越不纯。反之则越纯。纯度越高,分类效果越好。

信息增益

首先了解一下信息熵

信息熵

在机器学习中,信息熵(Entropy)是一个核心概念,用于量化随机变量或数据集的“不确定性”或“混乱度”。它衡量了一个随机变量可能取值的期望信息量。具体来说,信息熵越大,代表随机变量的不确定性越高,或者说数据的混乱程度越高,越混乱,证明其中所含有的标签越多,自然也就越混乱。

举个例子:在一个书架上,每本书是一个样本,当我们排列这些书时,如果它们同样高,那么排出来是美观的,如果高度都是参差不齐的,那么排出来就很乱。这就是熵低与高的区别。
熵高 -> 不一样的多 熵低 -> 一样的多

在信息论中,熵被用来衡量一个随机变量出现的期望值。它代表了在被接收之前,信号传输过程中损失的信息量,又被称为信息熵。对于离散随机变量 X X X,其信息熵 H ( X ) H(X) H(X) 定义为:

H ( X ) = − ∑ x ∈ X p ( x ) log ⁡ 2 p ( x ) H(X) = -\sum_{x \in X} p(x) \log_2 p(x) H(X)=xXp(x)log2p(x)

其中, p ( x ) p(x) p(x) 是随机变量 X X X 取值为 x x x 的概率。这个公式计算了所有可能取值的概率与其对应的信息量(即概率的负对数)的期望值。

信息增益的计算

计算信息增益的步骤如下:

  1. 计算父节点的熵:首先,需要计算整个数据集的熵,这代表了数据集的不确定性。父节点的熵的计算公式为:
    Entropy ( S ) = − ∑ i = 1 n p ( i ) log ⁡ 2 p ( i ) \text{Entropy}(S) = -\sum_{i=1}^{n} p(i) \log_2 p(i) Entropy(S)=i=1np(i)log2p(i)
    其中,S代表数据集,p(i)代表数据集中第i个类别出现的概率。

  2. 计算子节点的熵以及加权平均:然后,对于每个特征,计算其划分数据集后得到的子节点的熵。这涉及到对数据集按照每个特征的不同取值进行划分,并计算每个子集的熵。

子节点熵的加权平均的公式如下:

Weighted Average of Child Entropies = ∑ j = 1 m ∣ S j ∣ ∣ S ∣ × Entropy ( S j ) \text{Weighted Average of Child Entropies} = \sum_{j=1}^{m} \frac{|S_j|}{|S|} \times \text{Entropy}(S_j) Weighted Average of Child Entropies=j=1mSSj×Entropy(Sj)

其中:

  • ( S ) 是父节点所代表的数据集。
  • ( S_j ) 是根据某个特征的第 ( j ) 个取值划分得到的子节点所代表的数据子集。
  • ( m ) 是该特征的不同取值的数量,也就是子节点的数量。
  • ( |S| ) 和 ( |S_j| ) 分别表示父节点和子节点数据集的大小(即样本数量)。
  • ( \text{Entropy}(S_j) ) 是子节点 ( S_j ) 的熵。
  1. 计算信息增益:最后,用父节点的熵减去子节点熵的加权平均,得到该特征的信息增益。
    Information Gain ( S , feature ) = Entropy ( S ) − Weighted Average of Child Entropies \text{Information Gain}(S, \text{feature}) = \text{Entropy}(S) - \text{Weighted Average of Child Entropies} Information Gain(S,feature)=Entropy(S)Weighted Average of Child Entropies

通过计算每个特征的信息增益,可以选择信息增益最大的特征作为当前节点的划分标准。这样,每次划分都能最大程度地减少数据的不确定性,从而提高分类模型的性能。

信息增益率(Information Gain Ratio)是信息增益的一个改进版本,它考虑了特征取值数量的影响,以避免选择取值较多的特征(比如读取数据时把id也读取了)。信息增益率的计算公式为:
Information Gain Ratio = Information Gain Intrinsic Value of Feature \text{Information Gain Ratio} = \frac{\text{Information Gain}}{\text{Intrinsic Value of Feature}} Information Gain Ratio=Intrinsic Value of FeatureInformation Gain

基尼指数

基尼指数(Gini Index)在机器学习和数据挖掘中,是一个用于衡量数据集合纯度的指标。与熵相似,基尼指数越小,表示集合的纯度越高。在构建决策树时,基尼指数被用来选择划分数据集的最优特征,以便将数据集划分为更纯的子集。

基尼指数的计算公式如下:

Gini Index ( S ) = 1 − ∑ i = 1 m p i 2 \text{Gini Index}(S) = 1 - \sum_{i=1}^{m} p_i^2 Gini Index(S)=1i=1mpi2

其中:

  • (S) 是要计算基尼指数的数据集。
  • (m) 是数据集中类别的数量。
  • (p_i) 是数据集中第 (i) 个类别出现的概率。

这个公式衡量的是从数据集中随机选择一个样本,然后错误地将其分类到其他类别的概率。当数据集完全属于一个类别时(即纯度最高),基尼指数达到最小值0;当数据集中的类别分布均匀时,基尼指数达到最大值(1 - \frac{1}{m})。

属性的基尼指数它用于评估按照某个属性(或特征)的不同取值划分数据集后,所得子集的纯度和不确定性。基尼指数越小,表示按照该属性划分后的子集纯度越高。

计算属性的基尼指数的基本步骤如下:

  1. 确定数据集:首先,确定要计算基尼指数的数据集,以及用于划分的属性。

  2. 划分数据集:根据属性的不同取值,将数据集划分为多个子集(或称为子节点)。

  3. 计算每个子集的基尼指数:对于每个子集,计算其基尼指数。基尼指数的计算公式为:

    Gini Index ( S ) = 1 − ∑ i = 1 m p i 2 \text{Gini Index}(S) = 1 - \sum_{i=1}^{m} p_i^2 Gini Index(S)=1i=1mpi2

    其中,(S) 是子集,(m) 是子集中类别的数量,(p_i) 是子集中第 (i) 个类别出现的概率。

  4. 计算加权基尼指数:由于不同子集的大小(即样本数量)可能不同,因此需要计算加权基尼指数,以考虑不同子集对数据集整体纯度的影响。加权基尼指数是每个子集的基尼指数与其样本数量占数据集总样本数量的比例的乘积之和。

    Weighted Gini Index = ∑ j = 1 n ∣ S j ∣ ∣ S ∣ × Gini Index ( S j ) \text{Weighted Gini Index} = \sum_{j=1}^{n} \frac{|S_j|}{|S|} \times \text{Gini Index}(S_j) Weighted Gini Index=j=1nSSj×Gini Index(Sj)

    其中,(S_j) 是根据属性划分得到的第 (j) 个子集,(n) 是子集的数量,(|S_j|) 是子集 (S_j) 的样本数量,(|S|) 是数据集的总样本数量。

  5. 选择最优属性:比较不同属性的加权基尼指数,选择使得加权基尼指数最小的属性作为划分标准。这样,每次划分都能使得数据集的纯度得到最大提升。

属性的基尼指数在决策树构建过程中起着关键作用,它帮助我们选择能够最大程度提升数据集纯度的属性作为划分依据,从而构建出性能更优的分类模型。

决策树生长

选定我们要分类的特征后,就可以开始构建决策树。决策树的生长过程就是从根节点开始,递归地对数据集进行划分,生成一系列的内部节点和叶节点。

基于选定的最优特征及其阈值(对于连续特征[回归决策树(解决回归问题)])或类别(对于离散特征的普通决策树),将数据集划分为多个子集,并为每个子集生成新的节点。这一过程递归地在每个子节点上重复,直到满足停止条件为止。常见的停止条件包括:

节点包含的样本数小于预设阈值:当节点内样本数量过少时,继续划分可能带来过拟合风险,此时停止生长。
所有样本属于同一类别:该节点无需再划分,其类别已经一致。
没有更多特征可供划分:所有特征已用于划分,或剩余特征无法有效提高模型性能。
达到预设的最大深度或节点数:防止过深的树导致模型过于复杂,降低泛化能力。

决策树剪枝

生长得到的原始决策树可能存在过拟合现象,即对训练数据拟合得过于复杂,不利于泛化到未知数据。剪枝旨在简化树结构,提高模型的泛化能力。常见的剪枝方法包括:

预剪枝:在生长过程中提前终止树的生长,如设定最大深度、最小样本数等阈值。
后剪枝:先生成完整的决策树,然后自底向上考察各内部节点,若将其替换为叶节点能带来整体性能的提升(如根据验证集计算的精度提高),则进行剪枝。

应用与优势

分类决策树具有以下优点:

易于理解和解释:决策树的结构清晰,决策规则直观,便于非专业人士理解模型的决策逻辑。
无需数据预处理:对于缺失值和非数值型数据有较好的适应性,通常不需要进行复杂的预处理。
可处理多输出问题:通过构建多棵树或扩展单棵树的结构,可以处理多类别或多输出的任务。
支持并行计算:在某些实现中,决策树的构建过程可以并行化,加速训练速度。

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

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

相关文章

SpringCloud系列(5)--SpringCloud微服务工程公共部分提取

前言:在上一章节中我们创建了两个个SpringCloud工程,但在两个工程中分别存在着一些重复的部分,例如重复的实体类(如图所示),这样会造成系统的冗余,所以我们需要把公共的类提取到一个工程里&…

预约小程序新选择:强大后端管理功能一览

拥有一个功能齐全、操作便捷的小程序对于商家来说至关重要。为了满足广大商家的需求,乔拓云平台提供了丰富的模板资源,帮助用户快速搭建预约型小程序,并配备了强大的后端管理功能,让商家能够轻松管理预约订单,提升运营…

Centos7 ElasticSearch集群搭建

1. 服务器环境配置 1.1 配置hosts文件 3台服务器都要执行 vim /etc/hosts; # 将以下内容写入3台服务器hosts文件 192.168.226.148 es001 192.168.226.149 es002 192.168.226.150 es003 1.2 关闭防火墙 3台服务器都要执行 systemctl stop firewalld; systemctl disable…

【opencv】dnn示例-speech_recognition.cpp 使用DNN模块结合音频信号处理技术实现的英文语音识别...

模型下载地址: https://drive.google.com/drive/folders/1wLtxyao4ItAg8tt4Sb63zt6qXzhcQoR6 终端输出:(audio6.mp3 、audio10.mp3) [ERROR:00.002] global cap_ffmpeg_impl.hpp:1112 open VIDEOIO/FFMPEG: unsupported parameter…

# 从浅入深 学习 SpringCloud 微服务架构(一)基础知识

从浅入深 学习 SpringCloud 微服务架构(一)基础知识 1、系统架构演变: 1)单体应用架构。如电商项目。 用户管理、商品管理、订单管理,在一个模块里。 优点:开发简单,快速,适用于…

Mac下brew安装php7.4

这里作者挂了梯子,所以很流畅! brew的下载,可参考另外一篇博文~Homebrew 安装与卸载 1、将第三方仓库加入brew brew tap shivammathur/php2、安装指定版本的PHP brew install php7.43、替换Mac自带PHP环境并刷新环境变量 -> …

基于simulink的模拟锁相环和数字锁相环建模与对比仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 模拟锁相环(PLL)的基本原理 4.2 数字锁相环(DPLL)的基本原理 5.完整工程文件 1.课题概述 模拟锁相环和数字锁相环建模的simulink建模,对…

OpenHarmony UI动画-recyclerview_animators

简介 带有添加删除动画效果以及整体动画效果的list组件库 下载安装 ohpm install ohos/recyclerview-animatorsOpenHarmony ohpm 环境配置等更多内容,请参考如何安装OpenHarmony ohpm 包 使用说明 引入组件库 import { RecyclerView } from "ohos/recycler…

Qt/C++音视频开发70-无感切换通道/无缝切换播放视频/多通道流畅切换/不同视频打开无缝切换

一、前言 之前就写过这个方案,当时做的是ffmpeg内核版本,由于ffmpeg内核解析都是代码实现,所以无缝切换非常完美,看不到丝毫的中间切换过程,看起来就像是在一个通道画面中。其实这种切换只能说是取巧办法,…

排序算法之计数排序

目录 一、简介二、代码实现三、应用场景 一、简介 算法平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度排序方式稳定性计数排序O(nk )O(nk)O(nk)O(k)Out-place稳定 稳定:如果A原本在B前面,而AB,排序之后A仍然在B的前面; 不…

稀碎从零算法笔记Day52-LeetCode:从双倍数组中还原原数组

题型:数组、贪心 链接:2007. 从双倍数组中还原原数组 - 力扣(LeetCode) 来源:LeetCode 题目描述 一个整数数组 original 可以转变成一个 双倍 数组 changed ,转变方式为将 original 中每个元素 值乘以 …

记录ubuntu20.04安装nvidia-525.85.05显卡驱动(学习笔记2024.4.15、4.16)

电脑:华硕天选X2024 显卡:4060Ti i5-14400F 架构:x86_64 我需要使用Linux系统使用IsaacSim进行仿真,所以安装的都是IsaacSim中的推荐版本。 一.对新鲜的电脑进行分盘 电脑刚到手,900多个G全在C盘里,给它…

学习笔记(4月18日)vector底层模拟实现(1)

1.迭代器 vector实际上是由迭代器进行维护的,关于迭代器是什么,为什么要叫这个名字,后面的学习会逐渐了解,现在先将迭代器是作为指针即可。 vector底层有三个迭代器,用来起到容量、数组头、元素个数的作用。 同时为…

数字零售力航母-看微软如何重塑媒体

数字零售力航母-看微软如何重塑媒体 - 从2024全美广播协会展会看微软如何整合营销媒体AI技术和AI平台公司 2024年,微软公司联合英伟达总司,赞助全美广播协会展会。本次展会微软通过搭建一个由全面的合作伙伴生态系统支持的可信和安全的平台,…

RIP最短路实验(华为)

思科设备参考:RIP最短路实验(思科) 一,技术简介 RIP(Routing Information Protocol,路由信息协议)是一种基于距离矢量的内部网关协议,工作原理是每个路由器周期性地向邻居路由器发…

【网站项目】新生报到系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Spring Boot | Spring Boot “缓存管理“

目录: 一、Spring Boot 默认 "缓存" 管理 :1.1 基础环境搭建① 准备数据② 创建项目③ 编写 "数据库表" 对应的 "实体类"④ 编写 "操作数据库" 的 Repository接口文件⑤ 编写 "业务操作列" Service文件⑥ 编写 "applic…

Vue2进阶之Vue2高级用法

Vue2高级用法 mixin示例一示例二 plugin插件自定义指令vue-element-admin slot插槽filter过滤器 mixin 示例一 App.vue <template><div id"app"></div> </template><script> const mixin2{created(){console.log("mixin creat…

美团财务科技后端一面:如何保证数据一致性?延时双删第二次失败如何解决?

更多大厂面试内容可见 -> http://11come.cn 美团财务科技后端一面&#xff1a;项目内容拷打 美团财务科技后端一面&#xff1a;项目相关面试题&#xff0c;主要包含 Zset、延时双删失败重试、热点数据解决、ThreadLocal 这几个方面相关的内容 由于前几个问题是对个人项目的…

展览展会媒体媒体邀约执行应该怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 展览展会邀请媒体跟其他活动邀请媒体流程大致相同&#xff0c;包括 制定媒体邀约计划&#xff0c;准备新闻稿&#xff0c;发送邀请函&#xff0c;确认媒体参会&#xff0c;现场媒体接待及…
最新文章