【西瓜书】决策树

server/2024/12/2 21:24:00/

决策树

  • 决策树(decision tree)是一种常见的机器学习方法,也叫“判定树”。

    • 根据上下文,决策树有时候是指学习方法,有时候是指学得的树。

  • 决策树是根据树形结构来进行决策的,这与人类在面临决策问题时的处理机制非常一致。在进行决策时,通常会进行一系列的判断或者决策,最后得出最终决策。

  • 决策过程的最终结论,就是期望的判定结果。

  • 决策过程中提出的每个判定问题,都是对某个属性的测试。

  • 每个测试的结果,或是导出最终结论,或是导出进一步的判定问题。其考虑范围是在上次决策结果的限定范围之内。

  • 一般来说,一颗决策树包含一个根节点,若干个内部节点和若干个叶节点。

    • 叶节点对应于决策结果。

    • 其他每个节点则对应于一个属性测试。

    • 每个节点包含的样本集合根据属性测试的结果被划分到子节点中。

    • 根节点包含样本全集。

    • 从根节点到每个叶节点的路径对应一个判定测试序列。

  • 决策树学习的目的是为了产生一棵泛化能力强——处理未见适应能力强的决策树

  • 决策树的基本流程遵循简单且直观的“分而制之”(divide and conquer)策略。

  • 决策树的生成是一个递归过程。有三种情况会导致递归返回:

    1. 当前节点包含的样本全是同一类别,无需划分。

    2. 当前属性集为空,或者所有样本在所有属性上取值相同,无法划分。

    3. 当前节点包含的样本集合为空,不能划分。

    4. 注意:第2种、第3种情况,都把当前节点标记为叶节点。

    5. 第2种情况,将当前节点的类别设定为该节点所含样本最多的类别。利用当前节点的后验分布。

    6. 第3种情况,将当前节点的类别设定为其父节点所含样本最多的类别。把父节点的样本分布作为当前节点的先验分布。

  • 决策树的关键是如何选择最优划分属性,这就是划分选择。

  • 一般而言,随着划分过程不断进行,希望决策树的分支节点所包含的样本尽可能属于同一类别,即为节点的“纯度”(purity)越来越高。

划分选择

ID3与信息增益

  • “信息熵”(Information entropy)是度量样本集合纯度最常用的指标。

  • 假设当前样本集合D中第k类样本所占的比例为pk,则D的信息商定义为Ent(D) = -\sum_{k=1}^{|y|}p_klog_2p_k Ent(D)的值越小,则D的纯度越高。其中p_k表示集合D中第k类样本所占的比例。

  • 一般而言,“信息增益”(information gain)越大,则意味着使用属性a来进行划分所获得的纯度提升越大。因此可以用信息增益来进行决策树的划分属性选择。信息增益的定义如下:Gain(D,a) = Ent(D)-\sum_{v=1}^V\frac{|D^{v}|}{D}Ent(D^{v})

  • 其中,D^v表示第v个分支节点包含了D中所有在属性a上取值为a^v的样本。

  • 著名的 ID3 决策树学习算法是以信息增益为准则来划分属性。 ID3 中的 ID 是 Iterative Dichotomiser(迭代二分器)的简称。

  • 信息增益对可取值数目较多的属性有所偏好。

C4.5与增益率

  • 为减少这种信息增益的偏好可能带来的不利影响,著名的 C4.5 决策树算法不直接使用信息增益而使用“增益率”(gain ratio)来选择最优划分属性。定义如下:Gain_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} 

  • 其中IV(a) = -\sum\limits_{v=1}^V\frac{D^v}{D}log_2\frac{D^v}{D},称为属性a的“固有值”(intrinsic value)。

  • 增益率准则对可取值数目较少的属性有所偏好。

  • C4.5 算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

CART与基尼指数

  • CART(Classification and regression tree) 决策树使用“基尼指数”(Gini index)来选择划分属性。 CART是一种著名的决策树学习算法,分类和回归任务都可用。

  • 基尼值得定义如下:Gini(D)=1-\sum\limits_{k=1}^{|y|}{p_k}^2

  • 基尼指数的定义如下:Gini\_index(D,a)=\sum\limits_{v=1}^V\frac{D^v}{D}Gini(D^v)

  • 观来说,Gini(D) 反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此 Gini(D) 越小,则数据集D的纯度越高。

  • 选择使得划分后基尼指数最小的属性作为最优划分属性。


http://www.ppmy.cn/server/146841.html

相关文章

matlab2024a安装

1.开始安装 2.点击安装 3.选择安装密钥 4.接受条款 5.安装密钥 21471-07182-41807-00726-32378-34241-61866-60308-44209-03650-51035-48216-24734-36781-57695-35731-64525-44540-57877-31100-06573-50736-60034-42697-39512-63953 6 7.选择许可证文件 8.找许可证文件 9.选…

springboot340“共享书角”图书借还管理系统(论文+源码)_kaic

摘 要 随着社会的发展,图书借还的管理形势越来越严峻。越来越多的借阅者利用互联网获得信息,但图书借还信息量大。为了方便借阅者更好的获得本图书借还信息,因此,设计一种安全高效的“共享书角”图书借还管理系统极为重要。 为…

v-for产生 You may have an infinite update loop in a component render function

参考文章&#xff1a; 报错解析 [Vue warn]: You may have an infinite update loop in a component render function. 另外一个解决方法 例如: MyList 是一个数组&#xff0c;我希望将排序后的结果返回进行for循环&#xff0c;因此设计了一个myMethon函数 <div v-for"…

Linux系统硬件老化测试脚本:自动化负载与监控

简介&#xff1a; 这篇文章介绍了一款用于Linux系统的自动化硬件老化测试脚本。该脚本能够通过对CPU、内存、硬盘和GPU进行高强度负载测试&#xff0c;持续运行设定的时长&#xff08;如1小时&#xff09;&#xff0c;以模拟长时间高负荷运行的环境&#xff0c;从而验证硬件的稳…

[Linux] 进程间通信——匿名管道命名管道

标题&#xff1a;[Linux] 进程间通信——匿名管道&&命名管道 水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 一、进程间通信 二、进程间通信的方案——匿名管道 &#xff08;1&#xff09;匿名管道的原理 &#xff08;2&#xff09;使用匿名管道 三、进…

Qt中QSpinBox valueChanged 信号触发两次

Qt中QSpinBox valueChanged 信号触发两次 如果使用鼠标调整&#xff0c;这个信号则会被触发两次如果使用键盘输入&#xff0c;则会触发一次 connect(ui->spinBox_rows, SIGNAL(valueChanged(int)), this, SLOT(test()));https://blog.csdn.net/dododododoooo/article/deta…

【大数据学习 | Spark】Spark on hive与 hive on Spark的区别

1. Spark on hive Spark on hive指的是使用Hive的元数据&#xff08;Metastore&#xff09;和SQL解析器(HiveQL)。这种方式下&#xff0c;spark可以读取和写入hive表&#xff0c;利用hive的元数据信息来进行表结构的定义和管理。 具体特点为&#xff1a; 1.1 元数据共享 sp…

droppath

DropPath 是一种用于正则化深度学习模型的技术&#xff0c;它在训练过程中随机丢弃路径&#xff08;或者说随机让某些部分的输出变为零&#xff09;&#xff0c;从而增强模型的鲁棒性和泛化能力。 代码解释&#xff1a; import torch import torch.nn as nn # 定义 DropPath…