首页 > 其他分享 >机器学习——决策树

机器学习——决策树

时间:2023-02-03 10:12:51浏览次数:52  
标签:机器 增益 信息 学习 划分 数据 信息熵 决策树

决策树原理
决策树的一个重要任务是获取数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,在这些机器根据数据集创建规则时,就是机器学习的过程专家系统中经常使用决策树,而且决策树给出结果往往可以匹敌在当前领域具有几十年工作经验的人类专家。
在构造决策树时,我们需要解决的第一个问题就是,当前数据集上哪个特征在划分数据分类时起决定性作用。为了找到决定性的特征,划分出最好的结果,我们必须评估每个特征。完成测试之后,原始数据集就被划分为几个数据子集。这些数据子集会分布在第一个决策点的所有分支上。如果某个分支下的数据属于同一类型,则当前无需阅读的垃圾邮件已经正确地划分数据分类,无需进一步对数据集进行分割。如果数据子集内的数据不属于同一类型,则需要重复划分数据子集的过程。如何划分数据子集的算法和划分原始数据集的方法相同,直到所有具有相同类型的数据均在一个数据子集内

在划分数据集之前之后信息发生的变化称为信息增益,知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。分类算法除了需要测量信息熵,还需要划分数据集,度量划分数据集的熵,以便判断当前是否正确地划分了数据集。我们将对每个特征划分数据集的结果计算一次信息熵,然后判断按照哪个特征划分数据集是最好的划分方式。

遍历当前特征中的所有唯一属性值,对每个特征划分一次数据集 ,然后计算数据集的新熵值,并对所有唯一特征值得到的熵求和。信息增益是熵的减少或者是数据无序度的减少,比较所有特征中的信息增益,返回最好特征划分的索引值。

信息增益 = 信息熵-条件熵
最大熵原理:系统中事件发生的概率满足一切已知约束条件,不对任何未知信息做假设,也就是对于未知的,当作等概率处理。

由吉布斯不等式推导
条件熵 <= 信息熵
反证法:
已知条件熵H(Y)
假设以X作为分类变量,将Y分为2组, X1组中的信息熵H(x1) > H(Y);
因此X1组的复杂度高于Y,此时必定存在

香农辅助定理(吉布斯不等式)

通俗理解条件熵
通俗理解决策树算法中的信息增益
决策树(一)熵、条件熵、信息增益
图解最大熵原理
信息熵越大,信息量到底是越大还是越小?
熵的性质
吉布斯不等式

标签:机器,增益,信息,学习,划分,数据,信息熵,决策树
From: https://www.cnblogs.com/sanguoasd/p/17024890.html

相关文章

  • 机器学习——逻辑回归
    回归的含义——用观察使得认知接近真值的过程,回归本源。​在我们认知(测量)这个世界的时候,我们并不能得到这个世界的全部信息(真值),只能得到这个世界展现出的可被我们观测的部......
  • consul学习笔记
    consul默认的服务端口是8500consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Va......
  • Excel函数学习
    1.单条件求和=SUMIF(条件区域,求和条件,实际求和区域)2.多条件求和=SUMIFS(需要求和区域,条件区域1,求和条件1,条件区域2,求和条件2,......)3.单元格所在行位置=ROW(单......
  • nnUNet学习笔记(二):网络架构代码-1
    逐段解读文件:nnUNet/nnunet/network_architecture/neural_network.pyimportnumpyasnpfrombatchgenerators.augmentations.utilsimportpad_nd_imagefromnnunet.ut......
  • git命令的学习和基本使用
    初始化gitinit(your_project)配置--local只对当前仓库有效--global对当前用户所有仓库有效--system对系统登录的所有用户有效gitconfig--globaluser.name......
  • c++学习2 基础关键词
    三volatile强制访问内存在一个变量的频繁使用中,系统为了提高效率,会自动将内存里面的数据放入CPU里的寄存器里。但在某些特殊场景下,放入寄存器这个操作反倒会导致CPU无法......
  • 机器学习基本概念
    机器学习基本概念1.基本定义机器学习:是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。2.机器学习的工作流程1.获取数据2.数据......
  • C语言学习: 快速排序(递归方式)
    1#include<stdio.h>2#include"io_utils.h"3#include<stdlib.h>4#include<time.h>56#definePLAYER_COUNT5078voidSwapElements(intarray[......
  • 《RPC实战与核心原理》学习笔记Day16
    23|如何在没有接口的情况下进行RPC调用?我们什么情况下需要在没有接口时进行RPC调用?列举2个典型场景:我们搭建一个测试平台,允许各个业务方在测试凭条上通过输入接口、......
  • Objective-C语法学习 第四天
    关于NSObject和运行时系统类NSObjectOC作为一门动态编程语言,有很多动态的特性,OC不仅需要编译环境,还需要一个运行时系统(runtimesystem)来执行编译好的代码。运行时系统扮演的......