目录

决策树模型

包括

分类树

回归树

构建过程

1.纯度指标

1)信息增益(分类树)

2)基尼不纯度

3)方差减少(回归树)

2. 停止条件

3. 叶节点的输出

优缺点

优点

缺点

树集成

定义

集成方法

袋装决策树

梯度提升树

决策树模型

通过一系列的“如果...那么...”问题,对数据进行层层划分,最终得到一个预测结果。

包括

分类树

  • 目标:预测一个离散的类别标签

  • 输出:叶节点输出一个类别(如“是/否”、“猫/狗/鸟”)。

  • 分裂标准:使用信息增益基尼不纯度来衡量纯度。

回归树

  • 目标:预测一个连续的数值

  • 输出:叶节点输出一个数值(通常是该节点内所有样本目标值的平均值)。

  • 分裂标准:使用方差均方误差的减少量来衡量。算法会选择能最大程度降低目标变量方差的特征进行分裂。

构建过程

1.纯度指标

(选择最佳分裂特征与分裂点)

目标:分裂后,子节点中包含的样本尽可能属于同一类别(即“纯度”更高)。衡量纯度的指标主要有三个:

1)信息增益(分类树)
  • 信息熵:表示一个数据集的“混乱程度”。熵越高,越混乱。 Entropy(D) = - Σ p_i * log₂(p_i)p_i 是数据集中第 i 类样本所占的比例)

  • 熵函数:假如样本有猫和狗两种取值,横轴可以表示树在一次分裂后猫所占的比例,而纵轴表示的是熵

(该函数取2为底数是为了让峰值为1)

  • 信息增益

    在决策树学习中,熵的减少称为信息增益

    分裂前的熵减去分裂后各子集熵的加权平均。使用加权平均是因为样本多的子集对整个数据集纯度的贡献理应比样本少的子集大。

w表示样本数量占总样本数量的比例。

  • 决策策略:选择能带来最大信息增益的特征进行分裂。这是最常用的方法之一。

  • 连续值特征处理:将连续值特征通过一个“阈值”动态地转化为二分的类别特征。

    具体步骤:

    1. 排序:将数据集按照该连续特征的值从小到大排序

      • 例如,年龄排序后:[18, 22, 25, 30, 35, 40, 50]

    2. 生成候选分割点:通常取连续值两两相邻点的中点作为候选阈值。

      • 例如,年龄的候选分割点为:(18+22)/2=20, (22+25)/2=23.5, (25+30)/2=27.5, (30+35)/2=32.5, (35+40)/2=37.5, (40+50)/2=45

    3. 评估每一个候选分割点

      • 对于每一个候选阈值 t,将数据集临时划分为两部分:

        • 左子集 D_left:满足 年龄 <= t 的样本。

        • 右子集 D_right:满足 年龄 > t 的样本。

      • 计算以 t 分割所带来的信息增益(或基尼增益)。

    4. 选择最佳分割点:在所有候选阈值中,选择能带来最大信息增益的那个阈值 t_best。

    5. 与其他特征比较:将这个最佳增益 Best_Gain与使用其他特征(无论是类别还是连续值)所能获得的最佳增益进行比较。最终选择增益最大的那个特征及其分割点作为当前节点的分裂规则。

2)基尼不纯度
  • 衡量从数据集中随机抽取两个样本,其类别标签不一致的概率。基尼不纯度越小,数据集越纯。 Gini(D) = 1 - Σ p_i²

  • 决策策略:选择分裂后能使得加权平均基尼不纯度下降最多(即基尼增益最大)的特征。

  • 特点:计算速度比信息熵快,很多实现(如Scikit-learn)默认使用基尼系数。

3)方差减少(回归树)
  • 当目标变量是连续值时(回归问题),我们使用方差来衡量纯度。选择能最大程度降低目标变量方差的特征进行分裂。

  • 和信息增益的公式类似,依旧要靠加权,只不过熵变成了方差

2. 停止条件

不能让树无限生长下去,否则会完美记忆训练数据,导致严重的过拟合。停止条件通常包括:

  • 节点中的样本数少于预定的最小值。

  • 树的深度达到预定的最大值。

  • 节点中所有样本都属于同一类别(纯度已为100%)。

  • 分裂带来的增益小于某个阈值。

3. 叶节点的输出

  • 分类树:叶节点的输出是该节点中样本的多数类

  • 回归树:叶节点的输出是该节点中样本目标值的平均值

优缺点

优点

  1. 非常直观,易于解释:生成的规则可以被直接理解,甚至翻译成编程语言(if-else)。这在需要模型可解释性的领域(如医疗、金融)至关重要。

  2. 需要很少的数据预处理:不需要对特征进行标准化或归一化,可以处理数值和类别特征。

  3. 能够处理非线性关系:决策边界是轴平行的矩形,可以捕捉复杂的模式。

缺点

  1. 非常容易过拟合:如果不限制树的深度,它会一直分裂直到记住所有训练数据的噪声。这被称为模型复杂度高

  2. 不稳定:训练数据的一个微小变化,可能导致生成一棵完全不同的树。

  3. 贪婪算法:构建时只考虑当前节点的最优分裂,无法保证全局最优。

树集成

定义

构建多棵决策树,并将它们的预测结果结合起来,从而得到一个更强大、更稳定的模型。这样就解决了单棵决策树的高方差和容易过拟合的缺点。

集成方法

袋装决策树
  • 核心思想:通过自助采样 从原始训练集中生成多个不同的子训练集,然后用这些子集并行地训练多棵决策树。最后,对于分类问题取投票,对于回归问题取平均

  • 步骤

  1. 行采样:从原始训练集(共N个样本)中有放回的随机抽取N个样本,形成一个子训练集(称为一个Bootstrap样本集)。这个过程重复多次(64-128),创建多个不同的子训练集。

  2. (有这步就是随机森林算法)列采样:在训练每棵树的每个节点时,不是从所有特征中选择最优分裂特征,而是先从全部特征中随机选取一个特征子集,然后只在这个子集中寻找最优分裂特征。这保证了每棵树学习到的分裂规则也各不相同。

  • 原理

    • 通过引入随机性,刻意地让每棵树都变得“片面”甚至“”(即一棵树本身的性能可能不高)。

    • 但是,当大量片面的、不相关的弱模型组合起来时,它们的错误会相互抵消,正确的部分会相互增强,从而得到一个非常强大且稳定的强模型。

梯度提升树
  • 核心思想按顺序地训练一系列树,每一棵新树都致力于学习和修正前一棵树所犯的错误

  • 代表性算法梯度提升树,以及其高性能实现如 XGBoost, LightGBM, CatBoost

  • 步骤

    1. 第一棵树:用原始数据训练第一棵决策树,进行预测。

    2. 计算残差:计算每个样本的预测值与真实值之间的差距(即残差)。例如,真实房价是300万,第一棵树预测为270万,那么残差就是+30万。

    3. 第二棵树不再用原始标签来训练第二棵树,而是用第一棵树留下的残差作为新的训练目标。也就是说,第二棵树的任务是学习如何预测“第一棵树犯的错误”。

    4. 组合预测:最终的预测是所有树的预测之和最终预测 = 第一棵树的预测 + 第二棵树的预测 + ...

    5. 迭代:重复这个过程,每一棵新树都学习预测当前组合模型的残差。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