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

news2024/11/18 5:50:15

文章目录

  • 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.coloradmin.cn/o/2175537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

极限基本类型小结

极限基本类型小结 在之前的文章中已经看过了极限的多种基本类型,下面展示一些各种基本类型的代表性的图像,通过观察下面的图像可以帮助我们回顾函数在趋近于某一点时函数值的行为(这也叫极限值),也生动的描述了各种极…

老古董Lisp实用主义入门教程(12):白日梦先生的白日梦

白日梦先生的白日梦 白日梦先生已经跟着大家一起学Lisp长达两个月零五天! 001 粗鲁先生Lisp再出发002 懒惰先生的Lisp开发流程003 颠倒先生的数学表达式004 完美先生的完美Lisp005 好奇先生用Lisp来探索Lisp006 好奇先生在Lisp的花园里挖呀挖呀挖007 挑剔先生给出…

关于工作虚拟组的一些思考

这是学习笔记的第 2493篇文章 因为各种工作协作,势必要打破组织边界,可能会存在各种形态的虚拟组。 近期沉淀了一些虚拟组的管理方式,在一定时间范围内也有了一些起色,所以在不断沉淀的过程中,也在不断思考。 这三个虚…

企业级版本管理工具(1)----Git

目录 1.Git是什么 2.Git的安装和使用 在Ubuntu下安装命令如下: 使用git --version查看已安装git的版本: 使用git init初始化仓库: 使用tree .git列出目录: 使用git config命令设置姓名和邮箱: 加入--global选项…

WPF MVVM入门系列教程(一、MVVM模式介绍)

前言 还记得早些年刚工作的那会,公司的产品从Delphi转成了WPF(再早些年是mfc)。当时大家也是处于一个对WPF探索的阶段,所以有很多概念都不是非常清楚。 但是大家都想堆技术,就提出使用MVVM,我那会是第一次…

想做个WPS的自动化代码,参考如下:

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

水仙花数求解-C语言

1.问题&#xff1a; 输出100-1000之间所有的“水仙花数”。 2.解答&#xff1a; “水仙花数”是指一个3位数&#xff0c;其各位数字立方和等于该数本身&#xff0c;逐个位数判断即可&#xff0c;写代码的时候要考虑到每一位。 3.代码&#xff1a; #include<stdio.h>//…

9.28QT基础

widget.cpp widegt.h .pro main.cpp 一个仿QQ登录界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->setFixedSize(350,500);this->setStyleSheet("background-color:#e5f0ff;");QLineEdit *edit1 new QLine…

1.2.3 HuggingFists安装说明-MacOS安装

MacOS版安装说明 下载地址 【GitHub】GitHub - Datayoo/HuggingFists4Mac 【百度网盘】https://pan.baidu.com/s/12WxZ-2GgMtbQeP7AcmsyHg?pwd2024 安装说明 环境要求 操作系统&#xff1a;MacOS 硬件环境&#xff1a;至少4核8G 安装步骤 1. 安装Docker环境。若已安装Do…

kali linux 终端复用和界面移动

kali linux 终端复用和界面移动 经验和操作 渗透测试的工具选择考虑 01 能用命令行就不用图形ui 图形ui 容易对细节隐藏&#xff0c;命令行工具的在终端输出的日志相对透明&#xff0c;容易观察和调整 wireshark – tcpdump burpsuit – curl( web 访问相关), wfuzz(模糊测…

带你0到1之QT编程:十七、Http协议实战,实现一个简单服务器和一个客户端进行http协议通信

此为QT编程的第十七谈&#xff01;关注我&#xff0c;带你快速学习QT编程的学习路线&#xff01; 每一篇的技术点都是很很重要&#xff01;很重要&#xff01;很重要&#xff01;但不冗余&#xff01; 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点&#xff01; …

Python15行代码 tkinter模块 写计算机

之前去备战csp-j了 也有一段时间没更新了 结果白名单没捞着 还差点被我妈打喜 今天闲来无事 写个计算器玩玩 _____________________________________________________________________________ 老规矩 先放代码 from tkinter import *;from math import sqrt;aTk();a.geome…

机械键盘驱动调光DIY--【DAREU】

1 下载键盘对应的驱动&#xff0c;不要装到C盘 达尔优驱动下载中心 2 驱动更改教程 标准模式 键盘功能 鼠标功能 切换灯光 切换配置文件 多媒体 windows快捷键 禁用 Fn 启动程序 文本功能 光标定位 FN模式 灯光效果设置 注意 宏--自定义功能

【SpringCloud】多机部署, 负载均衡-LoadBalance

多机部署, 负载均衡-LoadBalance 1. 负载均衡介绍1.1 问题描述1.2 什么是负载均衡1.3 负载均衡的⼀些实现服务端负载均衡客⼾端负载均衡 2. Spring Cloud LoadBalancer 1. 负载均衡介绍 1.1 问题描述 观察上个章节远程调⽤的代码 根据应⽤名称获取了服务实例列表从列表中选择…

【SQL】未订购的客户

目录 语法 需求 示例 分析 代码 语法 SELECT columns FROM table1 LEFT JOIN table2 ON table1.common_field table2.common_field; LEFT JOIN&#xff08;或称为左外连接&#xff09;是SQL中的一种连接类型&#xff0c;它用于从两个或多个表中基于连接条件返回左表…

CSS布局中的定位

一、position 1.static position: static; 默认值&#xff0c;没有定位2 .relative 相对定位&#xff1a;相对自身原来的位置进行偏移 偏移设置&#xff1a;top、left、right、bottom 相对定位元素的规律&#xff1a; 设置相对定位的盒子会相对于它原来的位置&#xff0c;通…

Nature数据库介绍及个人获取Nature文献下载途径

Springer Nature集团是一家全球领先的从事科研、教育和专业出版的机构&#xff0c;也是世界上最大的学术图书出版公司&#xff0c;同时出版全球最具影响力的期刊&#xff0c;也是开放获取领域的先行者。Springer Nature在2015年由Nature出版集团&#xff08;Nature Portfolio&a…

JS加密=JS混淆?(JS加密、JS混淆,是一回事吗?)

JS加密、JS混淆&#xff0c;是一回事吗&#xff1f; 是的&#xff01;在国内&#xff0c;JS加密&#xff0c;其实就是指JS混淆。 1、当人们提起JS加密时&#xff0c;通常是指对JS代码进行混淆加密处理&#xff0c;而不是指JS加密算法&#xff08;如xor加密算法、md5加密算法、…

正点原子——DS100示波器操作手册

目录 基础按键&#xff1a; 快捷键 主界面&#xff1a; 垂直设置&#xff1a; 通道设置&#xff1a; 探头比列&#xff1a; 垂直档位&#xff1a; 垂直偏移&#xff1a; 幅度单位&#xff1a; 水平设置&#xff1a; 触发方式&#xff1a; 测量和运算: 光标测量&am…

面试题:MySQL你用过WITH吗?领免费激活码

感谢Java面试教程的Java多线程文章&#xff0c;点击查看>原文 Java面试教程&#xff0c;发mmm116可获取IDEA-jihuoma 在MySQL中&#xff0c;WITH子句用于定义临时表或视图&#xff0c;也称为公共表表达式&#xff08;CTE&#xff09;。它允许你在一个查询中定义一个临时结果…