【机器学习】通俗易懂决策树(原理篇)

2023-11-09

决策树

引言

决策树是什么?怎样利用决策树来帮助我们分类?怎样构建自己的决策树?

决策树是一种类似流程图的结构,其中每个内部节点代表一个属性的“测试”(例如硬币翻转出现正面朝上或反面朝上),每个分支代表测试的结果,每个叶节点代表一个类标签(在计算所有属性后做出的决策)。从根到叶的路径代表分类规则。

以例说法

在这里插入图片描述

想象一下,您是一名医学研究人员,正在为一项研究编制数据。您已经收集了一组患有相同疾病的患者的数据。在治疗过程中,每位患者对两种药物中的一种都有反应。我们称它们为药物 A 和药物 B。您的部分工作是建立一个模型,以找出哪种药物可能适合未来患有相同疾病的患者。该数据集的特征集是我们患者组的年龄、性别、血压和胆固醇,目标是每个患者反应的药物。它是一个二元分类器的样本,您可以使用数据集的训练部分来构建决策树,然后使用它来预测未知患者的类别。从本质上讲,就是要决定给新病人开哪种药。

决策树的结构

在这里插入图片描述

决策树是通过将训练集拆分为不同的节点来构建的,其中一个节点包含所有或大部分数据类别。来看这个图,我们可以看到它是一个病人的分类器。所以如前所述,我们想给一个新病人开药,但选择药物 A 或 B 的决定会受到病人情况的影响。我们从年龄开始,可以是年轻、中年或老年。如果患者是中年,那我们肯定会选择B药。反之,如果他有年轻或老年患者,则需要更多细节来帮助我们确定开哪种药。额外的决策变量可以是胆固醇水平性别血压等。

在这里插入图片描述

例如,如果患者是女性,那么我们会推荐药物 A,但如果患者是男性,那么我们会推荐药物 B。如您所见,决策树是关于测试一个属性并根据结果对案例进行分支的测试。每个内部节点对应一个测试,每个分支对应一个测试结果,每个叶节点将一个患者分配到一个类。

如何构建决策树

现在的问题是,我们如何构建这样的决策树?这是构建决策树的方式。可以通过逐个考虑属性来构建决策树。

具体步骤如下:

  1. 从数据集里面选择一个特征
  2. 计算这个属性在拆分数据上的重要性(后面会讲如何计算)
  3. 用最好的属性来分割数据
  4. 返回步骤1

构建决策树

构建决策树的关键点,就是选择哪个属性作为分类节点,也可以说是如何计算每个属性在拆分数据上的重要性。

在这里插入图片描述

下面我来举几个例子,假设选择胆固醇作为分割数据的第一个属性,它将我们的数据分成了两份。

在这里插入图片描述

如上图所示,如果患者胆固醇含量高,我们不能很有把握地认为B药物适合他,同样的,如果含量正常,也不好说要用哪个药。也就是说,用胆固醇来分割数据,分了和没分差不了多少,故认为这不是一个好的特征。

下面我们换一个特征试试。

在这里插入图片描述

这次我们选择性别,如上图所示,如果患者性别为女,那么很大概率上就该用B药,如果是男性,则是A药。虽然说没有百分百的把握确定药物是否合适,但相比于胆固醇来说,性别这一属性任然是更好的选择,因为分类后的结果更纯净。也就是说性别属性比胆固醇更重要、更有预测性。

在这里插入图片描述

对于男性患者分支,我们再次测试其他属性来拆分子树。我们在这里再次测试胆固醇,您可以看到它会产生更纯净的叶子。所以我们可以在这里轻松地做出决定。例如,如果患者是男性,他的胆固醇高,我们当然可以开药A,但如果是正常的,我们可以很有把握地开药B。您可能会注意到,拆分数据的属性选择非常重要,这完全取决于拆分后叶子的纯度。如果在 100% 的情况下,节点属于目标字段的特定类别,则认为树中的节点是纯净节点。事实上,该方法使用递归分区通过最小化每一步的杂质将训练记录分割成段。节点的杂质是通过节点中数据的熵来计算的。

什么是熵?熵是衡量信息的无序程度,也可以说是混乱都的,如果熵越大则混乱都越大。

