使用 MATLAB 中的分类和回归树进行预测2025年7月25日 | 阅读 9 分钟 引言决策树模型,如分类和回归树(CART),基于决策树的概念来理解和推断。它们根据特定的决策规则将数据分割成不同的分支,其结构类似于一棵树,每个分支都是一个决策规则。这些规则是从数据中衍生出来的,因此 CART 模型是数据驱动的,不受限制。 - 分类树: 用于目标变量是定性定义或有序的情况。例如,判断收到的电子邮件是否为垃圾邮件。树根据指定的特征将数据集分割成不同的类别,并预测每个类别。
- 回归树: 用于目标变量是定量的情况。例如,根据房屋的大小、位置和年龄预测房价。树会将数据分割成不同的部分,并根据数值预测值。
CART 在机器学习中的重要性CART 可应用于医学(例如,疾病诊断)、金融(例如,信用评级)或营销(例如,客户分类)等领域。它可以解决数据不呈线性格式来表示问题的情况。 - 可解释性: 任何 CART 模型结构都非常简单,非技术人员可以轻松解释和理解。
- 简单性: 与人工智能神经网络等许多不透明的模型不同,CART 模型具有易于解释、确定性的决策规则,这对于处理结果非常方便。
- 适应性: CART 可以处理数值型和类别型数据,并且在构建模型之前可以轻松处理缺失数据。
CART 的主要特点- 二叉树结构: CART 在给定节点处使用二叉递归分割数据集,分割基于决策规则。这使得计算和解释更加容易,因为每次分割都是一个“是-否”的问题。
- 递归分区和分割标准: 在 CART 方法中,数据集的特征被用来将数据集分割成更小、更均匀的集合。分割基于以下标准:
- 基尼不纯度(用于分类): 通过首先分割数据来估计过拟合的速率,以确保不纯度降至最低水平。
- 均方误差(用于回归): 负责确保分割能够最小化纯连续结果的平均绝对误差。
MATLAB 中的 CARTCART 代表分类和回归树,它们是构建分类问题(分类 Y)和数值 Y 的预测模型的强大方法。MATLAB 拥有一些用于构建和分析 CART 模型的集成且用户友好的界面,为研究人员、数据科学家和工程师提供了便利。 - 内置 CART 模型支持: MATLAB 提供了用于构建 CART 模型的函数和特性。fitctree(用于分类树)和 fitrtree(用于回归树)这两个函数使用户能够快速应用和评估决策树。这些函数提供了多种关于如何剪枝、使用什么分割标准以及如何处理缺失值的选项。
- 强大的可视化和调试工具: 与其他软件相比,MATLAB 在提供详细描述方面具有独特优势,这对于解释 CART 模型非常有益。
相关的 MATLAB 工具箱1. 统计和机器学习工具箱 - 此工具箱是 MATLAB 中 CART 建模的主要资源。它提供了用于构建、微调和测试决策树的强大功能。
- 分割特征:用于构建分类树的 Nin、entropy、Gini 索引,用于构建回归树的均方误差。
- 交叉验证功能,用于检查模型准确性以最小化过拟合。
- 树剪枝的额外选项,可在保持预测准确性的同时显著简化树的拓扑结构。
2. 树基建模可用特征 - 该工具箱还包含额外的工具来增强 CART 建模过程
- 超参数调优:在使用 fitctree 和 fitrtree 等函数时,可以通过应用超参数优化技术来管理此状态。
- 树集成:MATLAB 包括两种装袋形式:随机森林和提升,它们使用多个决策树来提高准确性。
MATLAB 中 CART 建模的数据准备预处理步骤处理缺失数据 - 缺失数据可能导致模型预测不准确。为了处理这些空白,MATLAB 提供了 fillmissing 等函数。
- 均值/中位数插补:通过插补变量的均值或中位数来插补缺失数据。
- 插值:插值是指通过线性插值、样条插值、多项式插值等填充缺失值。
- 删除行/列:如果存在大量观测值或解释变量,并且它们不关键,则删除包含更多未知数据的行或列。
处理异常值 - 存在异常值时,可能导致 CART 模型决策失真。
- 使用 MATLAB 的 outlier 函数移除异常值
- Z 分数法:特别是用于确定与平均值(或统计学意义上的平均值)有合理距离的点。
- 基于百分位数的过滤:通常会移除数据分布的外部百分位数中的特征。
特征缩放 - 然而,与其他 CART 模型不同,特征的归一化通常可以在一定程度上提高模型的收敛性和性能。
- 归一化的一个例子是 MATLAB 的 normalize 或 rescale 等函数,用于将数据转换到所需范围,可以是 [0 1] 或 [-1 1]。
特征选择 - 排除可以节省计算时间并可能混乱模型的特征,使解释变得困难。
- 由于 sequential 函数支持顺序特征选择,因此可以使用 MATLAB 中的 sequential 函数自动选择重要预测变量。
- 使用相关性热图或散点图进行探索性数据分析 (EDA),以描述特征与目标之间的关系。
分割数据集- 训练数据集:用于训练 CART 模型。
- 验证数据集:还用于设置其他调优参数,包括最大深度、叶节点中的最小样本数和最终节点。
- 测试数据集:在将最终模型在未见过的数据或先前步骤中使用的数据的未见过子集上呈现之前,继续对其进行测试。
- 数据被均分为三部分,70% 用于训练,15% 用于验证,15% 用于测试。
MATLAB 数据分区函数 - cvpartition: 建立交叉验证分区,以便进行恰当的模型评估。示例
- train_test_split (自定义实现): 用户定义的函数可以根据领域规范增强数据集分区能力。
在 MATLAB 中构建分类树1. 构建决策树使用 Matlab 和 fitctree 函数通过拟合标记的训练模式来生成分类树,从而构建决策树模型。 fitctree 函数: fitctree 函数是 MATLAB 软件中创建的所有分类树的基础。它根据输入变量 X 和目标变量 Y 的特征对树进行分类。 基本语法是 - X: 输入值,形式为数组或矩阵,用于标识独立变量的特征或预测因子。
- Y: 目标变量,因变量或预测类别标签,必须是类别型或数值型,形式为向量。
自定义参数: 在构建决策树时,可以使用名称-值对形式的可调参数来改进树的性能。 - 树深度 (MaxNumSplits): 限制树的最大深度,从而控制树的复杂性。
- 分割标准: 描述如何通过 gdi 或 deviance 等分割标准来分割一个或多个节点。
- MinLeafSize: 确保叶节点包含足够的观测值,以最小化过拟合水平。
2. 分类树可视化这是因为 MATLAB 的图形可视化工具可以更好地解释分类树的内在结构和做出决策的机制。 使用 view 函数: view 函数支持显示树的文本或图形表示 - 'Mode':可以设置为 'graph' 以获得流程图类型的树结构,或设置为 'text' 以获得基于文本的树视图。
- 图输出在每个叶节点包含分割、叶节点和类别预测。
使用 plot 函数: 为了获得更定制化的结果,MATLAB 允许绘制决策树结构 3. 超参数调整参数调优使分类树不仅能在训练数据上表现良好,也能在模型构建时未知的数据上表现良好。 交叉验证: 在交叉验证中,数据集被多次分割成训练集和测试集,以分析模型的性能。 - 'KFold': 指示交叉验证中使用的折数(可以是 10 折)。
- kfoldLoss: 返回第 1 折、第 2 折、第 3 折、第 4 折、第 5 折、第 6 折、第 7 折、第 8 折和第 9 折的平均分类错误。
超参数网格搜索: MATLAB 的另一个重要方面是能够根据 MaxNumSplits 的网格搜索、MinLeafSize 的终端节点中的最小观测数以及 SplitCriterion 的分割确定标准,自动调优最大分裂数等规格。 示例 剪枝: 在树构建完成后,对树结构进行剪枝以减小树的大小,因为某些分支对提高性能的贡献不大。这可以通过以下方法完成 在 MATLAB 中构建回归树1. 构建回归树fitrtree 函数: 在 MATLAB 的所有函数中,fitrtree 是可用于构建回归树的基本函数。它构建一个依赖于预测变量的模型来估计“连续值响应变量”。 该函数适用于输入为一个或多个数值、表或任何包含数值表和其他变量的数据。 语法示例 其中 - X 代表预测变量。
- Y 是连续目标或连续因变量的示例。
fitrtree 函数处理 - 串行和并行分割查找,以预测最坏情况下的错误率。
- 使用代理分割处理缺失数据。
回归分析的自定义参数 为了微调回归树,fitrtree 提供了几个可自定义的参数 - MaxNumSplits: 确定树的最大深度,因此表示允许的最大分割数,以防止过拟合。
示例 - MinLeafSize: 定义叶节点 的最小大小,表示模型中允许的最小观测数。这决定了预测的详细程度。
示例 - PredictorSelection: 指定在每个分割处如何选择最佳预测变量('curvature' 或 'allsplits')。
2. 回归树可视化回归树结果分析 此功能还使 MATLAB 用户能够获得回归树的整体视图,从而更容易解释获得的结果。可视化的关键函数包括 - predict: 用于预测新数据,以便更好地理解决策过程。示例
3. 性能评估评估回归树的性能涉及使用标准指标来评估其预测准确性。 均方误差 (MSE): MSE 是预测值与实际值之间差值均值的平均平方偏差,它定义了预测的准确性。 示例 R 方: R 方评估回归树在多大程度上解释了目标变量的变异性。值越高表示拟合越好。 示例 使用分类和回归树进行预测1. 分类 对于分类问题,predict 函数返回新观测值的预测类别。该函数还会返回每个类别的概率,从而更好地了解确定性度量。 示例 2. 回归 在回归任务中,predict 函数显示结果为基于输入值的数字。这些数字表示在将决策树回归模型应用于选定特征后暴露的预期值。 示例
|