机器学习5

1.1 决策树的定义

  • 决策树是用于分类和回归的机器学习算法。它通过一系列的“是或否”的决策来分类数据。每个决策是基于数据的某个属性进行的,如“色泽是青绿吗?”。
  • 决策树的核心是通过树状结构,将一个复杂的问题逐步拆解为多个简单的二元问题,最终通过一系列决策得出结果。

示例:假设我们要判断一个水果是否是苹果。可能的决策过程包括:

  • 颜色是红色吗?如果是,继续判断;
  • 形状是圆的吗?如果是,继续判断;
  • 它的味道是甜的吗?如果都是,那么我们可以说它是苹果。

1.2 决策树的基本元素

  • 根节点:根节点是决策树的起点,它包含了所有数据。在决策树中,所有的分类判断从根节点开始。
  • 内部节点:每个内部节点代表对某个属性的判断。例如,“颜色是否为红色”可以是一个内部节点。
  • 叶节点:叶节点代表最终的分类结果。例如,经过一系列判断后,叶节点会告诉我们“是苹果”或“不是苹果”。

示例

       颜色/    \红色    其他/         \形状       不是苹果/   \
圆     其他|
味道|
甜 -> 苹果

在这个例子中,我们通过颜色、形状和味道的逐步判断,最终得出是否是苹果的结论。

1.3 决策树的生成步骤

决策树生成过程基于“分而治之”的策略,通过不断地划分数据集,逐步建立决策规则。

  1. 输入:给定一个训练数据集 (D = {(X_1, Y_1), (X_2, Y_2), \dots, (X_m, Y_m)}) 和属性集 (A = {a_1, a_2, \dots, a_n})。

    • 训练数据集包含特征和标签,如 (X_1) 是样本的属性,(Y_1) 是它的分类结果。
    • 属性集是可用来划分样本的特征,比如色泽、根蒂等。
  2. 生成节点:从根节点开始,递归创建决策树。如果节点包含的样本都属于同一类别(如都是“好瓜”),那么将该节点标记为叶节点,并终止进一步划分。

  3. 选择划分属性:当节点中的样本不属于同一类别时,需要选择一个最优的属性来划分样本。例如,如果属性“色泽”对样本的分类效果最好,选择它来划分数据。

  4. 递归生成子节点:对于每个子节点,重复步骤2和3,直到所有节点都成为叶节点或无法继续划分为止。

1.4 决策树递归返回的三种情形

  1. 样本同类:如果当前节点中所有样本属于同一类(如全部是好瓜),则该节点直接标记为叶节点,无需继续划分。
  2. 属性无法再划分:如果样本在当前所有属性上的取值相同,则无法继续划分。这种情况下,将该节点标记为样本数最多的类。
  3. 样本集为空:如果某个节点没有样本,则标记为其父节点样本数最多的类别。

示例:假设我们在划分过程中遇到一个节点,包含的所有样本都是“好瓜”,那么这个节点会被标记为“好瓜”,不再进行进一步划分。

递归过程:决策树的生成是一个递归的过程,树会不断地被细化,直到所有节点都无法再进行划分。每次划分时都选择当前最优的属性来进行,这保证了决策树能够尽量准确地分类数据。

1.5 总结与示例

为了更好地理解决策树的流程,我们可以看以下的例子:

  • 问题:判断一个水果是否是苹果。

  • 属性

    1. 颜色:红色、绿色、黄色;
    2. 形状:圆形、椭圆形;
    3. 味道:甜、酸。

    决策过程如下:

       颜色/    \红色    其他/         \形状       不是苹果/   \
圆     其他|
味道|
甜 -> 苹果

在这个决策树中,首先判断颜色,如果是红色则继续判断形状;如果形状是圆的,再判断味道;最终,如果味道是甜的,可以判断为苹果。


2. 划分选择

2.1 信息增益

首先,信息增益的目标是通过某个属性对数据集进行划分,使得划分后的数据集更加“纯净”,即每个子集尽可能只包含同一类别的样本。

