【机器学习】13. 决策树

news/2024/10/26 12:13:54/

决策树的构造

策略:从上往下学习通过recursive divide-and-conquer process(递归分治过程)

  1. 首先选择最好的变量作为根节点,给每一个可能的变量值创造分支。
  2. 然后将样本放进子集之中,从每个分支的节点拓展一个。
  3. 最后:对每个分支进行递归重复,只使用到达该分支的样本
  4. 停止递归:如果所有的样本都有着相同的类别,为这个类创建一个叶节点

信息增益(基于熵)

熵衡量的是这个集合相对于类的纯度。

熵越小,数据集的纯度就越大

熵也用于信号压缩,信息论和物理学。

定义

Entropy H(S)
H ( S ) = I ( S ) = − ∑ i P i ∗ l o g 2 P i H(S) = I(S) = -\sum_iP_i*log_2P_i H(S)=I(S)=iPilog2Pi
P i P_i Pi 代表属于类别i的样本比例

举例

假设现在有 2 个类别, yes 和 no, 这个集合中有9个yes,5个no 交叉熵的计算如下
H ( S ) = − 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.94 b i t s H(S) = -\frac{9}{14}log_2\frac{9}{14} - \frac{5}{14}log_2 \frac{5}{14} = 0.94 bits H(S)=149log2149145log2145=0.94bits

  • 熵是用比特来测量的

  • 在计算熵的时候,我们会假设 l o g 2 0 = 0 log_20 =0 log20=0

  • H(S) 的范围是[0,1]

    • 当H(S) = 0 的时候,S的所有元素都属于相同的类,即这个集合是纯净的,拥有最小的Entropy(熵)
    • 当H(S) = 1 的时候,有相同数量的yes和no(假设是两类),即最小的纯净度,最大的Entropy.

信息增益

  • 信息增益度量使用属性划分训练示例集所导致的熵减少。
  • 它是两个熵的差:增益= T1-T2
  • T1为分裂前与父节点相关联的样本集合S的熵
  • T2是S中剩余的熵,在S被属性分割后
  • 差值越大,信息增益越高
  • 最好的属性是信息增益最高的属性
    • 它减少了父节点的熵

案例

选择outlook作为根节点,以此分出3个子集, 各自有5,4,5个样本。
T 1 = H ( S ) = I ( 9 14 , 5 14 ) T1 = H(S) = I(\frac{9}{14},\frac{5}{14}) T1=H(S)=I(149,145)
T 2 = H ( S ∣ o u t l o o k ) = 5 14 H ( S 1 ) + 4 14 H ( S 2 ) + 5 14 H ( S 3 ) T2 = H(S|outlook) = \frac{5}{14}H(S_1)+\frac{4}{14}H(S_2)+\frac{5}{14}H(S_3) T2=H(Soutlook)=145H(S1)+144H(S2)+145H(S3)

修剪决策树

  • 如果我们生长决策树来完美地分类训练集,树可能会变得过于具体,并过度拟合数据。
  • 过拟合-训练daddata的精度高,但新数据的精度低
  • 树变得太具体了,主要是记忆数据,而不是提取模式
  • 决策树中什么时候会发生过拟合?
    • 训练数据太小->没有足够的代表性示例来构建一个可以在新数据上很好地泛化的模型
    • 训练数据中的噪音,例如标签错误的例子
  • 使用树修剪来避免过拟合

两个主要策略

  • pre-pruning
    • 在它达到完美分类训练数据的点之前,尽早停止生长树
  • post-pruning
    • 让树完全生长,让它完美地覆盖训练数据,然后修剪它
  • 在实践中优先考虑后修剪
  • 不同的后剪枝方法:
    • 子树替换
    • 子树的提升
    • 将树转换为规则,然后修剪它们
  • 修剪多少?使用验证集来决定

通过子树替换的修剪思想

自下而上-从树的底部到根部

  • 每个非叶节点都是修剪的候选节点,对于每个节点:
  • 移除根在它上面的子树
  • 用class=majority类的例子替换它候选节点
  • 比较新树和旧树通过计算两者的验证集的精度
  • 如果新树的精度更好或与旧树的精度相同,保持新树(即修剪候选节点)

总结

  • 非常流行的ML技术
  • 自上而下的学习使用递归的分治过程
  • 易于实现
  • 可解释的
  • 制作的树很容易被非专家和客户可视化和理解
  • 可解释性增加了在实践中使用机器学习模型的信任
  • 使用修剪来防止过拟合
  • 选择最佳属性-信息增益、增益比等

http://www.ppmy.cn/news/1542110.html

相关文章

Nginx、Tomcat等项目部署问题及解决方案详解

目录 前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的常见原因 2. 端口开启问题2.1 Windows环境下的端口开放2.2 Linux环境下的端口开放 3. 重视日志分析3.1 Nginx日志分析3.2 Tomcat日志分析 4. 开发环境与部署后运行结果不同4.1 开发环境与生产…

一、Hadoop:大数据处理之基石

Hadoop:大数据处理之基石 于当今数字化时代,数据呈爆炸式增长态势,如何高效地进行海量数据的存储与处理,已然成为企业及科研机构所面临的关键挑战。Hadoop作为一款开源的分布式系统基础架构,在大数据领域发挥着举足轻…

图为大模型一体机新探索,赋能智能家居行业

在21世纪的今天,科技的飞速进步正以前所未有的速度重塑着我们的生活方式。从智能手机到物联网,从大数据到人工智能,每一项技术创新都在为人类带来前所未有的便利与效率。其中,图为AI大模型一体机作为人工智能领域的最新成果&#…

如何预防数据打架?数据仓库如何保持指标数据一致性开发指南(持续更新)

大数据开发人员最经常遇到尴尬和麻烦的事是,指标开发好了,以为万事大吉了。被业务和运营发现这个指标在不同地方数据打架,显示不同的数值。为了保证指标数据一致性,要从整个开发流程做好。 目录 一、数据仓库架构规划 二、数据抽取与转换 三、数据存储管理 四、指标管…

基于flask和neo4j的医疗知识图谱展示问答系统

如果你仍在为毕业设计的选题发愁,或者想通过技术项目提升专业实力,这个基于Flask和Neo4j的医疗知识图谱展示与问答系统,绝对是个不错的选择! 项目亮点大揭秘: 知识图谱与问答结合:我们采用了医疗场景下的知…

zabbix 6.0 监控clickhouse(单机)

zabbix 6.0 LTS已经包含了clickhouse的监控模板,所以我们可以直接使用自带的模板来监控clickhouse了。 0.前置条件 clickhouse 已经安装,我安装的是24.3.5.47zabbix-agent 已经安装并配置。系统是ubuntu 2204 server 1. 新建监控用户 使用xml的方式为…

【HarmonyOS NEXT】每次升级二方库或三方库,工程都会报错

【问题描述】 当项目里使用了模块静态共享包的形式开发,打包成har集成。 可能会出现几个模块依赖了相同模块的问题,而依赖的版本却不一样,例如: A模块依赖B、C、D B模块依赖C、E C同时被A、B依赖 在开发阶段,当C版本升…

自然语言处理:第五十五章 RAG应用 FastGPT 快速部署

代码: labring/FastGPT: FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop …