当前位置: 首页 > news >正文

机器学习常见知识点 2:决策树

文章目录

  • 决策树算法
    • 1、决策树树状图
    • 2、选择最优决策条件
    • 3、决策树算法过程
      • →白话决策树原理
      • 决策树构建的基本步骤
      • 常见的决策树算法
      • 决策树的优缺点

【五分钟机器学习】可视化的决策过程:决策树 Decision Tree
关键词记忆:
纯度选择最优特征分裂基尼不准度均方误差

决策树算法

1、决策树树状图

在这里插入图片描述

2、选择最优决策条件

在这里插入图片描述

3、决策树算法过程

决策树是一种常用于分类和回归的监督学习算法。它模拟了人类决策过程的思维方式,通过构建一个树形结构,其中每个内部节点代表一个属性上的判断,每个分支代表该判断的结果,而每个叶节点代表一个预测结果。下面是关于决策树的详细解释,包括其构建过程和常见算法。

→白话决策树原理

  1. 分类问题
  • 在分类问题上,首先整个数据集是根结点,然后选择最优特征进行分割数据集,即对数据集进行分类,这个选择的最优特征一般是使得分割后的不同子集纯度更高的特征子集,然后依次对每一个分裂后的节点递归分裂,直到每个叶节点达到一个标准,或者深度达到限制条件。
    • 根据说的,选择最优决策条件,我们可以知道,根据不同指标进行数据集划分,得到的树深度和性能是不一样的。决策树通过某种标准(如信息增益、信息增益比、基尼不纯度等)来评估每个特征的分割效果。这个标准通常旨在选择能最大化子集纯度的特征。
      • 信息增益:选择使得结果集熵减最大的特征。
      • 基尼不纯度:选择最小化分割后各节点基尼不纯度的特征。随机森林分类时使用
  • 在实际应用中,决策树的构建不仅是为了提高模型在训练数据上的性能,更重要的是要保证模型对未知数据的泛化能力。因此,常常需要通过剪枝技术来减少模型的过拟合风险。剪枝可以在树完全生成后进行(后剪枝),也可以在构建过程中进行(预剪枝)。
  1. 回归问题
  • 分类问题和回归问题不一样的是,选择最优决策条件上的指标不一样,回归问题一般采用均方误差或者平均绝对误差。在回归树中,选择特征和分割点的标准通常是最小化每个子节点内的数据方差(或标准误差的减少)

决策树构建的基本步骤

  1. 选择最佳分割特征
    决策树通过选择最佳的特征来分割数据集。选择标准通常基于信息增益、信息增益比、基尼不纯度或均方误差等统计方法。
  • 普通决策树会在每个分裂点所有特征中选择出最佳特征来分割数据集
  • 随机森林是先随机选择特征的子集,然后再这个子集中进行最佳特征选择。即在决策树的分裂时特征空间的选择具有随机性。
  1. 分割数据集
    一旦选择了一个特征,数据集会根据该特征的不同取值被分割成不同的子集。这个过程会递归地在每个子集上重复进行,直到满足停止条件。

  2. 递归构建树
    对每个子集应用相同的方法,递归地构建决策树的每个分支,直到达到某个停止条件,例如设置的最大深度、节点中的最小样本数或节点的纯度(比如,所有样本都属于同一类别)。

  3. 剪枝
    树构建完成后,为防止过拟合,通常需要对树进行剪枝。剪枝可以通过预剪枝(在构建过程中提前停止树的增长)或后剪枝(删除树的某些部分)来实现。

常见的决策树算法

  1. ID3(Iterative Dichotomiser 3)

    • 使用信息增益作为标准来选择分割的特征。
    • 仅能用于分类任务,并且只处理离散特征。
  2. C4.5

    • 后续版本的ID3,使用信息增益比来选择特征。
    • 能处理连续和离散特征,同时引入了树的剪枝过程。
  3. CART(Classification and Regression Trees)

    • 用于分类和回归的决策树算法。
    • 对于分类问题使用基尼不纯度作为标准,对于回归问题使用均方误差。
    • 总是产生二叉树。
    • 随机森林采用的方法

