决策树和信息增益的理解

2023-11-05

决策树
   通俗来说,决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:
      女儿:多大年纪了?
      母亲:26。
      女儿:长的帅不帅?
      母亲:挺帅的。
      女儿:收入高不?
      母亲:不算很高,中等情况。
      女儿:是公务员不?
      母亲:是,在税务局上班呢。
      女儿:那好,我去见见。
      这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑(声明:此决策树纯属为了写文章而YY的产物,没有任何根据,也不代表任何女孩的择偶倾向,请各位女同胞莫质问我^_^):
      上图完整表达了这个女孩决定是否见一个约会对象的策略,其中绿色节点表示判断条件,橙色节点表示决策结果,箭头表示在一个判断条件在不同情况下的决策路径,图中红色箭头表示了上面例子中女孩的决策过程。
      这幅图基本可以算是一颗决策树,说它“基本可以算”是因为图中的判定条件没有量化,如收入高中低等等,还不能算是严格意义上的决策树,如果将所有条件量化,则就变成真正的决策树了。
      有了上面直观的认识,我们可以正式定义决策树了:
      决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

      可以看到,决策树的决策过程非常直观,容易被人理解。目前决策树已经成功运用于医学、制造产业、天文学、分支生物学以及商业等诸多领域。知道了决策树的定义以及其应用方法,下面介绍决策树的构造算法。

在决策树算法的学习过程中,信息增益是特征选择的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明该特征越重要,相应的信息增益也就越大。

概念

我们前面说了,信息熵是代表随机变量的复杂度(不确定度),条件熵代表在某一个条件下,随机变量的复杂度(不确定度)

而我们的信息增益恰好是:信息熵-条件熵。

换句话说,信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。

那么我们现在也很好理解了,在决策树算法中,我们的关键就是每次选择一个特征,特征有多个,那么到底按照什么标准来选择哪一个特征。

这个问题就可以用信息增益来度量。如果选择一个特征后,信息增益最大(信息不确定性减少的程度最大),那么我们就选取这个特征。

例子

我们有如下数据:

可以求得随机变量X(嫁与不嫁)的信息熵为:

嫁的个数为6个,占1/2,那么信息熵为-1/2log1/2-1/2log1/2 = -log1/2=0.301

现在假如我知道了一个男生的身高信息。

身高有三个可能的取值{矮,中,高}

矮包括{1,2,3,5,6,11,12},嫁的个数为1个,不嫁的个数为6个

中包括{8,9} ,嫁的个数为2个,不嫁的个数为0个

高包括{4,7,10},嫁的个数为3个,不嫁的个数为0个

先回忆一下条件熵的公式如下:

我们先求出公式对应的:

H(Y|X = 矮) = -1/7log1/7-6/7log6/7=0.178

H(Y|X=中) = -1log1-0 = 0

H(Y|X=高) = -1log1-0=0

p(X = 矮) = 7/12,p(X =中) = 2/12,p(X=高) = 3/12

则可以得出条件熵为:

7/12*0.178+2/12*0+3/12*0 = 0.103

那么我们知道信息熵与条件熵相减就是我们的信息增益,为

0.301-0.103=0.198

所以我们可以得出我们在知道了身高这个信息之后,信息增益是0.198

结论

我们可以知道,本来如果我对一个男生什么都不知道的话,作为他的女朋友决定是否嫁给他的不确定性有0.301这么大。

当我们知道男朋友的身高信息后,不确定度减少了0.198.也就是说,身高这个特征对于我们广大女生同学来说,决定嫁不嫁给自己的男朋友是很重要的。

至少我们知道了身高特征后,我们原来没有底的心里(0.301)已经明朗一半多了,减少0.198了(大于原来的一半了)。

那么这就类似于非诚勿扰节目里面的桥段了,请问女嘉宾,你只能知道男生的一个特征。请问你想知道哪个特征。

假如其它特征我也全算了,信息增益是身高这个特征最大那么我就可以说,孟非哥哥,我想知道男嘉宾的一个特征是身高特征。因为它在这些特征中,对于我挑夫君是最重要的,信息增益是最大的,知道了这个特征,嫁与不嫁的不确定度减少的是最多的。

