决策树:理解机器学习中的关键算法

决策树:理解机器学习中的关键算法

决策树是一种流行而强大的机器学习算法,它从数据中学习并模拟决策过程,以便对新的未知数据做出预测。由于其直观性和易理解性,决策树成为了分类和回归任务中的首选算法之一。在本文中,我们将深入探讨决策树的工作原理、如何构建决策树、它们的优缺点,以及在现实世界中的应用。

树模型

决策树:从根节点开始一步步走到叶子节点(决策)

所有的数据最终都会落到叶子节点,既可以做分类也可以做回归

例子:一个家庭里面找出玩游戏的人(通过年龄和性别两个特征)

如何切分特征(选择节点)

问题:根节点的特征该用哪个特征?如何切分?

假设:我们目标应该是根节点就像一个老大一样能够更好的切分数据(分类的效果更好),根节点下面的节点自然就是二当家。

目标:通过一种衡量指标,来计算通过不同特征进行分支选择后的分类情况,找出最好的那个当成根节点,以此类推。

衡量指标——

熵:表示随机变量不确定性的度量(说白了就是物体内部的混乱程度,(概率越大)熵的值越小,物体的混乱程度越低,(概率越小)熵值越大,物体的混乱程度越高)

公式:H%uFF08X%uFF09= -\sum pi_{}*\log2_{}i(i=1,2,3,4,5...)

[ H(S) = -\sum_{i=1}^{n} p_i \log_2(p_i) ]

其中H(X)表示熵值大小

Pi表示:i在所有元素中的个数  /  元素总数

i:

例子:

A集合:【1,1,1,1,1,1,2,2,2,2】

B集合:【1,2,3,4,5,6,7,8,9,10】

A:负五分之三乘以二为底二分之一的对数减五分之二乘以二为底二分之一的对数

B:负十分之一乘以二为底十分之一的对数 再乘十

树的组成

根节点:第一个选择点

非叶子节点与分支:中间过程

叶子节点:最终的决策过程

决策树的基本原理

决策树通过一系列问题将数据集分割成越来越小的子集,最终达到一个可以做出预测的点。每个问题都基于特征和特征值,并且将数据集分割成两个或更多的同质子集,这些子集在目标变量上具有更高的纯度。

构建决策树的步骤

  1. 选择最佳特征:选择最佳分割特征是通过计算每个特征的信息增益(Information Gain)或基尼不纯度(Gini Impurity)来决定的。

  2. 分割数据:使用上一步选定的特征,将数据集分割成子集。分割可以基于一个阈值(用于连续特征)或特征的分类。

  3. 重复分割过程:在每个子集上重复步骤1和步骤2,直到每个子集达到一个停止标准(比如所有的记录都属于同一个类别,或者达到了树的最大深度)。

  4. 剪枝:为了避免过拟合,通过剪掉那些对模型预测能力提升不大的分支来简化决策树。

决策树的优点

  • 直观易懂:决策树的结构清晰,易于理解和解释,它们的决策规则可以直观地展示出来。

  • 不需要很多数据预处理:不需要标准化或归一化数据,也不需要处理缺失值。

  • 可以处理非线性关系:由于分割过程的非参数性质,决策树能够捕捉到数据中的非线性关系。

  • 多功能性:既可以处理分类问题,也可以处理回归问题。

决策树的缺点

  • 容易过拟合:决策树可能会创建过于复杂的树结构,完美地匹配训练数据,但对新数据的泛化能力差。

  • 稳定性较差:小的数据变动可能导致生成完全不同的树。

  • 偏向于多类别的特征:使用信息增益作为分割标准时,决策树倾向于选择那些具有更多类别的特征。

应用实例

决策树广泛应用于各种领域,如医疗诊断、信用评分、股票市场分析、农业研究等。它们的直观性使得非专业人士也能够理解模型的预测结果。

结论

决策树由于其简单和有效性,在解决分类和回归问题上是一个不可或缺的工具。虽然单独的决策树可能容易过拟合,但通过组合多个决策树构成的集成方法,如随机森林和梯度提升决策树,可以大大提高模型的准确性和鲁棒性。学习和掌握决策树不仅有助于理解基本的机器学习原理,还为进一步探索更复杂的算法奠定了基础。

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

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

相关文章

【信号与系统】【北京航空航天大学】实验二、连续时间系统的时域分析【MATLAB】

一、实验目的 1、掌握连续时间信号的卷积运算以及其对应的 MATLAB 实现方法; 2、掌握连续系统的冲激响应、阶跃响应 以及其对应的 MATLAB 实现方法; 3、掌握利用 MATLAB 求 LTI (Linear Time-Invariant, 线性时不变)系统响应的方…

[书生·浦语大模型实战营]——XTuner 大模型单卡低成本微调

1.Finetune简介 在未经过微调的pretrained LLM中,模型只会尽量去拟合你的输入,也就是说模型并没有意识到你在提问,因此需要微调来修正。 1.1常用的微调模式 LLM的下游应用中,增量预训练和指令跟随是经常会用到的两种的微调模式。 增量预训练…

Qt6.5示例:QDomDocument类解析XML文档和文件

01 QDomDocument介绍 QDomDocument类是用于处理XML文档的一个类。QDomDocument提供了对XML文档数据访问的一系列功能,主要功能包括如下: 解析XML文档:QDomDocument可以将XML文档解析为树形结构,每个节点都是一个QDomNode对象&…

企业网盘助力数字化教育资源库建设

教育行业数字化是适应社会发展的必然选择,是教育行业的未来重要发展趋势。万事开头难,如何在数字化时代升级转型是教育行业团队正在面临的挑战。Zoho Workdrive企业网盘深耕智慧文件管理服务,为教育行业量身打造集中文件管理库,推…

【MATLAB源码-第111期】基于matlab的SCMA系统误码率仿真,采用polar码编码,输出误码率曲线。

操作环境: MATLAB 2022a 1、算法描述 SCMA(Sparse Code Multiple Access)系统是一种先进的多用户多输入多输出(MU-MIMO)通信系统,它采用了一种独特的多址访问技术,旨在提高无线通信网络的效率…

CISP注册信息系统安全认证,2024年1月20日即将开课~想了解点击查看

CISP注册信息系统安全认证 1🈷20日 开课~ 想报名的必须提前预约啦 👇👇👇 课程介绍 本课程包括10个独立的知识域(安全工程与运营、计算环境安全、软件安全开发、网络安全监管、物理与网络通信安全、信息安全保障、信…

vue2、vue3里面去掉访问地址中路由‘#‘号--nginx配置

需求 我们这里分享一下关于Vue2和Vue3里面如何去掉浏览器路由里面#号的问题,以及nginx的配置。 去掉#号问题之前我们先讨论一下html中的hash模式和history模式。 html中的hash模式 HTML的hash模式指的是URL中的锚点部分(#后面的内容)被用…

datavrap可视化设计器使用手册

datavrap使用手册 一、产品简介 datavrap是一个动态数据可视化设计器,通过简单配置生成可视化视频,图片和gif。 站长:B站UP,夹克mnnm 这个产品的灵感是在做B站视频时,觉得每次通过修改代码录屏实现视频制作太过于繁琐&…

桌面云虚拟机Ubuntu离线安装open-vm-tools

桌面云虚拟机Ubuntu离线安装open-vm-tools 背景解决思路安装步骤1. 下载open-vm-tools及其依赖软件包2. 软件包转ISO文件3. 安装open-vm-tools 背景 公司办公在桌面云中进行开发,桌面云是无法访问外网的,然后又有安装虚拟机的需求,使用VMwar…

Springboot中使用Filter过滤器

1、概述 springboot工程中使用Filter过滤器与其他地方使用基本相同,只是注入的方式不同。 2、创建Filter过滤器 实现Filter接口,重写doFilter方法 filterChain.doFilter(servletRequest,servletResponse);表示放行 public class MyFilter implement…

基于TCP的全双工网络编程实践

首先我们先了解一下什么是全双工通信? 全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信相当于是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。 TCP服务端代码: #includ…

STM32 定时器输入捕获2——捕获高电平时长

由上图我们可以知道,高电平时间t2-t1。在代码中,可以记录此时t1的时间然后再记录t2的时间,t2-t1,就是我们所想要的答案。 但是,还有更简单一点点的,当到达t1的时候,我们把定时器清零&#xff0c…

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)

人人代码生成器【后端篇】 文章目录 人人代码生成器【后端篇】1. 克隆renren-generator2. 配置项目信息3. 配置数据库信息4. 启动项目5. 创建springboot项目5.1 pom.xml5.2 创建包结构5.3 编写application.yml5.4 将生成代码集成到项目中5.5 集成common模块5.6 启动项目 前言&a…

一键批量整理:将相同名称的文件归类至指定文件夹

随着电脑中的文件日益增多,文件管理成为了让人头疼的问题。相似的文件名,难以分类的内容,让你在寻找和整理时耗费大量时间。现在,有了我们的全新工具,这些烦恼全部消失。 第一步:进入文件批量改名高手主页面…

如何在海洋cms添加广告

1:下载广告代码,注意广告中的图片要放在自己的server上,图片地址要改为自己的实际图片地址,图片存放位置,存在模板的image里面 2在海洋cms后台添加广告管理,只需要广告index.html代码,转换成js代码 广告名…

生成式AI如何重塑开发流程和开发工具:引领科技革命的未来

随着人工智能技术的飞速发展,生成式AI正以前所未有的速度改变着世界。在软件开发领域,生成式AI已经开始重塑开发流程和开发工具,为软件开发人员带来前所未有的便利和创新。本文将深入探讨生成式AI如何重塑开发流程和开发工具,以及…

手写springBoot启动器

提示:springboot原理,手写springboot启动器,手写模拟SpringBoot启动过程、手写模拟SpringBoot自动配置功能 文章目录 前言一、本文内容1、手写模拟SpringBoot启动过程2、手写模拟SpringBoot自动配置功能 二、项目总体介绍三、代码实现(手写模…

C#,史密斯数(Smith Number)的计算方法与源代码

一、关于史密斯数的传说 1、关于理海大学Lehigh University 理海大学(Lehigh University),位于宾夕法尼亚州(Pennsylvania)伯利恒(Bethlehem),由富有爱国情怀与民族精神的实业家艾萨…

计算机毕业设计 | SpringBoot+vue的图书馆管理系统(附源码)

1,绪论 1.1 课题背景 随着现在科学技术的进步,人类社会正逐渐走向信息化,图书馆拥有丰富的文献信息资源,是社会系统的重要组成部分,在信息社会中作用越来越重要,在我国图书馆计算机等 信息技术的应用起步…

SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解

SqlAlchemy使用教程(一) 原理与环境搭建SqlAlchemy使用教程(二) 入门示例及编程步骤 三、使用Core API访问与操作数据库 Sqlalchemy 的Core部分集成了DB API, 事务管理,schema描述等功能,ORM构筑于其上。本章介绍创建 Engine对象,使用基本的…