我们首先来看 信息熵 的定义:
[
Ent(D) = - \sum_{k=1}^{|Y|} p_k \log_2 p_k
]
这个公式的每一个符号解释如下:

  • (Ent(D)):表示数据集 (D) 的 信息熵,是衡量数据集纯度的一个指标。
  • (\sum_{k=1}^{|Y|}):这是一个求和符号,表示对 (k) 从 1 到 (|Y|) 进行求和。 (|Y|) 表示数据集中类别的数量。例如,西瓜数据集中有两类(好瓜和坏瓜),所以 (|Y| = 2)。
  • (p_k):这是数据集中第 (k) 类样本的比例。例如,如果在数据集中好瓜占 60%,坏瓜占 40%,那么 (p_1 = 0.6),(p_2 = 0.4)。
  • (\log_2 p_k):这是 (p_k) 在以 2 为底的对数,表示第 (k) 类的熵值。

公式含义:信息熵是通过计算各个类别在数据集中的占比 (p_k),然后将这些占比进行加权求和,用来衡量整个数据集的不确定性。熵值越大,表示数据集越混乱,类别分布越分散;熵值越小,表示数据集越纯净,样本集中在某一类别。

示例:假设在一个西瓜数据集中,有 60% 是好瓜,40% 是坏瓜,则信息熵计算如下:
[
Ent(D) = -(0.6 \log_2 0.6 + 0.4 \log_2 0.4) \approx 0.971
]
这个值表示当前数据集中的不确定性程度。

信息增益 的公式为:
[
Gain(D, A) = Ent(D) - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} Ent(D_v)
]
每个符号的解释如下:

  • (Gain(D, A)):表示使用属性 (A) 对数据集 (D) 进行划分后,所获得的 信息增益。信息增益是指划分后数据集的熵值减少量。
  • (Ent(D)):表示划分之前整个数据集 (D) 的信息熵。
  • (\sum_{v \in Values(A)}):表示对属性 (A) 的每个可能取值 (v) 进行求和。 (Values(A)) 表示属性 (A) 的所有可能取值,例如“色泽”属性可能有“青绿”、“乌黑”、“浅白”等取值。
  • (\frac{|D_v|}{|D|}):表示子集 (D_v) 的样本数占总样本数 (D) 的比例。即在划分后,每个子集的大小对总信息增益的贡献权重。
  • (Ent(D_v)):表示子集 (D_v) 的信息熵。划分后,每个子集中的样本越“纯净”,这个值就越小。

公式含义:信息增益是衡量使用某个属性 (A) 对数据集 (D) 进行划分时,数据集的纯度提升了多少。信息增益越大,说明使用该属性进行划分能够更有效地减少数据集的不确定性,从而使得子集更加纯净。

示例:如果我们使用“色泽”作为划分属性,将数据集 (D) 分为三个子集 (D_1)(青绿),(D_2)(乌黑),和 (D_3)(浅白)。分别计算每个子集的信息熵和它们在总数据集中的比例,然后计算出信息增益。

2.2 增益率

增益率用于避免信息增益对可取值较多的属性(如编号)产生偏好。它的公式为:
[
Gain_ratio(D, A) = \frac{Gain(D, A)}{IV(A)}
]
其中:

  • (Gain(D, A)):表示属性 (A) 的信息增益。
  • (IV(A)):表示属性 (A) 的 固有值,用于调整信息增益的偏好。

固有值 的计算公式为:
[
IV(A) = - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} \log_2 \frac{|D_v|}{|D|}
]
每个符号的解释如下:

  • (\sum_{v \in Values(A)}):对属性 (A) 的每个取值 (v) 进行求和。
  • (\frac{|D_v|}{|D|}):子集 (D_v) 的样本占总样本数的比例。
  • (\log_2 \frac{|D_v|}{|D|}):子集占比的对数。

公式含义:固有值衡量的是属性 (A) 的取值的分布情况。如果一个属性的取值越多,固有值 (IV(A)) 就会越大。这是为了减少信息增益对取值较多属性的偏好。

示例:例如,编号属性虽然对每个样本的分类都能得到高的信息增益,但它并没有实际意义。增益率通过使用固有值来调整这种偏好,使得划分更加合理。

2.3 基尼指数