建立决策树主要有三种算法

  1. ID3 :适应信息增益来进行特征选择的决策树学习过程
  2. C4.5:信息增益率
  3. CART:基尼指数

总结:一个属性的信息增益越大,表明属性对样本的熵减少的能力越强,这个属性使得数据由不确定性变成确定性的能力越强

投票机制

1. 一票否决

2. 少数服从多数

3. 贝叶斯投票机制:

基于每个基本分类器在过去的分类表现设定一个权值,然后按照这个权值进行投票


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

决策树和信息增益的理解 的相关文章

  • NoSQL数据库简介

    目录标题 1 NoSQL数据库概述 2 NoSQL特点 3 NoSQL适用场景 4 NoSQL不适用场景 5 常见的NoSQL四大分类 5 1 Key Value数据库 5 1 2 Memcache 5 1 2 Redis 5 2 文档型数
  • RTX3060 cuda11.3一条命令安装pytorch1.10.0

    检查GPU驱动版本 在命令行输入nvidia smi指令就能看到自己nvidia的驱动版本 NVIDIA官网 看下CUDA版本以及GPU驱动的对应关系 可以看到要使用CUDA11 3 那么需要将显卡的驱动更新至465 89以上 1 pyto
  • 微服务技术栈有哪些

    1 服务开发 Springboot Spring SpringMVC 2 服务配置与管理 Netflix公司的Archaius 阿里的Diamond等 3 服务注册与发现 Eureka Consul Zookeeper等 4 服务调用 Re
  • ATT-ACK靶场渗透(一)

    开启内网环境 kali攻击机ip为 192 168 88 156 主机发现 端口扫描 进行主机发现 nmap sS 192 168 88 156 24 Pn 192 168 88 1和192 168 88 2可能为网关之类的 不管 webl

