【机器学习】——决策树以及随机森林

文章目录

  • 1. 决策树的基本概念与结构
    • 1.1 决策树的构建过程
  • 2. 决策树的划分标准
    • 2.1 信息增益(Information Gain)
    • 2.2 信息增益比(Information Gain Ratio)
    • 2.3 基尼指数(Gini Index)
    • 2.4 均方误差(Mean Squared Error, MSE)
  • 3. 决策树的停止条件与剪枝策略
    • 3.1 停止条件
    • 3.2 剪枝策略
    • 3.3 剪枝策略的实现
  • 4. 决策树的优缺点分析
    • 4.1 优点
    • 4.2 缺点
  • 5. 决策树算法的改进与集成方法
    • 5.1 随机森林(Random Forest)
    • 5.2 提升树(Boosting Tree)
    • 5.3 XGBoost 和 LightGBM
    • 5.4 CatBoost
  • 6. 决策树模型的调参策略
    • 6.1 树深度(max_depth)
    • 6.2 最小样本分裂数(min_samples_split)
    • 6.3 最小样本叶子数(min_samples_leaf)
    • 6.4 分裂准则(criterion)
    • 6.5 最大特征数(max_features)
    • 6.6 树剪枝参数(ccp_alpha)
  • 7. 决策树模型的实际应用
    • 7.1 医疗诊断
    • 7.2 客户分群与信用风险评估
    • 7.3 营销决策
    • 7.4 欺诈检测
  • 8. 经典案例分析
    • 8.1 泰坦尼克号生还预测
    • 8.2 房价预测
  • 9. 决策树在工业界的应用与发展前景
    • 9.1 决策树的发展前景

前言:决策树算法(Decision Tree)详解
决策树(DecisionTree)是一种基于树形结构的监督学习算法,广泛应用于分类和回归任务。它通过一系列的决策规则逐步将数据集划分成多个子集,从而构建出易于理解的决策模型。决策树不仅易于可视化、便于解释,还能够处理复杂的多变量决策问题,因此在各类机器学习模型中占有重要地位。

1. 决策树的基本概念与结构

决策树算法的核心是一个树形结构,由多个**节点(Node)和分支(Branch)**组成。根据节点的类型,决策树的结构可以分为三种基本元素:

1.根节点(Root Node):表示整个数据集的初始状态,是树的起始点。根节点基于某个特征(属性)将数据分为不同的子节点。

2.内部节点(Internal Node):每个内部节点表示一个决策点,即通过某个特征将数据进一步细分。每个内部节点可以有多个子节点(分支)。

3.叶节点(Leaf Node):叶节点是决策树的终点,表示最终的决策或分类结果。每个叶节点通常表示某个类别或一个连续值(回归问题)。

决策树的生成过程就是不断通过特征选择和数据划分,直到满足某个停止条件(如到达叶节点或没有可分的特征)。

1.1 决策树的构建过程

决策树的构建过程主要分为以下几个步骤:

1.特征选择(Feature Selection):在每一步划分时,选择一个最佳特征作为决策依据,进行数据划分。

2.节点分裂(Node Splitting):根据选择的特征,利用不同的分裂准则将当前节点的数据集划分成若干子集。

3.递归分裂(Recursive Splitting):对每个子集递归执行特征选择与节点分裂操作,直到满足停止条件。

4.树剪枝(Tree Pruning):为了避免决策树过拟合(Overfitting),需要对生成的决策树进行简化,去除多余的分支节点。

2. 决策树的划分标准

决策树在每次划分时需要选择一个“最佳”的特征,该特征能够最大程度上提高数据的区分度。常见的划分标准包括信息增益、信息增益比、基尼指数和均方误差等。

2.1 信息增益(Information Gain)

信息增益用于衡量某个特征在划分数据集时带来的信息不确定性减少的程度。其定义基于**熵(Entropy)**的概念:

熵表示数据集的混乱度或不确定性程度。对于一个分类问题,数据集
D 的熵定义为:
在这里插入图片描述
其中,𝑝𝑖表示第 𝑖 类别在数据集中的比例,𝑘 是类别的总数。
当使用特征 𝐴 对数据集 𝐷 进行划分时,特征 𝐴 的信息增益 Gain(D,A) 计算如下:
在这里插入图片描述
其中,
𝐷𝑣是特征 𝐴的第 𝑣 个取值对应的子集,∣𝐷𝑣∣ 表示该子集的样本数,∣𝐷∣表示原始数据集的样本总数。
信息增益越大,说明该特征能够更好地划分数据集。

2.2 信息增益比(Information Gain Ratio)

由于信息增益偏向于选择取值较多的特征,因此引入信息增益比来消除这一偏差。其定义如下:
在这里插入图片描述
其中,分裂信息(Split Information)定义为:
在这里插入图片描述
信息增益比选择的是增益比值最大的特征进行划分。

2.3 基尼指数(Gini Index)

基尼指数主要用于分类树(Classification Tree)中。其衡量某个数据集的纯度,定义如下:
在这里插入图片描述
基尼指数越小,表示数据集的纯度越高。对于特征 𝐴 的划分,基尼指数的计算如下:
在这里插入图片描述
基尼指数越小,说明特征 𝐴 划分后数据集的纯度越高。

2.4 均方误差(Mean Squared Error, MSE)

在**回归树(Regression Tree)**中,使用均方误差来衡量数据点偏离均值的程度。对于数据集 𝐷 中的目标值 𝑦𝑖 ,均方误差定义为:
在这里插入图片描述
其中,𝑦^ 是数据集的平均值。

3. 决策树的停止条件与剪枝策略

在构建决策树时,若不设定停止条件,决策树可能会继续分裂,直到每个叶节点只包含一个数据点或所有数据点都属于同一类别。这种情况容易导致过拟合。为了防止过拟合,决策树通常需要设置以下停止条件或进行剪枝。

3.1 停止条件

1.当前节点的所有样本都属于同一类别。
2.样本特征已经全部使用完,且无法进一步划分。
3.当前节点的样本数低于设定的最小样本数。
4.当前节点的熵或基尼指数低于某个阈值。

3.2 剪枝策略

剪枝策略可以分为预剪枝(Pre-Pruning)和后剪枝(Post-Pruning):

1.预剪枝(Pre-Pruning):在构建过程中提前停止树的生长,如限制树的最大深度、最小样本数等。虽然能减少计算量,但可能造成欠拟合。

2.后剪枝(Post-Pruning):在决策树完全生长后,通过剪去一些不重要的节点(或子树)来简化模型。常用的方法包括代价复杂度剪枝(Cost Complexity Pruning)和最小误差剪枝(Minimum Error Pruning)。

3.3 剪枝策略的实现

代价复杂度剪枝: 定义一个代价复杂度函数 C(T)= R(T)+ α(T)其中 R(T) 表示树 T 的误差率,∣T∣ 是叶节点的数量,𝛼 是控制树复杂度的超参数。通过选择最小的 C(T) 剪去代价最高的子树。

4. 决策树的优缺点分析

4.1 优点

1.易于理解和解释:决策树能够以可视化的方式表示,并能直接从树中提取决策规则。
2.不需要特征标准化:决策树对特征的取值范围不敏感,可以直接处理数值型和类别型特征。
3.处理缺失值:决策树可以处理缺失值,并能生成替代路径。

4.2 缺点

1.容易过拟合:当决策树过于复杂时,模型容易对训练数据产生过拟合,导致对新数据泛化能力差。
2.对噪声敏感:数据中的少量噪声或异常点可能会对树结构产生较大影响。
偏向取值较多的特征:决策树在选择特征时,可能偏向选择取值较多的特

5. 决策树算法的改进与集成方法

为了克服传统决策树的局限性,研究人员提出了多种改进和集成方法,如随机森林(Random Forest)、**提升树(Boosting Tree)和梯度提升决策树(Gradient Boosting Decision Tree, GBDT)**等。这些集成方法通过构建多个弱决策树模型并将其组合,大大提升了模型的稳定性和预测能力。

5.1 随机森林(Random Forest)