基尼指数 是另一种衡量数据集纯度的指标,常用于 CART 决策树。它的公式为:
[
Gini(D) = 1 - \sum_{k=1}^{|Y|} p_k^2
]
每个符号的解释如下:

  • (Gini(D)):表示数据集 (D) 的基尼指数。
  • (\sum_{k=1}^{|Y|}):对类别 (k) 从 1 到 (|Y|) 进行求和,(|Y|) 是类别的总数。
  • (p_k):表示第 (k) 类样本的比例。

公式含义:基尼指数衡量的是从数据集中随机抽取两个样本,它们属于不同类别的概率。基尼指数越小,表示数据集的纯度越高。

示例:假设一个数据集有60%的好瓜和40%的坏瓜,那么基尼指数为:
[
Gini(D) = 1 - (0.6^2 + 0.4^2) = 0.48
]
这个值表示数据集中样本的混合程度。

通过这些公式,我们可以根据数据的特征选择最优属性来划分决策树,从而提高模型的分类效果。


3. 剪枝处理

剪枝是决策树学习中的一个重要步骤,用来防止过拟合。过拟合是指模型对训练数据过度拟合,导致对新数据的泛化能力下降。剪枝可以减少模型的复杂度,从而提高模型的泛化能力。

剪枝策略通常分为两种:

  • 预剪枝:在生成决策树的过程中,提前停止分裂,避免生成过多分支。
  • 后剪枝:先生成一棵完整的决策树,然后从叶节点开始向上回溯,去掉一些分支。
3.1 预剪枝
  • 预剪枝在每次划分前,通过评估划分是否能提高模型的泛化性能,决定是否进行划分。
  • 如果划分不能带来显著的性能提升,算法会停止划分,并将当前节点标记为叶节点。

示例:假设我们正在生成一棵决策树,当前节点的样本集已经通过某个属性划分,但继续划分带来的性能提升很小,甚至可能对新数据的预测准确率下降。在这种情况下,预剪枝策略会停止继续划分,将当前节点标记为叶节点。

3.2 后剪枝
  • 后剪枝是在生成一棵完整的决策树之后,通过逐步删除一些分支来减少过拟合。
  • 后剪枝的基本步骤是:从树的叶节点开始向上回溯,逐一评估是否可以将当前节点的子树替换为一个叶节点。如果替换能提高泛化性能,则进行剪枝。

示例:假设我们有一棵完整的决策树,其中某个分支只对训练数据有作用,但对新数据预测时效果很差。在这种情况下,后剪枝策略会删除这个分支,将其父节点直接标记为叶节点。

总结:剪枝的目的在于减少决策树的复杂度,避免过拟合,从而提高模型的泛化能力。预剪枝和后剪枝各有优缺点,前者可以减少生成树的时间,但可能错过某些有效的划分;后者能够保留更多的信息,但需要更多的计算资源。


4. 连续与缺失值

在现实中的数据集里,很多属性是 连续值,例如一个水果的密度或含糖量。此外,数据集中还可能存在 缺失值,例如某些样本在某个属性上没有取值。决策树算法需要处理这些情况,以确保模型的可靠性。

4.1 连续值处理

对于离散属性,决策树可以直接根据取值划分数据集,但连续属性的取值范围很大,不能简单地枚举所有可能值。因此,决策树通过 二分法 来处理连续属性。

公式:在划分数据集时,决策树选择一个划分点 (t),将数据集分为两部分:
[
Gain(D, A, t) = Ent(D) - \left( \frac{|D_{\leq t}|}{|D|} Ent(D_{\leq t}) + \frac{|D_{> t}|}{|D|} Ent(D_{> t}) \right)
]
解释如下:

  • (Gain(D, A, t)):表示在划分点 (t) 下,使用属性 (A) 进行划分所获得的信息增益。
  • (Ent(D)):划分前数据集 (D) 的信息熵。
  • (\frac{|D_{\leq t}|}{|D|}):表示取值不大于 (t) 的样本在整个数据集中的比例。
  • (Ent(D_{\leq t})):表示取值不大于 (t) 的样本子集的信息熵。
  • (\frac{|D_{> t}|}{|D|}):表示取值大于 (t) 的样本在整个数据集中的比例。
  • (Ent(D_{> t})):表示取值大于 (t) 的样本子集的信息熵。