随机推荐

  • [leetcode] 371. Sum of Two Integers 解题报告

    题目链接 https leetcode com problems sum of two integers Calculate the sum of two integers a and b but you are not allowed t
  • SyntaxError: Unexpected token T in JSON at position 0

    在写博客项目时 遇到了SyntaxError Unexpected token T in JSON at position 0错误 这个错误的起因是编译模板时出错 重新检查发现 在模板中对div进行循环时 把comments加上了引号 导致
  • 思科模拟器:通过一台三层交换机及两台二层交换机和6台电脑划分3个VLAN,并建立三个网关让电脑之间互通

    实验内容 通过一台三层交换机及两台二层交换机和6台电脑划分3个VLAN 并建立三个网关让电脑之间互通 实验工具 Cisco Packet Tracer 6 0 使用设备 电脑六台 电脑1 电脑2 电脑3 电脑4 电脑5 电脑6 2950 2
  • CNN算法实现手写数字识别(MNIST数据集)

    基本过程如下图所示 x 图片的特征值 这里使用了一个28 28 784列的数据来表示一个图片的构成 也就是说 每一个点都是这个图片的一个特征 这个其实比较好理解 因为每一个点都会对图片的样子和表达的含义有影响 只是影响的大小不同而已 W 特
  • 【.Net实用方法总结】 整理并总结System.Data中DataRow类及其方法介绍

    作者简介 博主是一位 Net开发者 同时也是RPA和低代码平台的践行者 个人主页 会敲键盘的肘子 系列专栏 Net实用方法总结 专栏简介 博主针对 Net开发和C站问答过程中遇到的问题进行总结 形成本专栏 希望可以帮助到您解决问题 座右铭
  • OpenGL学习 跟着官网教程学习(深度测试)

    1 深度测试是什么 在默认情况是将需要绘制的新像素的z值与深度缓冲区中对应位置的z值进行比较 如果比深度缓存中的值小 那么用新像素的颜色值更新帧缓存中对应像素的颜色值 2 深度测试开启 glEnable GL DEPTH TEST 3 什么
  • 如何将代码托管到Github上

    如何将代码托管到Github上 1 首先你得注册一个GitHub的账号 只有这样才能使用代码托管功能 官方网址 注册流程暂不阐述 https github com 2 点击 New 创建一个新的项目 3 填写项目相关信息 4 创建完成之后
  • 修改Anaconda镜像源

    修改Anaconda镜像源 这里采用阿里云的镜像源 因为最近清华的镜像源不稳定 1 找到 condarc文件 Linux MacOS用户可以通过修改用户目录下的 condarc 文件 一般路径为 condarc Windows 用户无法直接
  • 【类与对象】详述类(封装)

    目录 前言 类 成员变量 成员方法 方法重载Overload 可变参数 构造方法 对象的创建 this关键字 包 访问修饰符 番外 基本类型的封装 var局部变量 对象数组 前言 Java是一种面向对象语言 面向对象编程主要体现在封装性 继
  • java面向对象练习题

    1 定义一个Father和Child类 并进行测试 要求如下 1 Father类为外部类 类中定义一个私有的String类型的属性name name的值为 zhangjun 2 Child类为Father类的内部类 其中定义一个introF
  • QT部件基类——QWidget与QDialog

    一 默认基类 QT提供的默认部件基类包括QMainWindow QWidget 和QDialog这三种 这三个部件基类也是用的最多的 QWidget类是所有部件对象的基类 被称为基础窗口部件 继承关系详看QWidget类关系图 QWidge
  • 大于0的正整数正则表达式_常用的正则表达式,快来看看吧~

    这是我做项目经常需要用的正则表达式 整理了一下 经度 0 d 1 2 d 1 6 1 0 7 d 1 d 1 6 180 0 1 6 纬度 0 8 d 1 d 1 6 90 0 1 6 电话和手机号 d 3 4 d 7 8 1d 10 手机
  • Qt5.8.0安装教程

    系统 WIN7 32位和64位都有安装 下载地址 http download qt io archive qt 或者 http download qt io new archive qt 安装QT需要注册 注册需要使用邮箱 网页选中中文语言
  • 2021前端笔试题

    笔试重点 查漏补缺 JavaScript题1 https github com lydiahallie javascript questions blob master zh CN README zh CN md JavaScript题2
  • linux系统中更新包管理卡死解决

    文章目录 基于的发行版 问题 解决方案 链接ssh 处理包更新 更改包管理下载源 清理apt缓存 更新apt包 基于的发行版 Ubuntu 20 04 问题 安装完成之后 包管理没有更新 很多仓库都是旧的 此时有些包可能找不见 所以在使用之
  • 问题:ifconfig命令给网卡指定mac地址

    问题 服务器在进行重启操作后mac地址发生了改变 与业务绑定的mac地址不匹配导致业务无法启动 解决办法 1 ifconfig 先看下mac地址和网卡名称 2 ifconfig bond0 hw ether mac地址 解释 ifconfi
  • CTF_ctfshow_登录就有flag

    打开靶机是一个登录界面 试了一下普通的sql注入 1 or 1 1 不行 所以这里用 0 分号可以用于闭合 井号可以用于注释 进行异或运算 等号就是判等 这里需要利用sql的一个点 mysql弱类型转换 空异或0会查到所有非数字开头的记录
  • Transformers库学习-part1

    文章目录 C0 Setup C1 Transformers models Working with pipelines Zero shot classification How do Transformers work Transforme
  • python 学习笔记(三)---turtle库的使用(超详细)

    python 学习笔记 三 turtle库的使用 文章目录 python 学习笔记 三 turtle库的使用 1 turtle库的简介 2 turtle绘图窗体布局 3 turtle的空间坐标体系 绝对坐标和海龟坐标 4 turtle的角度
  • 决策树和信息增益的理解

    决策树 通俗来说 决策树分类的思想类似于找对象 现想象一个女孩的母亲要给这个女孩介绍男朋友 于是有了下面的对话 女儿 多大年纪了 母亲 26 女儿 长的帅不帅 母亲 挺帅的 女儿 收入高不 母亲 不算很高 中等情况 女儿 是公务员不 母亲