随机森林是一种基于**袋装法(Bagging)**的集成学习方法。它通过构建多个相互独立的决策树并对其结果进行投票(分类问题)或平均(回归问题)来得到最终的预测结果。与单一决策树相比,随机森林具有以下优点:

1.减少过拟合风险:随机森林通过随机采样和特征选择,降低了单一决策树对噪声和异常点的敏感性,从而减小了过拟合的风险。

2.提高模型鲁棒性:每棵树都是独立训练的,模型对单个特征的依赖性较低,鲁棒性较强。

3.重要特征度量:随机森林能够输出特征重要性度量指标,便于选择和优化特征。

5.2 提升树(Boosting Tree)

提升树是一种基于**提升法(Boosting)**的集成学习方法。与袋装法不同,提升法是通过训练多个弱学习器(如决策树),每个学习器都尝试修正前一个学习器的错误,从而逐步提升模型性能。典型的提升树算法包括:

1.AdaBoost:通过分配权重来调整每个样本的重要性,重点关注被前一轮分类错误的样本,从而构建一个综合的强分类器。

2.梯度提升决策树(GBDT):GBDT通过在每一步迭代中最小化损失函数(如平方误差、对数损失等),逐步提高模型预测能力。GBDT具有较高的准确性,常用于回归和分类问题。

5.3 XGBoost 和 LightGBM

1.XGBoost:是GBDT的改进版本,通过引入正则化项、防止过拟合和高效的并行计算等技术,提升了训练速度和模型性能。

2.LightGBM:LightGBM通过基于直方图的高效分裂策略,在处理大规模数据时比XGBoost更快,且能够处理类别特征和缺失值。

5.4 CatBoost

CatBoost 是Yandex推出的一种专门处理类别特征的提升树模型。它引入了目标编码(Target Encoding)和随机排列的方式来降低类别特征导致的过拟合问题,常用于复杂的分类任务。征,从而导致模型的不稳定性。

6. 决策树模型的调参策略

决策树模型有多个超参数,如树的深度、最小样本数、分裂准则等。合理调参能够有效提升模型性能。常用的调参策略如下:

6.1 树深度(max_depth)

含义:限制决策树的最大深度,防止树过深导致过拟合。
调参策略:在较大的深度范围内进行网格搜索或交叉验证,找到使模型性能最优的深度。

6.2 最小样本分裂数(min_samples_split)

含义:设置每次分裂时节点中需要的最小样本数。较大的样本数会导致树更为精简,降低过拟合风险。
调参策略:根据数据集大小进行调节,通常设置为 2 到 20 之间。

6.3 最小样本叶子数(min_samples_leaf)

含义:设置叶节点中需要的最小样本数,避免生成过小的叶子节点,从而提升泛化能力。
调参策略:该参数通常设置为 1 到 10 之间,叶子数越大,模型越简单。

6.4 分裂准则(criterion)

含义:指定特征选择时的分裂准则。常用准则包括“基尼系数(gini)”和“信息增益(entropy)”。
调参策略:对于大多数分类任务,“基尼系数”通常表现较好,但对于一些平衡的分类问题,信息增益可能更合适。

6.5 最大特征数(max_features)

含义:每次分裂时使用的最大特征数,避免模型对某些特征过于依赖。
调参策略:设置为“auto”或“sqrt”常能提升性能,也可以根据实际特征数量调整。

6.6 树剪枝参数(ccp_alpha)

含义:用于控制决策树的复杂度,值越大表示剪枝力度越强。
调参策略:通过交叉验证找到最优的剪枝参数,防止模型过拟合。

7. 决策树模型的实际应用

7.1 医疗诊断

决策树广泛应用于医疗数据分析中,例如预测某种疾病的可能性。医生可以通过决策树的结构轻松理解诊断过程。

7.2 客户分群与信用风险评估

在金融领域,决策树用于客户分群和信用风险评估。银行可以利用决策树模型分析客户数据,确定客户是否具有良好的信用评分,从而决定是否放贷。

7.3 营销决策

决策树在市场营销中用于细分客户群体,帮助企业根据不同群体的特征制定相应的营销策略。通过分析客户的年龄、性别、购买历史等特征,决策树能够预测客户对某种产品的偏好。

7.4 欺诈检测