公式含义:通过选取不同的划分点 (t),决策树可以将连续属性分为两部分,计算划分后的信息增益。最终选择信息增益最大的划分点作为最佳划分。

示例:假设我们有一个水果数据集,属性“密度”的取值范围是 0.1 到 0.9。决策树可以通过划分点 (t = 0.5) 将数据集分为两部分:密度小于等于 0.5 和密度大于 0.5。然后计算每个部分的信息增益,选择最优的划分点。

4.2 缺失值处理

在现实数据集中,常常会遇到某些属性的值缺失,决策树需要处理这些不完整的样本,而不是简单地舍弃它们。处理缺失值的常见方法包括:

  1. 属性值缺失:当某个样本在某个属性上的取值缺失时,可以通过样本权重的调整来处理。具体方法是将样本按比例分配到不同的子节点,并根据样本的权重调整划分结果。

  2. 分类结果缺失:在分类过程中,如果某个样本的某个属性取值缺失,决策树可以同时将样本分配到所有可能的子节点,并根据样本的权重调整最终的分类结果。

公式:处理缺失值时,信息增益的计算公式被修改为:
[
Gain(D, A) = p \times Gain(D, A)
]
其中,(p) 表示没有缺失值样本的比例。

公式含义:在计算信息增益时,仅对没有缺失值的样本集进行计算,同时根据样本集的比例调整最终的信息增益结果。

示例:假设我们有一个数据集,其中某些样本的“色泽”属性缺失。我们可以根据样本权重,将缺失的样本分配到不同的子节点,计算这些子节点的信息增益。


5. 多变量决策树

多变量决策树 是决策树的扩展版本,它允许使用多个属性的线性组合来进行划分,而不仅仅是单个属性。这种方法能够处理复杂的分类问题,特别是当数据的决策边界不是简单的轴平行时。

5.1 多变量决策树的定义
  • 在普通的决策树中,非叶节点对单个属性进行测试(如“色泽是否为青绿?”)。
  • 而在多变量决策树中,每个非叶节点测试的是多个属性的线性组合。也就是说,决策树的节点不是对某个单独的属性进行划分,而是对多个属性组合后的结果进行划分。

线性分类器 的公式为:
[
w_1 x_1 + w_2 x_2 + \dots + w_d x_d \leq t
]
解释如下:

  • (w_1, w_2, \dots, w_d):表示属性 (x_1, x_2, \dots, x_d) 对应的权重。每个权重 (w_i) 代表属性 (x_i) 对分类的重要性。
  • (x_1, x_2, \dots, x_d):表示样本的属性值。例如,样本的密度、含糖量等。
  • (t):是一个阈值,表示通过这个阈值来决定样本属于哪个类别。

公式含义:通过多个属性的线性组合,决策树能够在数据空间中形成一个斜的划分边界,而不是像传统决策树那样形成轴平行的划分边界。

5.2 多变量决策树的划分方式
  • 多变量决策树允许节点使用多个属性的组合进行划分,因此它可以生成“斜决策边界”。这种划分方式能够更好地处理复杂数据,例如当数据的决策边界是斜的,而不是平行于坐标轴时。

示例:在普通决策树中,如果我们使用属性“密度”和“含糖量”分别对数据进行划分,得到的决策边界是平行于这些属性轴的。但在多变量决策树中,我们可以对这两个属性的线性组合进行划分,例如“0.5 * 密度 + 0.3 * 含糖量 \leq 0.7”,从而得到一个斜的决策边界。

图示
在西瓜数据集上,传统决策树的划分可能会形成直角形的决策区域,而多变量决策树可以通过线性组合形成斜线划分,更加灵活。


6. 阅读材料

这一部分列出了与决策树相关的经典算法和文献,它们对决策树的研究和发展起到了重要的作用。

6.1 经典算法
  • ID3:最早的决策树算法之一,它使用信息增益作为划分标准来选择最优属性。
  • C4.5:ID3的改进版本,使用增益率来避免对取值较多的属性产生偏好,并且能够处理连续值和缺失值。
  • CART:分类与回归树(Classification and Regression Tree),它使用基尼指数作为划分标准,适用于分类和回归任务。