熵用于计算该节点中样本的同质性。如果样本完全同质(只有一种表现形式),则熵为零,如果样本均分,则熵为 1。这意味着如果节点中的所有数据都是药物 A 或药物 B,则熵为零,但如果数据的一半是药物 A,另一半是 B,则熵为 1。

在这里插入图片描述

我们来计算一下原始数据的熵

在这里插入图片描述

可以看到又9B 5A,代到熵的计算公式里面算就可以了。

这个公式和我之前上生物物理课的时候计算信息熵的公式一模一样。

然后再算算用胆固醇分割数据后的熵

在这里插入图片描述

同样,算算性别分割数据后的熵

在这里插入图片描述

哪一个特征更好呢?

现在,问题是在胆固醇和性别属性之间,哪一个是更好的选择?将数据集分为两个分支的第一个属性哪个更好?或者换句话说,哪个属性会为我们的药物带来更纯的节点?或者,在哪棵树中,我们在分裂之后而不是分裂之前的熵更少?其分支中熵为 0.98 和 0.59 的性别属性或熵为 0.81 和 1.0 的胆固醇属性。答案是分裂后信息增益更高的树。

在这里插入图片描述

什么是信息增益

信息增益就是一个衡量分裂后熵有没有减少的一个指标。

我们知道熵越大不确定性越大,所以我们希望熵要逐渐减小,所以 信息增益 = 熵 分裂前 − 熵 分裂后加权 信息增益=熵_{分裂前}-熵_{分裂后加权} 信息增益=分裂前分裂后加权

由此可见,如果熵减小,则信息增益越大,我们要选择信息增益大的特征作为分类节点。

在这里插入图片描述

由上图可见,sexcholesterol的信息增益要大,所以我们就选择sex

结语

决策树的原理大概了解的差不多了,后面就是要对其进行代码实现。大家可以看这篇文章【机器学习】通俗易懂决策树(实战篇)python实现(为新患者找到合适的药物)

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

【机器学习】通俗易懂决策树(原理篇) 的相关文章

