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

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

文章目录

  • 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.kler.cn/news/338940.html

相关文章:

  • CSS圆角
  • 简历修订与求职经历 - Chap02.
  • 【CTF Web】Pikachu CSRF(get) Writeup(CSRF+GET请求+社会工程学)
  • RFID学习
  • 其他:Python语言绘图合集
  • ocam录屏如何?2024四大好用的录屏工具盘点!
  • 9-贪心算法
  • AtCoder Beginner Contest 373(ABCDEF 题)视频讲解
  • 45集 ESP32 ADC按键程序编写
  • 【Linux】-----进程第二弹(优先级,环境变量)
  • No.13 笔记 | 网络安全防护指南:从法律法规到技术防御
  • 【LeetCode】动态规划—516. 最长回文子序列(附完整Python/C++代码)
  • ffmpeg源码分析(七)结构体之AVStream
  • day03 笔试练习
  • LeetCode讲解篇之322. 零钱兑换
  • 每天五分钟深度学习pytorch:基于pytorch搭建一元线性回归模型
  • Axure中文版:原型设计新手必备工具,轻松上手!
  • 数据挖掘笔记part one (认识数据挖掘)
  • matplotlib中文显示乱码问题
  • 线性代数书中求解齐次线性方程组、非齐次线性方程组方法的特点和缺陷(附实例讲解)