机器学习常见知识点 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)来处理回归问题。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【源码】校园小情书小程序最新版 校园小程序开发 微信情书小程序 校园小情书小程序源代码

校园小情书微信小程序源码 | 社区小程序前后端开源 | 校园表白墙交友小程序 功能: 表白墙 卖舍友 步数旅行 步数排行榜 情侣脸 漫画脸 个人主页 私信 站内消息 今日话题 评论点赞收藏 服务器环境要求:PHP7.0 MySQL5.7 …

【PB案例学习笔记】-20制作一个超链接按钮

写在前面 这是PB案例学习笔记系列文章的第19篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

PyTorch -- 最常见激活函数的选择

首先,简单复习下什么是梯度:梯度是偏微分的集合 举例说明:对于 z y 2 − x 2 : ∇ z ( ∂ z ∂ x , ∂ z ∂ y ) ( 2 x , 2 y ) z y^2-x^2: \nabla z (\frac{\partial z}{\partial x}, \frac{\partial z}{\partia…

第十四篇——互信息:相关不是因果,那相关是什么?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/499cd9af2ea14cbf8d12813f6f…

互联网医院系统源码的创新应用:预约挂号小程序开发实战

预约挂号小程序作为互联网医院系统的创新应用,更加贴近用户需求,实现了预约挂号的便捷化和智能化。本篇文章,笔者将带领读者进入预约挂号小程序开发的实战过程,探索互联网医院系统源码在小程序开发中的创新应用。 一、互联网医院系…

50.Python-web框架-Django中引入静态的bootstrap样式

目录 Bootstrap 官网 特性 下载 在线样例 Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 在django中使用bootstrap 新建static\bootstrap5目录,解压后的Bootstrap文件,拷贝项目里就好。 在template文件里引用css文…

Perl语言入门学习

引言 Perl是一种功能强大的编程语言,广泛用于文本处理、系统管理和Web开发。它以其灵活性和强大的正则表达式处理能力著称。本篇博客将介绍Perl的基础知识,并通过多个例子帮助初学者快速上手。 1. 安装Perl 在开始学习Perl之前,您需要确保…

Stable Diffusion: ControlNet Openpose

上一文已经介绍了ControlNet的安装,点击右边的三角箭头。 拖放原始姿态图片。 勾选“启用”,“完美像素模式”,“允许预览” 控制类型选择“OpenPose(姿态)” 预处理器选“openpose_full”,会对原始姿态图片做整体分…

opencv roi改进版

点击鼠标左键开始画roi,右键或者回车代表画框完毕 并且做了封装。 import cv2 import numpy as npclass ROIDrawer:def __init__(self, image_path):self.drawing = Falseself.ix, self.iy = -1, -1self.roi = Noneself.image_o = cv2.imread(image_path)self.image = self.…

[NCTF 2018]flask真香

打开题目后没有提示框,尝试扫描后也没有什么结果,猜想是ssti。所以尝试寻找ssti的注入点并判断模版。 模版判断方式: 在url地址中输入{7*7} 后发现不能识别执行。 尝试{{7*7}} ,执行成功,继续往下走注入{{7*7}},如果执…

【网络编程】基于TCP的服务器端/客户端

TCP是Transmission Control Protocol(传输控制协议)简写。因为TCP套接字是面向连接的,因此又称为基于流的套接字。 把协议分为多个层次,设计更容易,通过标准化操作设计开放式系统 网络层介绍 链路层 链路层是物理连接领域标准化的结果&…

Java从放弃到继续放弃

并发编程 为什么需要多线程? 由于硬件的发展,CPU的核数增多,如果仍然使用单线程对CPU资源会造成浪费。同时,单线程也会出现阻塞的问题。所以,选择向多线程转变。 多线程的使用使得程序能够并行计算,提高计…

问题:以下被纳入代理资产风险分类管理的业务包括() #媒体#知识分享

问题:以下被纳入代理资产风险分类管理的业务包括() A.非标准化理财投资业务 B.特定债权投资业务 C.委托债权代理业务 D.非标准化代理销售业务 参考答案如图所示

【C++ | 移动构造函数】一文了解C++的 移动构造函数

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

java多线程临界区介绍

在Java多线程编程中,"临界区"是指一段必须互斥执行的代码区域。当多个线程访问共享资源时,为了防止数据不一致或逻辑错误,需要确保同一时刻只有一个线程可以进入临界区。Java提供了多种机制来实现这一点,例如synchroniz…

机器学习——集成学习和梯度提升决策树

集成学习 不同的算法都可以对解决同一个问题,但是可能准确率不同,集成学习就是不同算法按照某种组合来解决问题,使得准确率提升。 那怎么组合算法呢? 自举聚合算法**(bagging)** 顾名思义是 自举聚合 自举…

机器学习多场景实战

机器学习已不再局限于理论探讨,而是广泛渗透到我们生活的方方面面,成为解决复杂问题、优化决策过程的强有力工具。从智能推荐系统个性化推送你可能喜爱的电影和商品,到金融风控领域精准识别欺诈交易;每一个应用场景都是机器学习技…

VsCode中C文件调用其他C文件函数失败

之前一直使用CodeBlocks,最近使用vscode多,感觉它比较方便,但在调用其他C文件的时候发现报错以下内容基于单C文件运行成功,否则请移步 博文:VSCode上搭建C/C开发环境 报错信息 没有使用CodeRunner插件,弹…

Shell脚本 if语句

条件测试: $? 返回码 判断命令或者脚本是否执行成功(最近的一条) 0 true 为真就是成功 成立 非0 false 失败或者异常 test命令 可以进行条件测试 然后根据的是返回值来判断条件是否成立。 -e 测试目录或者文件是否存在 exist -d 测试…

Docker 管理 | 代理配置、内网共享和 Harbor 部署

唠唠闲话 在现代软件开发和运维中,容器技术已经成为构建、部署和管理应用程序的标准工具。然而,在实际操作中,我们常常需要面对一些常见的挑战,如容器访问外部资源的代理配置、内网环境下的镜像共享以及企业级镜像管理。 本教程…