决策树的优缺点

优点

  • 易于理解和解释,决策树可以可视化
  • 能够同时处理数值型和类别型数据。
  • 对中间值的缺失不敏感。

缺点

  • 易于过拟合,尤其是树较深或样本较少时。
  • 对于那些各类别样本量差异较大的数据集,信息增益的偏见问题。
  • 不稳定性,小的数据变化可能导致树的显著变化。

决策树是机器学习中非常基础且强大的模型,常作为许多先进算法(如随机森林、梯度提升树)的基石。理解其基本原理和操作是掌握更复杂模型的关键。

随机森林通常使用的决策树模型是 CART(Classification and Regression Trees)树。CART 是一种广泛使用的决策树学习技术,它可以用于分类和回归任务CART 树使用基尼不纯度(Gini impurity)作为在单棵树中用于指导如何进行节点分裂从而构建决策树的默认标准,;均方误差(Mean Squared Error, MSE)或平均绝对误差(Mean Absolute Error, MAE)来处理回归问题。

相关文章:

机器学习常见知识点 2:决策树

文章目录 决策树算法1、决策树树状图2、选择最优决策条件3、决策树算法过程→白话决策树原理决策树构建的基本步骤常见的决策树算法决策树的优缺点 【五分钟机器学习】可视化的决策过程:决策树 Decision Tree 关键词记忆: 纯度、选择最优特征分裂、熵、基…...

海洋CMS admin_notify.php 远程代码执行漏洞复现(CVE-2024-30565)

0x01 产品简介 海洋CMS是一套专为不同需求的站长而设计的内容管理系统,灵活、方便、人性化设计、简单易用是最大的特色,可快速建立一个海量内容的专业网站。海洋CMS基于PHP+MySql技术开发,完全开源免费 、无任何加密代码。 0x02 漏洞概述 海洋CMS admin_notify.php 接口处…...

Spring、Spring MVC、MyBatis和Spring Boot对比

在对比Spring、Spring MVC、MyBatis和Spring Boot时,我们可以从以下几个方面进行详细的分析: Spring框架: 作用:Spring是一个轻量级的IoC(控制反转)和AOP(面向切面编程)容器&#…...

【Linux高级IO】select、poll、epoll

【Linux高级IO】select、poll、epoll toc 作者:爱写代码的刚子 时间:2024.6.5 前言:本篇博客将会介绍面试重点考察的select、poll、epoll IO: input && Output read && write 应用层read&&write的时候&#xff0c…...

Etcd Raft架构设计和源码剖析2:数据流

Etcd Raft架构设计和源码剖析2:数据流 | Go语言充电站 前言 之前看到一幅描述etcd raft的流程图,感觉非常直观,但和自己看源码的又有些不同,所以自己模仿着画了一下,再介绍一下。 下图从左到右依次分为4个部分&…...

深入理解Qt多线程编程(QThreadPool)

多线程编程在现代软件开发中变得越来越重要,它能够提高应用程序的响应速度和处理性能。在Qt框架中,QThreadPool作为线程池管理工具,被频繁的使用。 目录 概述 接口介绍 底层原理解析 使用方法 概述 QThreadPool是Qt提供的一个线程池实现&a…...

Prisma数据库ORM框架学习

初始化项目 中文网站 点击快速开始,点击创建sql项目,后面一步一步往后走 这个博主也挺全的,推荐下 可以看这个页面初始化项目跟我下面是一样的,这里用得是ts,我下面是js,不需要额外的配置了 1.vscode打开一个空文件夹 2.npm init -y 初始化package.json 3.安装相关依赖 …...

Flutter-使用MethodChannel 实现与iOS交互

前言 使用 MethodChannel 在 Flutter 与原生 Android 和 iOS 之间进行通信,可以让你在 Flutter 应用中调用设备的原生功能。 基础概念 MethodChannel:Flutter 提供的通信机制,允许消息以方法调用的形式在 Flutter 与原生代码之间传递。方法…...

【星海随笔】云解决方案学习日志篇(一) ELK,kibana,Logstash安装