6.2 其他相关文献
  • [Murthy, 1998]:提供了决策树相关文献的综述和研究指南。
  • [Quinlan, 1993]:C4.5决策树算法的原始论文,介绍了增益率和剪枝处理等技术。
  • [Breiman et al., 1984]:CART算法的提出者之一,介绍了基于基尼指数的决策树算法。
6.3 决策树的泛化性能
  • 剪枝对决策树的泛化性能有显著影响。过多的分支会导致决策树过拟合,剪枝能够减少过拟合的风险,提高模型对新数据的泛化能力。
  • 实验表明,通过剪枝可以将决策树的泛化性能提高约25%,特别是在数据带有噪声时。
6.4 多变量决策树的研究
  • OC1Brodley and Utgoff 的一系列算法通过贪心搜索和线性分类器来改进多变量决策树的学习过程。
  • 其他算法则结合神经网络的思想,将感知机或神经网络嵌入到决策树的叶节点中,形成混合模型,从而提高学习能力。
6.5 增量学习
  • 决策树学习的另一个方向是 增量学习,即能够在接收到新的样本后对已有的决策树模型进行部分更新,而不是重新训练整个模型。
  • 代表性算法有 ID4ID5RITI,它们通过对分支路径的调整来进行局部更新,降低了每次接收新样本时的训练时间开销。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高并发下如何保证接口的幂等性?

前言 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。 不知道你有没有遇到过这些场景: 有时我们在填写某些form表单时,保存按钮不小心快速点了两次…

十二、【智能体】深入剖析:大模型节点的全面解读,举例说明,教你如何在扣子中嵌入代码

大模型节点 大模型节点主要分为5部分: 处理类型 单次批处理 模型类型:目前可以选择的模型有 豆包、通义千问、智谱、MinMax和Kimi输入:此时的参数可以被下面的提示词所用提示词:给大模型使用的提示词输出:经过此大模型处理后的输…

Vehicle Spy3.9如何新建工程—总览

1:写作目的 学习和精通SPY的使用,对于spy,目前主要是通用系用的比较多,本身spy的生产厂家英特佩斯也是美国的公司,除了软件自带教程。中文网上很少能找到相关的中文教程。 故写下这篇文章,帮助自己和大家…

Ubuntu(22.04)本地部署Appsmith

Ubuntu(22.04)安装Appsmith 简要介绍 Appsmith 是一个开源的低代码开发平台,旨在帮助开发者和非开发者快速构建定制化的内部应用程序和管理工具。通过直观的拖拽界面和丰富的预配置组件,Appsmith 让用户无需编写大量代码即可创建…

软件工程的学习之详细绪论

软件的定义 软件是程序和所有使程序正确运行所需要的相关文档和配置信息。 Software Program Data Document 一、软件危机: 软件开发和维护过程中遇到的一系列严重问题。 二、具体表现: 1、产品不符合用户的实际需要; 2、软件开发生产率…

Sigrity 共模电感的S-parameter仿真数据导入

下载S4P参数 https://ds.murata.co.jp/simsurfing/cmcc.html?partnumbers%5B%22DLW32MH101XT2%22%5D&oripartnumbers%5B%22DLW32MH101XT2L%22%5D&rgearjomoqke&rgearinfocom&md51729525489334# 下载S4P参数; DLW32MH101XT2.s4p Sigrity 使用-dif…

Mac电脑:资源库Library里找不到WebServer问题的解决

今天看到一本书里写到Windows电脑自带IIS Web服务器,好奇了一下下,mac电脑自带的又是什么服务器呢?经查询,原来是Apache服务器,这个名字我很熟悉。只是如何设置呢?我从来没用过,于是试验了一番。…

如何看待AI技术的应用前景?

人工智能:引领未来的变革力量 在当今快速变化的科技时代,人工智能(AI)作为一项前沿技术,已然成为推动全球各行各业变革的核心驱动力。随着人工智能技术的不断发展,其广泛的应用前景和深远的影响力&#xf…

