六、决策树

news/2024/11/16 18:30:25/文章来源:https://www.cnblogs.com/pgl6/p/18351028
  • 决策1:如何选择在每个节点上分割什么特征?

最大限度地提高纯度(或最小限度地减少不纯)。

  • 决策2:什么时候停止拆分?
  1. 当一个节点是一个单一类时
  2. 当拆分一个节点会导致树超过最大的深度
  3. 当纯度分数的改进低于一个阈值(获得的信息增益很小小于阈值)
  4. 当一个节点中的例子数量低于一个阈值

6.1 衡量纯度、熵entropy、Gini指数

  • 熵(Entropy)通常用于衡量样本集合的不确定性和纯度,也可以理解为样本集合中随机选取一个样本,其所包含的信息量,混乱程度

  1. 可以发现,当正例和反例比例相等时,即p+ = p = 0.5 时,此时的熵取最大值1,表明此时样本集合最不确定,样本集合越不纯,熵值越大;而当样本集合中只包含一类样本(即纯样本集合)时,熵值为0,表明此时样本集合已经完全确定,很纯。
  2. 在决策树算法中,熵常常被用来选择最优划分点,即在样本的某个特征上根据熵的变化选取最优的划分点,使得划分后的样本子集中的熵最小。
  • Gini指数

Gini指数是一种用于衡量数据集纯度的指标,通常用于决策树算法中。在分类问题中,假设有K个类别,数据集D中第k类样本所占的比例为pk ,则Gini指数的计算公式如下:

Gini指数衡量的是从数据集D中随机选取两个样本,其类别不一致的概率,因此Gini指数越小,数据集的纯度越高,分类效果越好。与熵类似,Gini指数也是在0到1之间取值,取值越小表示数据集的纯度越高。

       在决策树算法中,选择划分特征时,通常会计算每个特征的Gini指数或信息增益,以选取最佳的划分特征。

6.2 信息增益

  • p1表示样本集合中正例也即猫的比例,wleft指的是占样本的权重,p1 left 代表左枝正例的比例

       在决策树算法中,我们希望通过选择最优特征来划分数据集,从而使划分后的数据集更加纯净,即熵减少。而这个熵减少的量就被称为信息增益

       信息增益是一种用于衡量一个特征对分类任务的贡献程度的指标,通常用于决策树算法中。在决策树算法中,我们需要在每个节点上选择一个特征,使得选定特征后能够最大程度地提高数据的纯度(即分类的准确性)。信息增益的计算方法是:首先计算数据集的熵,然后计算选定特征后的条件熵,两者相减即为该特征的信息增益。信息增益越大,代表该特征对分类任务的贡献越大

6.3 独热编码One-hot

前面的例子,每个特征只能取两个不同的值,如胡子有、无
,耳朵的尖、椭圆,对于有两个以上的离散值的特征,使用one hot编码

  • 独热编码会将分类特征转换为多维二进制向量,一般适用于当分类特征(较少时)没有自然顺序时,如颜色、城市名称等。
  • 不仅仅适用于决策树,可以对分类特征进行编码,以便作为输入送入神经网络

6.4 当存在连续值特征时

  •        将特征划分,考虑不同的值,计算分隔后的信息增益,选择一个最好的,能获得最好信息增益的那个阈值!一般是对所有的样本排序,根据体重大小排序,取中点值,作为这个阈值的候选值

6.5 回归树 regression tree

泛化到回归问题,预测一个数字,而不是分类问题

  • eg:

  • 重新选择划分的标准,重新生成

       在划分时,不再计算信息增益和纯度,计算减少数据的方差,类似信息增益,我们测量的是方差的减小,选择方差减少最大的那个特征分类标准

6.6 树集合 Tree ensemble

       单个决策树受到数据变化的影响很大,导致不同的划分,形成可能不同的树,让算法的鲁棒性变低;
       使用树集合,让每一颗树投票。

  • 每棵树单独对样本进行预测,然后通过投票机制得出最终的预测结果。
  • 最终,两个“Cat”对一个“Not cat”,通过投票机制,最终的分类结果是“Cat”。

6.6.1 有放回抽样 sampling with replace(构造多个随机的训练集)

构建树集合的方式如下:构建多个随机的训练集,都与我们最初的训练集略有不同

6.6.2 随机森林算法

  • 图中提到,当算法在决策树的每个节点选择用于分裂的特征时,是n个特征中随机选择一个子集,这个子集的大小为k,且 k < n。从这k个特征中选收获最大信息增益的特征作为分割特征
  • 图中给出了一个常见的建议,即子集大小 k的默认值通常设置为特征总数 n 的平方根。

6.6.3 XGBoost

  • 理解boost的思想

此时我们关注的是还没做好的地方,在构建下一个决策树时,把更多的注意力放在做得不好的例子上,不是以相等的(1/m)概率从所有的例子中选取,而是更有可能选取以前训练的树所错误分类的例子

    • 展示了在提升树方法中如何通过有放回抽样(sampling with replacement)来逐步改进模型的过程。
    • 在提升树中,不同于随机森林算法中的平等抽样概率,这里会根据样本的难度(即前一轮中被错误分类的样本)来调整抽样概率。
  • XGBoost extreme gradient boosting 极端梯度提升
    • XGBoost的训练过程是一个逐步迭代的过程。它通过不断训练多棵决策树,并使用梯度下降来对每棵树的权重进行优化,以最小化损失函数
    • XGBoost是一种基于梯度提升的强大算法,可以轻松地将XGBoost应用于分类和回归任务中,从而构建高性能的机器学习模型。

6.7 何时使用决策树、神经网络

  • 决策树
  1. 决策树可以很好处理表格数据(结构化数据)
  2. 训练很快
  3. 适合小数据集
  4. 小型的决策树具有可解释性
  • 神经网络
  1. 适用于所有类型的数据,表格和非结构化数据
  2. 可能比较慢
  3. 可以迁移学习、预训练
  4. 用于复杂的、高维的数据和任务

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

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

相关文章

性能测试面试题大曝光,让你如何迅速拿下 offer!

性能测试面试题精选1、 以前做过性能测试么?请结合例子具体说明性能测试的流程 面试考察点:性能测试的流程首选做性能测试的需求分析,明确性能测试的目标、范围、场景和性能指标(如响应时间、吞吐量、并发用户数等)。测试性能测试环境搭建:搭建与生产环境尽可能一致的测试…

[Java并发]ThreadLocal补充

ThreadLocal缺点及解决方案 每个Thread上都有一个threadLocals属性,它是一个ThreadLocalMap,里面存放着一个Entry数组,key是ThreadLocal类型的弱引用,value是对用的值。所有的操作都是基于这个ThreadLocalMap操作的。 但是它有一个局限性,就是不能在父子线程之间传递。 即…

NuminaMath 是如何荣膺首届 AIMO 进步奖的?

今年,Numina 和 Hugging Face 合作角逐 AI 数学奥林匹克 (AI Math Olympiad,AIMO) 的首届进步奖。此次比赛旨在对开放 LLM 进行微调,以使其能解决高中难度的国际数学奥林匹克训练题。我们很高兴向大家报告: 我们的模型 - NuminaMath 7B TIR - 在比赛中脱颖而出,成功解决了私…

【题解】ABC365(A~E)

前四题30min切,然后T5死磕70min+几发小唐错,距离比赛结束还有16s交最后一发,AC了。 目录A. Leap Year题目描述思路代码B. Second Best题目描述思路代码C. Transportation Expenses题目描述思路代码D. AtCoder Janken 3题目描述思路代码E. Xor Sigma Problem题目描述思路代码…

洛谷 P3870 开关之线段树板子

洛谷P3870题解传送锚点摸鱼环节 [TJOI2009] 开关 题目描述 现有 \(n\) 盏灯排成一排,从左到右依次编号为:\(1\),\(2\),……,\(n\)。然后依次执行 \(m\) 项操作。 操作分为两种:指定一个区间 \([a,b]\),然后改变编号在这个区间内的灯的状态(把开着的灯关上,关着的灯打开…

OI学习笔记(C++)

一些蒟蒻整理的OI笔记笔记完整版链接(洛谷)——暂无,正在维护 笔记完整版链接(博客) 参照 oi.wiki 整理的一些笔记: 学习笔记+模板(Adorable_hly) (自己结合网络和做题经验总结的,dalao勿喷) 第一大板块:DP 动态规划适用场景: 1. 最优化原理:若该问题所包含的子问…

静电场 恒定电流场 知识梳理

最近琢磨了一下Markdown插入LaTeX数学公式,感觉效果确实很不错🧐刚好最近比较闲,正想把新概念物理电磁学仔细看一遍,那就拿它来练手好了。下面主要把自己不太熟悉的知识详细解释了一下,比较简单的就一笔带过了。前言 最近琢磨了一下Markdown插入LaTeX数学公式,感觉效果确…

MR开发恐龙项目总结

在拥有权限的情况下读取安卓和windows的任意文件路径 TArray<FString> ULoadGallery::GetPngFilesInOculusDirectory() {TArray<FString> FilesArray;IFileManager& FileManager = IFileManager::Get();FString DirectoryPath;#if PLATFORM_ANDROIDDirectoryPa…

(自用) 化学假期作业8讲评

T16 (1)根据图可知,起始相对能量高于末态相对能量,说明反应放热,$\Delta\ H_1>0 $ 根据决速步骤定义,决速步骤是反应机制中具有最高活化能的反应步骤,所以由图可知,决速步骤为 $$\ H_2COO^* \ +\ 2H_2 \ = \ H_2 \ + \frac{3}{2} \ H_2$$ 相对应活化能即为\(\ H_2COO^* \ + …

代码随想录Day10

232.用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() …

瞎猫碰到死耗子,安卓nt_qq数据库密钥算法

这个我实际上弄了很久了,一开始更新的时候,发现数据库操作都是在so里,那时候是在libkernel.so里直接hook sqlcipher的密钥函数拿到的密钥,32位字符串,很容易让人联想到md5,但是没有找到在哪里计算的最近又想着做一下,这时打开数据库的so就变了,这是easyFrida的sofileop…