决策树(理论知识1)

ops/2024/12/25 14:01:24/

目录

何为决策树

决策树(Decision Tree)是一种分类和回归方法,是基于各种情况发生的所需条件构成决策树,以实现期望最大化的一种图解法。由于这种决策
分支画成图形很像一棵树的枝干,故称决策树。它的运行机制非常通俗易通,因此被誉为机器学习中,最友好的算法。下面通过一个简单的例子来阐述它的执行流程。假设根据大量数据(含 3 个指标:天气、温度、风速)构建了一棵“可预测学校会不会举办运动会”的决策树(如下图所示)。

在这里插入图片描述
在对任意数据进行预测时,都需要从决策树的根结点开始,一步步走到叶子结点(执行决策的过程)。如,对下表中的第一条数据( [ 阴天,寒冷,强 ] ):首先从根结点出发,判断 “天气” 取值,而该数据的 “天气” 属性取值为 “阴天”,从决策树可知,此时可直接输出决策结果为 “举行”。这时,无论其他属性取值为什么,都不需要再执行任何决策(类似于 “短路” 现象)。对下表中的第二条数据( [ 晴天,炎热,弱 ] ):首先从根结点出发,判断 “天气” 取值为 “晴天”,然后我们顺着决策树走到温度节点,取值为“炎热”,顺着决策树来到湿度节点,取值为“弱”,此时对应的决策结果为 “不举行”。对于这种情况,我们只需按图索骥,就能找出对应的结果。

天气温度风速预测结果
阴天寒冷举行
晴天炎热不举行
晴天寒冷举行
雨天正常不举行

决策树的组成

决策树由结点和有向边组成。结点有两种类型:内部结点(圆)和叶结点(矩形)。其中,内部结点表示一个特征(属性);叶结点表示一个类别。而有向边则对应其所属内部结点的可选项(属性的取值范围)。

在这里插入图片描述
在用决策树进行分类时,首先从根结点出发,对实例在该结点的对应属性进行测试,接着会根据测试结果,将实例分配到其子结点;然后,在子结点继续执行这一流程,如此递归地对实例进行测试并分配,直至到达叶结点;最终,该实例将被分类到叶结点所指示的结果中。

决策树中,若把每个内部结点视为一个条件,每对结点之间的有向边视为一个选项,则从根结点到叶结点的每一条路径都可以看做是一个规则,而叶结点则对应着在指定规则下的结论。这样的规则具有互斥性和完备性,从根结点到叶结点的每一条路径代表了一类实例,并且这个实例只能在这条路径上。

决策树的构建

决策树的本质是从训练集中归纳出一套分类规则,使其尽量符合以下要求:

  1. 具有较好的泛化能力;
  2. 在 1 的基础上尽量不出现过拟合现象。

注意到一件事:当目标数据的特征较多时,构建的具有不同规则的决策树也相当庞大(成长复杂度为 𝑂(𝑛!) )。如当仅考虑 5 个特征时,就能构建出 5×4×3×2×1=120 种。在这么多树中,选择哪一棵才能达到最好的分类效果呢?实际上,这个问题的本质是:应该将样本数据的特征按照怎样的顺序添加到一颗决策树的各级结点中?这便是构建决策树所需要关注的问题核心。

如,在前面的例子中,为什么要先对“天气”进行划分,然后再是“温度”和“风速”呢(下图1)?可不可以先对“风速”进行划分,然后再是“温度”和“天气”呢(下图2)?

在这里插入图片描述
一种很直观的思路是:如果按照某个特征对数据进行划分时,它能最大程度地将原本混乱的结果尽可能划分为几个有序的大类,则就应该先以这个特征为决策树中的根结点。接着,不断重复这一过程,直到整棵决策树被构建完成为止。

基于此,引入信息论中的“熵”。


http://www.ppmy.cn/ops/144858.html

相关文章

《解锁 Python 数据分析的强大力量》

《 解锁 Python 数据分析的强大力量》 一、Python 数据分析的崛起二、Python 数据分析基础(一)编程基础(二)数据分析相关库 三、数据分析流程全解析(一)数据获取(二)数据存储&#x…

tcp 的重传,流量控制,拥塞控制

tcp 的重传解决了什么问题tcp的几种重传机制分别解决什么问题?方案 1: 超时重传方案2: 快速重传选择性确认(sack)d-sack(重复接收) 滑动窗口:累计应答 流量控制解决什么问题?如何做的?问题1: 那如果第一次发送的数据都大于缓冲区的大小怎么办?问题2: 如果剩余大小为0会发生…

XILINX平台LINUX下高速ADC08060驱动

前置调研 原理图 AXI-FULL时序 由于项目需要实时性高,采用AXI-FULL接口ADC IP作为master端写入DDR中 引用: AXI_02 AXI4总线简介(协议、时序)_axi4总线时序-CSDN博客 AXI总线的访问 在ARM架构中,访问I/O地址通常通…

nacos-服务发现注册

服务发现注册分为三个角色:服务注册中心、服务提供者、服务消费者 服务注册中心:为服务提供者和消费者提供一个空间,服务提供者将自身服务注册到注册中心,仅对外暴露接口,服务消费者在将自身注册到注册中心的时候也会获…

React 前端框架简介

React 前端框架简介 React 是一个高效、灵活且开源的 JavaScript 库,用于构建用户界面 (UI)。 它专注于 视图层,通常与其他工具结合使用来开发复杂的前端应用。 为什么选择 React? 轻量灵活:仅负责视图层,适配多种框…

C++如何处理对象的状态变化?如何实现工厂模式?

1)如何处理对象的状态变化? 在 C中,可以通过以下几种方式处理对象的状态变化: 一、成员函数 成员函数可以修改对象的内部状态。例如: class MyClass { private:int value; public:MyClass(int initialValue) : value(i…

[c++11(二)]Lambda表达式和Function包装器及bind函数

1.前言 Lambda表达式着重解决的是在某种场景下使用仿函数困难的问题,而function着重解决的是函数指针的问题,它能够将其简单化。 本章重点: 本章将着重讲解lambda表达式的规则和使用场景,以及function的使用场景及bind函数的相关使…

V900新功能-电脑不在旁边,通过手机给PLC远程调试网关配置WIFI联网

您使用BDZL-V900时,是否遇到过以下这种问题? 去现场配置WIFI发现没带电脑,无法联网❌ 首次配置WIFI时需使用网线连电脑,不够快捷❌ 而博达智联为解决该类问题,专研了一款网关配网工具,实现用户现场使用手机…