心路历程 本来想最近再研究研究DPDK的。但是自己做一个东西很多时候没有回报。因为自己的低学历问题,类似工作的面试都没有。所以很多东西学了很快就忘了,没有地方可以用。 今天看到了一个大佬,除了发型外,很多想法还是很共鸣的。 Shay Banon 决定开始跟…...

【leetcode】hot100 哈希表

1. 两数之和 1.1 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。…...

每日5题Day22 - LeetCode 106 - 110

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {…...

【Python】读取文件夹中所有excel文件拼接成一个excel表格 的方法

我们平常会遇到下载了一些Excel文件放在一个文件夹下,而这些Excel文件的格式都一样,这时候需要批量这些文件合并成一个excel 文件里。 在Python中,我们可以使用pandas库来读取文件夹中的所有Excel文件,并将它们拼接成一个Excel表…...

7. 通配符和正则表达式

文章目录 7.1 通配符7.1.1 通配符介绍7.1.2 通配符示例 7.2 正则表达式7.2.1 grep命令7.2.2 基本正则表达式7.2.3 扩展正则表达式 7.1 通配符 在 Shell 中通配符用于查找文件名和目录名。它是由 Shell 处理的,只会出现在命令的参数中。 7.1.1 通配符介绍 * 匹…...

ROS2底层机制源码分析

init ->init_and_remove_ros_arguments ->init ->Context::init 保存初始化传入的信号 ->install_signal_handlers→SignalHandler::install 开线程响应信号 ->_remove_ros_arguments 移除ros参数 ->SingleNodeManager::instance().…...

超越 Transformer开启高效开放语言模型的新篇章

在人工智能快速发展的今天,对于高效且性能卓越的语言模型的追求,促使谷歌DeepMind团队开发出了RecurrentGemma这一突破性模型。这款新型模型在论文《RecurrentGemma:超越Transformers的高效开放语言模型》中得到了详细介绍,它通过…...

快速排序-Hoare 递归版 C语言

个人主页点这里~ 快速排序的简介: 快速排序是Hoare于1962年提出的一种 二叉树结构 的 交换 排序方法,其基本思想为:任取待排序元素序列中 的某元素作为 基准值 ,按照该排序码将待排序集合分割成 两子序列 , 左子序列中所有元素均 …...

C语言经典指针运算笔试题图文解析

指针运算常常出现在面试题中&#xff0c;画图解决是最好的办法。 题目1&#xff1a; #include <stdio.h> int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } //程序的结果是什么&…...

使用 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8 实战

今天&#xff0c;我将为大家实战演示&#xff0c;如何基于操作系统 openEuler 22.03 LTS SP3&#xff0c;利用 KubeKey 制作 Kubernetes 离线安装包&#xff0c;并实战离线部署 Kubernetes v1.28.8 集群。 实战服务器配置 (架构 1:1 复刻小规模生产环境&#xff0c;配置略有不…...

DOS 命令

Dos&#xff1a; Disk Operating System 磁盘操作系统, 简单说一下 windows 的目录结构。 ..\ 到上一级目录 常用的dos 命令&#xff1a; 查看当前目录是有什么内容 dir dir d:\abc2\test200切换到其他盘下&#xff1a;盘符号 cd : change directory 案例演示&#xff1a;切换…...

如何用Java程序实现一个简单的消息队列?

在Java程序中&#xff0c;可以使用内置的java.util.concurrent.BlockingQueue作为消息队列存放的容器&#xff0c;来实现一个简单的消息队列。 具体实现如下&#xff0c;在这个例子中&#xff0c;我们创建了一个生产者线程和一个消费者线程&#xff0c;他们共享同一个阻塞队列…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

动态规划-1035.不相交的线-力扣(LeetCode)

一、题目解析 光看题目要求和例图&#xff0c;感觉这题好麻烦&#xff0c;直线不能相交啊&#xff0c;每个数字只属于一条连线啊等等&#xff0c;但我们结合题目所给的信息和例图的内容&#xff0c;这不就是最长公共子序列吗&#xff1f;&#xff0c;我们把最长公共子序列连线起…...