Lua环境安装

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua是一种轻量级、小巧且易于嵌入应用程序的脚本语言,广泛用于游戏开发、Web开发、自动化脚本等领域。本文将详细介绍如何在不同操作系统上安装L…

深度学习 基本函数01

np.dot 是 NumPy 库中的一个函数,用于计算两个数组的点积(也称为内积或数量积)。点积是两个向量的对应元素乘积之和。 np.random.normal 是 NumPy 库中的一个函数,用于生成符合正态分布(也称为高斯分布)的…

vue3-高德地图天气小组件

效果图 使用方法 <weather-view type"rect-solid" :borderColor"[#7ACAEC, #068BBD]"></weather-view>天气图标文件夹 本来想全弄成svg动态图片的,但找了很久都没找到对应的图(只找到了几个),于是就暂时搁置了 组件全代码如下 注意getWeat…

缓存框架JetCache源码解析-缓存定时刷新

作为一个缓存框架&#xff0c;JetCache支持多级缓存&#xff0c;也就是本地缓存和远程缓存&#xff0c;但是不管是使用着两者中的哪一个或者两者都进行使用&#xff0c;缓存的实时性一直都是我们需要考虑的问题&#xff0c;通常我们为了尽可能地保证缓存的实时性&#xff0c;都…

酒吧收银系统解决方案——未来之窗行业应用跨平台架构

一、酒吧管理数字化 1. 提高效率&#xff1a;能够快速处理订单&#xff0c;减少顾客等待时间&#xff0c;提高服务效率&#xff0c;从而提升顾客满意度。 2. 精确计费&#xff1a;准确计算酒水、小吃等各类消费项目的费用&#xff0c;避免人工计算错误导致的经济损失。 3. 库存…

vue后台管理系统从0到1(5)

文章目录 vue后台管理系统从0到1&#xff08;5&#xff09;完善侧边栏修改bug渲染header导航栏 vue后台管理系统从0到1&#xff08;5&#xff09; 接上一期&#xff0c;我们需要完善我们的侧边狼 完善侧边栏 我们在 element 组件中可以看见&#xff0c;这一个侧边栏是符合我们…

windows下Qt的安装方法

Qt Creator是个人非常喜欢的一款开发工具&#xff0c;喜欢用其来开发C和CPC平台项目&#xff0c;当然也可以用其来开发Android和Auto平台项目&#xff0c;但其现在采用离线安装&#xff0c;限于网络问题&#xff0c;安装速度非常慢。 现在介绍一种可以完成快速的安装方法。 下…

群晖通过 Docker 安装 MySQL

1. 打开 Docker 应用&#xff0c;并在注册表搜索 MySQL 2. 下载 MySQL 镜像&#xff0c;并选择版本 3. 在 Docker 文件夹中创建 MySQL&#xff0c;并创建子文件夹 4. 设置权限 5. 选择 MySQL 映像运行&#xff0c;创建容器 6. 配置 MySQL 容器 6.1 使用高权限执行容器 6.2 启…

圆周率的估算

圆周率的估算有多种方案&#xff1a; 方案一&#xff1a;无穷级数4/1 - 4/3 4/5 - 4/7 ……的和是圆周率π&#xff0c;这一无穷级数前n项的和即可估算圆周率值。 方案二&#xff1a;利用求单位正方形与内接圆面积的比例关系来求的π的近似值。单位圆的1/4面积是一个扇形&am…

Java调用大模型 - Spring AI 初体验

Spring AI&#xff1a;为Java开发者提供高效的大模型应用框架 当前Java调用大模型时面临缺乏高效AI应用框架的问题。Spring作为资深的Java应用框架提供商&#xff0c;通过推出Spring AI来解决这一挑战。它借鉴了LangChain的核心理念&#xff0c;并结合了Java面向对象编程的优势…

Linux隐藏权限介绍

隐藏权限概览 在Linux系统中&#xff0c;有时即便是以root用户身份&#xff0c;你也可能遇到无法修改特定文件的情况。这种限制往往源自chattr命令的应用&#xff0c;该命令用于为文件或目录设置“隐藏权限”&#xff0c;即底层属性&#xff0c;以增强系统安全性。值得注意的是…