决策树能够快速识别数据中的异常模式,因此在信用卡欺诈检测中应用广泛。模型能够从交易数据中发现异常行为,并及时标记可疑的交易。

8. 经典案例分析

8.1 泰坦尼克号生还预测

在泰坦尼克号乘客数据集中,决策树可以根据乘客的年龄、性别、舱位等级等特征,预测乘客的生还概率。决策树通过一系列规则(如“性别为女性,则生还概率高”)来构建模型。

8.2 房价预测

在房价预测中,回归树可以根据房屋面积、位置、房龄等特征,将数据集划分成多个区域,并根据每个区域的均值预测房价。

9. 决策树在工业界的应用与发展前景

1.自动化决策系统:决策树可以帮助企业在客户服务、产品推荐等场景中实现自动化决策。

2.智能制造:在制造业中,决策树可以用来检测生产过程中的异常模式,从而提升生产效率。

3.个性化推荐系统:结合决策树的特征选择能力,能够为用户提供更精准的推荐方案。

9.1 决策树的发展前景

随着大数据和深度学习的发展,决策树作为一种传统的机器学习模型,依然在许多场景中具有不可替代的作用。未来,决策树将与深度学习模型相结合,形成更复杂的混合模型,从而在更多领域中发挥其优势。

通过以上详尽介绍,读者能够全面理解决策树算法的原理、应用及其优化方法,并能够在实际项目中灵活运用该模型来解决复杂问题。

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

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

相关文章

使用 Blazor 和 Elasticsearch 构建搜索应用程序

作者:来自 Elastic Gustavo Llermaly 了解如何使用 Blazor 和 Elasticsearch 构建搜索应用程序,以及如何使用 Elasticsearch .NET 客户端进行混合搜索。 在本文中,你将学习如何利用 C# 技能使用 Blazor 和 Elasticsearch 构建搜索应用程序。我…

解决新版Android studio不能连接手机的问题

我要说的是一个特例,装了22年的版本AS可以正常连接手机,装了23年以后新版本,AS不能正常连接手机了,但是在CMD控制台可以正常的执行adb命令,并且CMD和AS都是指向D:\android_sdk\platform-tools\adb.exe 一、 为什么会出…

ChatGPT完成论文润色的提示词分享

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 在论文写作的最后阶段,润色是确保文章质量的重要步骤。无论是语法检查、句式优化,还是提升语言的连贯性和一致性,润色都能显著提高论文的专业性与可读…

openstack-swift.18421165

对象存储 swift 对象存储 是一种用于存储和管理大量数据的系统。类似于一个超大云盘。可以存储各种文件。(照片,视频,文档等等)。与传统的文件存储不同,对下个存储不关心文件的目录结构和层级关系,而是将每…

【unity游戏开发】彻底理解AnimatorStateInfo,获取真实动画长度

前言 前置知识:设置参数后,下一个循环才会切换对应动画,所以在下一个循环获取真实的动画长度 AnimatorStateInfo是结构体!值类型,要不断重复获取才是最新的 主要是自动设置trigger切换的动画自动切回上一个动画&#x…

【读书笔记·VLSI电路设计方法解密】问题7:什么是基于标准单元的专用集成电路 (ASIC) 设计方法论

标准单元方法论是一种基于预组装库单元的芯片设计方法。该库中包含的标准单元和宏单元(例如存储器、I/O、特殊功能单元、锁相环(PLLs)等)已经在预定的工艺节点中设计、布局并经过验证。这些单元经过完全表征,并在逻辑、时序、物理和电气模型方面进行了定义,并正确地打包在…

Day2 IDEA

使用IDEA开发第一个程序 代码结构:Project - Module - Package - Class 作用:便于管理代码 例如: 创建一个空工程 创建module模块 创建package,一般以公司域名倒写技术名称 例如:com.test.hello 创建类 class He…

Axios 网络请求

文章目录 Axios 网络请求1.Axios 使用1.Axios 简介2.Axios 安装安装命令 3.Axios 引入方式全局引入局部引入 2.整合 vue1.在组件中使用 axios 发送请求发送结果这里就出现了跨域问题 3.跨域后端解决办法全局配置类 加入注解 CrossOrigin请求结果 全局配置 baseUrl Axios 网络请…