随机推荐

  • 关于mfc中的调出来控制台使用

    解决方案资源管理器 gt 工程项目右键 属性 gt 配置属性 gt 生成事件 gt 生成后事件 gt 命令行 gt 添入 editbin SUBSYSTEM CONSOLE OUTDIR ProjectName exe 就可以调出来控制台使
  • Unity 3D 三维模型简介||

    Unity 3D 三维模型简介 三维模型是用三维建模软件建造的立体模型 也是构成 Unity 3D 场景的基础元素 Unity 3D 几乎支持所有主流格式的三维模型 如 FBX 文件和 OBJ 文件等 开发者可以将三维建模软件导出的模型文件
  • dstat裸机LInux安装

    因为dstat是采用python写的 所以机器上需要有python2 7版本 并且需要six包 所以下载三个上述的包到Linux 1 dstat 0 7 4 orig tar gz 2 six 1 16 0 tar gz 3 Python
  • dell笔记本怎么开启虚拟化_笔记本电脑玩游戏卡顿怎么办?开启“卓越性能”模式告别卡顿...

    Windows 10更新到1803之后 一些朋友可能发现 以往电源管理模式有标准 节能和高性能 现在只剩下一个标准了 当然我们也可以通过一些简单操作将这些电源模式找回来 比如通过Windows移动中心 但微软的用意可能是不需要用户进行手动干
  • md文档自动上传图片

    Typora设置图片自动上传图床教程 终于可以快乐的写markdown文档啦 先上效果 1 准备 注意软件不要随便无脑装 找一个固定装软件的目录 方便管理 安装 Typora 一个贼好用的md文件编写软件 传送门 安装 Picgo 图片上传
  • CNN的可视化

    前言 前文中已经实现了SimpleConvNet类 本文将通过把卷积层可视化 去了解在CNN层中到底实现了怎样的处理 第一层权重的可视化 例如 假设第1层的卷积层的权重的形状是 30 1 5 5 即30个大小为5 5 通道为1的滤波器 滤波
  • llvm 常见命令

    llvm作为一套成熟的编译体系 提供了很多命令用于不同阶段的使用 通过这些命令的组合使用 可以将一个完整的编译过程 拆分成多个步骤 llvm as 将IR文件编译为二进制文件 默认生成后缀名为 bc的文件 也可以使用 o指定输出 llvm
  • react+ts+antd创建项目流程

    基于nodejs和vite的安装 ant design官网地址 组件总览 Ant Design gitee io 操作流程 用vite创建项目 npm init vite latest 安装依赖 npm i 安装路由 npm i react
  • MD5加密算法解析

    背景 网上看了几篇关于MD5加密算法的文章 有些地方不太明白 就去看了维基百科上的英文介绍 逻辑很清晰 所以整理出来 1 简介 MD5即Message Digest Algorithm 5 在90年代初由MIT的计算机科学实验室和RSA D
  • C#软件开发实例.私人订制自己的屏幕截图工具(五)针对拖拽时闪烁卡顿现象的优化

    本实例全部文章目录 一 功能概览 二 创建项目 注册热键 显示截图主窗口 三 托盘图标及菜单的实现 四 基本截图功能实现 五 针对拖拽时闪烁卡顿现象的优化 六 添加配置管理功能 七 添加放大镜的功能 八 添加键盘操作截图的功能 九 使用自定
  • Centos7加入AD域并通过域账号登录

    环境 windows server 2012系统安装AD域服务 安装完毕创建用户 安装过程百度搜索 创建用户 打开服务器管理器 AD DS 右击服务器选择 AD用户和计算机 创建组织单位 选择你安装的域名服务 空白处右击 新建 组织单位 选
  • 【大数据实验1】note1:安装CentOS 7.7(桥接模式)

    note1 安装CentOS 7 7 桥接模式 1 安装VMware Workstation Pro 2 安装CentOS7 7 3 安装VMwareTools 4 注意点 为了实验做准备 冲鸭 实验具体操作步骤 cloudstack安装部
  • python自动化笔记(十)——openpyxl模块,操作excel管理测试数据

    这里利用第三方库openpyxl来操作excel管理测试数据 注意 此模块只支持xlsx读写操作 旧版的xls不支持 安装第三方库 pip install openpyxl 平常操作excel的流程 3个对象 工作簿 Workbook 表单
  • Gym - 102263 B - Road to Arabella

    原题内容 Ayoub and Kilani felt board while they are going to ArabellaCPC in Amman Irbid road so Kilani invented a new game t
  • 基于STM8的TIM定时器操作---STM8-第三章

    1 综述 STM8S提供三种类型的 TIM 定时器 高级控制型 TIM1 通用型 TIM2 TIM3 TIM5 和基本型定时器 TIM4 TIM6 它们虽有不同功能但都基于共同的架构 此共同的架构使得采用各个定时器设计应用变得非常容易与方便
  • 三目运算符

    三目运算符 又称条件运算符 是计算机语言 c c java等 的重要组成部分 它是唯一有3个操作数的运算符 所以有时又称为三元运算符 一般来说 三目运算符的结合性是右结合的 定义 对于条件表达式b x y 先计算条件b 然后进行判断 如果b
  • yolov5训练报错: a view of a leaf Variable that requires grad is being used in an in-place operation

    梯度信息丢失错误 报错详情 报错原因 解决方法 报错详情 RuntimeError a view of a leaf Variable that requires grad is being used in an in place oper
  • python简单爬虫实例,爬取CSDN文章

    查看要爬的网页的源代码 准备爬取所有文章和链接 代码 import requests from bs4 import BeautifulSoup url https blog csdn net LI AINY headers User Ag
  • 基于Spark的分布式数据处理和机器学习技术【上进小菜猪大数据】

    上进小菜猪 沈工大软件工程专业 爱好敲代码 持续输出干货 大数据已经成为当今社会中一个重要的资源和挑战 随着数据规模的不断增长 如何高效地处理和分析这些数据成为了一个关键问题 本文将介绍基于Apache Spark的分布式数据处理和机器学习
  • 【机器学习】通俗易懂决策树(原理篇)

    决策树 引言 决策树是什么 怎样利用决策树来帮助我们分类 怎样构建自己的决策树 决策树是一种类似流程图的结构 其中每个内部节点代表一个属性的 测试 例如硬币翻转出现正面朝上或反面朝上 每个分支代表测试的结果 每个叶节点代表一个类标签 在计算