Nodejs-Nestjs框架 RBAC(基于角色的访问控制模型) 微服务 仿小米商城实战视频教程-2024年-试看学习记录

文章目录 前提-安装环境Nestjs框架介绍Nestjs框架环境搭建创建nestjs项目运行nestjs项目demonestjs新项目结构解释nestjs中的控制器、路由、Get、Post、方法参数装饰器nestjs模板引擎、配置静态资源(了解即可)nestjs中的服务(Model)nestjs中的cookie(了解即可)nestjs中的se…

YOLOv11训练自己数据集_笔记1

一、前言 yolov11-main 官网 分析YOLO11的关键改进点 YOLO11 相比之前版本,带来了五大关键改进: 增强特征提取:通过改进Backbone和Neck架构,新增了C3k2和C2PSA等组件,提升了目标检测的精度。 优化效率和速度&#xf…

深入理解HTTP Cookie

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 HTTP Cookie定义工作原理分类安全性用途 认识 cookie基本格式实验测试 cookie 当我们登录了B站过后,为什么下次访问B站就…

ctfshow-web 萌新题

给她 spring漏洞 pyload: 1.dirsearch扫描&#xff0c;发现git 2. GitHack工具得到.git文件 <?php $passsprintf("and pass%s",addslashes($_GET[pass])); $sqlsprintf("select * from user where name%s $pass",addslashes($_GET[name])); ?>…

HTML5实现古典音乐网站源码模板1

文章目录 1.设计来源1.1 网站首页1.2 古典音乐界面1.3 著名人物界面1.4 古典乐器界面1.5 历史起源界面2.效果和源码2.1 动态效果2.2 源代码源码下载万套模板,程序开发,在线开发,在线沟通作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/142…

aws(学习笔记第一课) AWS CLI,创建ec2 server以及drawio进行aws画图

aws(学习笔记第一课) 使用AWS CLI 学习内容&#xff1a; 使用AWS CLI配置密钥对创建ec2 server使用drawio&#xff08;vscode插件&#xff09;进行AWS的画图 1. 使用AWS CLI 注册AWS账号 AWS是通用的云计算平台&#xff0c;可以提供ec2&#xff0c;vpc&#xff0c;SNS以及clo…

无人机之飞控仿真技术篇

一、无人机飞控仿真技术的定义 无人机飞控仿真技术主要是指飞行控制系统仿真&#xff0c;它是以无人机的运动情况为研究对象&#xff0c;面向对象的复杂系统仿真。通过该技术&#xff0c;可以模拟无人机的飞行过程&#xff0c;评估飞行控制系统的性能&#xff0c;优化飞行参数&…

【Linux:线程控制】

目录 线程的创建与等待&#xff1a; ​编辑 代码中tid是什么&#xff1f; 如何看待线程函数传参&#xff1f; ​编辑 ​编辑创建多线程&#xff1a;​编辑 终止多线程&#xff1a; 线程分离&#xff1a; 线程封装&#xff1a; 线程的创建与等待&#xff1a; void *thre…

leetcode125:验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xff0c;如果它是 回文串 &#xff0c;返回 true &#xff1b;否则&#…

华为OD机试 - 贪吃蛇 - 队列(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

计算机网络:数据链路层 —— 数据链路层概述

文章目录 数据链路层主要功能 基本概念链路数据链路帧 数据链路层 在计算机网络中&#xff0c;链路层&#xff08;Data Link Layer&#xff09;是网络协议栈中的一层&#xff0c;负责管理和控制链路的建立、维护和释放&#xff0c;以及处理链路层的数据帧传输和错误控制等功能…

Linux入门3——vim的简单使用

1.vim 1.1 vim的模式 vim有三种主要模式&#xff1a; ①命令模式&#xff1a;使用vim刚打开进入的模式就是命令模式&#xff1b; ②插入模式&#xff1a;只有在插入模式下才可以做文字输入&#xff0c;按[Esc]键可退回命令模式&#xff1b; ③末行模式&#xff1a;文件保存或退…