id3算法流程图_决策树之ID3算法

898fb5c31a07fc6d592aaeda2be51a9f.png

初识决策树

假设我们现在有这样一个数据集,记录了每次打篮球的时候,当天的天气、温度、湿度、刮风等情况

dbe11a631098f61202448645140e3058.png

然后根据历史的数据集,我们用决策树算法生成了如下的图形:

1557149c7b80c1c9f687f36930d738c6.png

这幅图相信大家很容易看懂,就是当天气是晴天的时候,打篮球;小雨的时候,不打篮球;如果是阴天,那就再看一下温度,温度低的话不打篮球,温度中的话打篮球。

如果用if else来描述这幅图就是

9d4dccac0c29ee3a7f4c6d439cae9e57.png

很多人写过类似if else的判断语句。但是你有没有想过,有这么多判断条件,为什么会先选这个条件做if判断,其他条件后做if判断呢?很多时候我们是根据自己的经验和分析,构建if else的判断分支。

而决策树模型会根据大量的历史样本数据,运用算法选择合适的属性作为节点,最终构造出类似流程图的树状结构。

决策树的基本结构包含根节点、子节点(有子节点就有父节点,子和父是相对的,一个子节点可能是下一个分支节点的父节点)、叶子节点。

1.根节点:就是决策树最开始的节点,刚才我们生成的决策树图中,根节点就是“天气”

2.子节点:就是树中间的一些节点,比如“温度”

3.叶子节点:最底部的节点,已经不能再分下去,也是决策的结果

在决策树的算法中,不管是ID3(信息增益),C4.5(信息增益率)还是CART(基尼系数),都在解决同样的问题:

1.选择哪个属性作为根节点

2.选择那些属性作为子节点

3.什么时候停止得到决策的结果,即叶子节点

ID3算法

为什么学决策树算法之前,要学习信息和熵的概念呢?

我们知道熵是用来衡量事物的不确定性,事物的不确定性越大,熵就越大。

同样的道理,如果一个数据集决策属性越杂,我们就说数据集的纯度越低,熵越大。如果决策属性的值都是打篮球,数据集纯度是最高的,没有任何不确定性,熵为0。当数据集决策属性的值有两个,一半是打篮球,一半是不打篮球,纯度最低,熵为1。

b47cce54ee8cbfe8f4288ffb4b558c8a.png

但是如果我们能找到某个条件属性(表中的天气、温度、湿度、刮风都称作条件属性),通过对数据集进行划分,使得决策属性(表中的是否打篮球称做决策属性)的不确定性降低,那么这个条件属性我们就作为决策树的节点。

根节点确认以后(比如例子中的天气),根据根节点的属性值(晴天、小雨、阴天都是天气属性的值),整个数据集又被划分为不同的子数据集(按照晴天、小雨、阴天,整个数据集分为不同的部分),然后对子数据集重复同样的计算,求出子数据集中使得决策属性不确定性最低的属性,将该属性作为子节点,直到不能再继续分下去,到叶子节点停止。

上面的表述可能有点不太好理解,我们还是以打篮球的例子,来重复整个ID3算法的过程。

我们有11个样本的数据集D,其中标签属性中有7个输出为打篮球,4个为不打篮球。数据集D的不确定性是0.9457。

f0b1e4ca24a70bfe6a8c764caa0bdedc.png

我们可以看到,如果以天气作为属性进行划分,样本D的不确定性,从最初的0.9457降低到0.2504。由于ID3算法求的是信息增益,不确定性降低多少,实际上就是信息增加多少:

12474196d6e40457760e40ea0b5b32be.png

如果以温度作为属性划分,信息增益为0.5911。

e5e284828f037daa6d4ce87231b4e6c3.png

湿度、刮风的计算细节就不再展示,同样的方法计算得出,当湿度作为属性进行划分,信息增益为0.6176;刮风作为属性进行划分,信息增益为0.0238。

equation?tex=Gain%28D%2Cweather%29+%3D+Ent%28D%29-+%5Csum%5Climits_%7Bi+%3D+1%7D%5En++%7B%7BD%5Ei%5Cover+D%7DEnt%28D%5Ei%29%7D%3D0.9457-%28%7B5%5Cover+11%7DEnt%28D1%29%2B%7B3%5Cover+11%7DEnt%28D2%29%2B%7B3%5Cover+11%7DEnt%28D3%29%29%3D0.6953

equation?tex=Gain%28D%2Ctemperature%29+%3D+Ent%28D%29-+%5Csum%5Climits_%7Bi+%3D+1%7D%5En++%7B%7BD%5Ei%5Cover+D%7DEnt%28D%5Ei%29%7D%3D0.9457-%28%7B2%5Cover+11%7DEnt%28D1%29%2B%7B6%5Cover+11%7DEnt%28D2%29%2B%7B3%5Cover+11%7DEnt%28D3%29%29%3D0.5911

equation?tex=Gain%28D%2Chumidity%29+%3D+Ent%28D%29-+%5Csum%5Climits_%7Bi+%3D+1%7D%5En++%7B%7BD%5Ei%5Cover+D%7DEnt%28D%5Ei%29%7D%3D0.9457-%28%7B5%5Cover+11%7DEnt%28D1%29%2B%7B2%5Cover+11%7DEnt%28D2%29%2B%7B4%5Cover+11%7DEnt%28D3%29%29%3D0.6176

equation?tex=Gain%28D%2Cwindy%29+%3D+Ent%28D%29-+%5Csum%5Climits_%7Bi+%3D+1%7D%5En++%7B%7BD%5Ei%5Cover+D%7DEnt%28D%5Ei%29%7D%3D0.9457-%28%7B7%5Cover+11%7DEnt%28D1%29%2B%7B4%5Cover+11%7DEnt%28D2%29%29%3D0.0238

计算结果显示,当天气作为属性时,信息增益最大。因为ID3算法就是寻找信息增益最大的属性作为节点,所以我们最终选取天气作为根节点。

天气已经确定为根节点,所以天气这个属性后面也不必再重复计算,以确保已经确定为节点的属性在任意路径最多只出现一次。

当天气等于晴天时,所有的结果都是打篮球,没有任何不确定性,所以不必再继续分下去,叶子节点就是打篮球;

当天气等于小雨时,所有的结果都是不打篮球,没有任何不确定性,所以也不必再继续分下去,叶子节点就是不打篮球;

当天气等于阴天时,结果有打篮球,也有不打篮球。所以我们必须再从温度、湿度、刮风等条件属性中,找到信息增益最大的属性作为节点,继续分裂下去。

计算方法和上面一样,分别求出当条件是温度、湿度、刮风时的信息增益。经过计算我们会发现选择属性温度时,信息增益最大,所以阴天这个分支,继续选择温度作为子节点。

温度作为节点之后,再继续分裂,没有任何不确定性。当温度为中的时候,结果都是打篮球,低的时候,结果是不打篮球。所以整个决策树就构造完成了。

c372c901b2741a48a8939239494efafe.png


我们可以看到,刮风这个属性并没有在决策树中。说明刮风作为属性的时候,没有降低任何不确定性,对判断是否打篮球没有帮助,所以被算法排除掉了。


ID3算法的规则非常简单,就是寻找信息增益最大的属性作为节点。信息增益最大,意味着使用这个属性之后,结果的不确定性最低。


熵的公式:

equation?tex=Ent%28D%29+%3D+-+%5Csum%5Climits_%7Bi+%3D+1%7D%5Ec++%7B%7Bp_i%7D%5Clog_2%28%7Bp_i%7D%29%7D+

信息增益(information gain)的公式如下:

equation?tex=Gain%28D%2Ca%29+%3D+Ent%28D%29-+%5Csum%5Climits_%7Bi+%3D+1%7D%5En++%7B%7B%7CD%5Ei%7C%5Cover+%7CD%7C%7DEnt%28D%5Ei%29%7D+

Ent是熵Entropy的缩写;

n是属性a所有值的数量,比如天气属性有三个值,{晴天、小雨、阴天},那么n=3;

Ent(D)是原集合D的熵;

equation?tex=D%5Ei 是相应属性值对应的子集,
equation?tex=%5Csum%5Climits_%7Bi+%3D+1%7D%5En++%7B%7B%7CD%5Ei%7C%5Cover+%7CD%7C%7DEnt%28D%5Ei%29%7D 是各个子集的熵的加权和,权值为
equation?tex=D%5Ei 的数量占原集合D的比例。

这个公式描述的就是原集合D的熵在知道属性a之后熵减少了多少。熵减少意味着不确定减少,熵减少的数量就是信息增加的数量,获取信息可以减少不确定性。熵和信息的数量相等,意义相反。

【机器学习入门】决策树算法(一):ID3(Iterative Dichotomiser 3)算法 ID3是一种决策树学习算法,是一种机器学习技术,通过选择最优的特征,构造决策树模型来完成分类任务。 阅读详情

相关推荐

常用数据挖掘算法举例(上)

朴素贝叶斯   朴素贝叶斯分类法是统计学分类方法,在特征条件独立的前提下,基于贝叶斯定理计算的隶属关系概率进行分类。 朴素贝叶斯分类有着坚实的数学基础和稳定的分类效率,同时,分类模型需要估计的参数很少,对缺失数据不太敏感,算法也比较简单。 从理论上讲,朴素贝叶斯分类模型与其他分类方法相比的误差率最小,但是实际上并非总是如此,这是因为朴素贝叶斯分类模型假设各属性之间相互独立,然而这个假设在实...

慧安金科的博客 5148

决策树——ID3算法

前言 我们在使用数据挖掘的时候,完成数据的“清洗”等一系列繁琐的步骤,就可以对数据进一步地进行“挖掘”——对数据进行分类的建立、预测、聚类分析等等的操作。在分类和预测的过程中,有一系列的算法得以脱颖而出——“回归分析”、“决策树”、“人工神经网络”等等 那么今天我就来介绍一下”决策树“——ID3算法 一、ID3算法 ID3作为一种经典的决策树算法,是基于信息熵来选择最佳的测试属性,其选择了当前样本集中具有最大信息增益值的属性作为测试属性。 样本集的划分则依据了测试属性的取值进行,测试属性有多少种取值就能划

weixin_46245411的博客 3万+

决策树—ID3、C4.5、CART

目录 一、决策树模型与学习 1、决策树模型 2、决策树学习     二、特征选择 1、信息增益 2、信息增益率 三、决策树的生成 1、ID3算法 2、C4.5算法 3、CART算法 四、决策树停止分裂的条件 五、连续值和损失值处理 决策树(decision tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程,可以认为...

choven_meng的博客 2万+

id3算法流程图_决策树——ID3原理、Python实现、决策树可视化

决策树介绍 决策树是一种类似于流程图的树结构,由内部结点、叶节点、有向边组成。一个内部结点表示一个特征上的测试,一个叶节点表示类别标号。决策树分类就是从根节点开始,对实例的某一特征进行测试,根据测试结果将实例划分子节点,再对子结点上的剩余特征进行递归测试并分配,直到产生叶子节点。决策树优点 1)创建决策规则的过程简单。 2)决策树可以可视化,输出结果易于理解。 3)可以处理连续性和离散...

weixin_36098237的博客 2037

决策树ID3简单推导实现

决策树(decision tree)是一种基本的分类与回归方法。ID3是其中一种经典的决策树算法。它通过计算特征的信息增益熵来选择最佳的特征来进行划分。

qq_58804208的博客 670

ID3决策树的算法原理与python实现

机器学习,python,决策树,ID3

三石 6934

决策树的算法流程图(ID3/C4.5/CART)

qq_43517635的博客 1万+

机器学习 | 决策树ID3算法

ID3是Quinlan于1979年提出的,是机器学习中一种广为人知的一个算法,它的提出开创了决策树算法的先河,而且是国际上最早最有影响的决策树方法 首先找出最有判断力的特征,把数据分成多个子集,每个子集又选择最有判断力的特征进行划分,一直进行到所有的子集包含同一类型的数据为止,最后得到一棵决策树。 一、ID3算法的基本步骤 1)创建一个节点。如果样本都在同一类,则算法停止,把该节点改成树叶节点,并用该类标记。 2)否则,选择一个能够最好的将训练集分类的属性,该属性作为该节点的测试属性。 3)对测试

6808

id3算法流程图_Day4以20根头发为代价,我又双叒叕深入研究了一遍决策树和随机森林算法(上)...

在上一篇的用户的特征分析内容中,我们提到的可采用的方法里,有一个便是决策树的算法,既然挖了这个坑,那我们这一次就来细致研究下什么是决策树,以及决策树相关的一些问题吧。但每次研究算法的数学推导的时候,正如标题所言,总是避免不了脱发的威胁,真怕有一天起床看到如张东升的发型一样。虽然难,但是一切都还不晚,我们再一起来研究一次吧。 1. 什么是决策树决策树是属于数据挖掘中最经典的算法之一,它是...

weixin_32304839的博客 342

决策树之ID3算法详解(用于课堂展示)

系统的介绍了ID3算法

weixin_47778409的博客 4660

STC51单片机串口多字节数据接收的优化策略

本文深入探讨了STC51单片机串口多字节数据接收的优化策略。针对数据丢包、粘包等常见痛点,核心思路是采用“缓冲队列+定时器超时”模式,将实时处理转变为“先收纳,后处理”。文章详细讲解了硬件初始化、中断服务程序优化(快速入队与激活超时裁判)以及主循环的非阻塞设计,并进阶介绍了环形缓冲区实现与错误处理,旨在构建稳定可靠的串口通信系统。

weixin_29264201的博客 374

了解大数据中的决策树

决策树(Decision Tree)是一种类似于流程图的树形结构,每个内部节点表示在一个属性上的测试,每个分支代表一个属性输出,而每个叶节点代表类或类分布。决策树通过树状结构,基于数据特征与目标变量之间的关系,将数据集划分为不同的子集,以逐步构建决策规则。其工作原理是从根节点开始,根据输入特征的取值,沿着相应的分支向下移动,直到到达一个叶节点,叶节点的值即为最终分类或预测结果,递归地选择最优特征进行分裂,构建出完整的决策树。大数据决策树是一种基于树形结构的机器学习算法,特别适用于处理和分析大规模数据集。

youganma的博客 1988

别再为倍福EL6021/EL6022的RS485接线头疼了!手把手教你硬件跳线与软件配置(附Modbus RTU主站例程)

本文详细解析了倍福EL6021/EL6022模块的RS485硬件跳线与软件配置方法,包括Modbus RTU主站编程实战。从端子定义、跳线操作到TwinCAT 3环境设置,提供完整的通信例程和故障排查技巧,帮助工程师快速解决工业现场通信问题。

weixin_30634661的博客 592

php无极分类非递归_决策树分类与回归总结

概念决策树就是一个类似于流程图的树形结构,树内部的每一个节点代表的是对一个特征的测试,属的分支代表特征的每一个测试结果,树的叶子节点代表一种分类结果。决策树模型既可以做分类也可以做回归。分类就是树模型的每个叶子节点代表一个类别;回归就是根据特征向量来决定对应的输出值。回归树就是将特征空间划分成若干单元,每一个划分单元有一个特定的输出。对于测试数据,只要按照特征将其归到某个单元,便得到对应的输出值。...

weixin_35143514的博客 174

Dify 深度进阶:从入门到精通AI应用构建

《Dify进阶指南:从基础到高阶的AI应用开发技巧》 本文深入探讨Dify平台的高级功能与应用开发技巧。首先强调核心概念的深化,包括提示词工程进阶、知识库高效管理和模型参数优化。重点介绍智能体应用的开发方法,如何让AI具备自主规划与执行能力。同时讲解工作流编排、前端集成等实用技术,并分享应用运营优化、成本控制等实践经验。文章还展望了Dify生态的发展趋势,为开发者提供从基础到进阶的完整学习路径,助力打造更智能高效的AI应用。

同名公众号:dify实验室 1951

Matlab处理气象数据(六)数据的面积加权

由于地理投影导致导致每个像元实际地面面积不同,越靠近北极实际面积越小,越靠近赤道实际面积越大,如果不进行面积加权就简单平均,会导致温度较实际温度偏低。 用以下公式计算地理投影每个像元的面积: double pi = 3.1415926; double R = 6371007.181; //units - m double area = (pi/180.0)*R*R*fabs(sin(dLat1/180.0*pi) - sin(dLat2/180.0*pi)) * fabs(dLon1 - dLo

设计の诗 1万+

C4.5算法

C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法。它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类。C4.5的目标是通过学习,找到一个从属性值到类别的映射关系,并且这个映射能用于对新的类别未知的实体进行分类。     C4.5由J.Ross Quinlan在ID3的基础上提出的。ID3算法用来构造决策树。决策树是一种类

十四不是八的博客 1692

FFTW3库在Windows中的安装和使用

Windows 32位平台下载:FFTW Installation on Windows。

weixin_45397344的博客 951

Python实现决策树并且使用Graphvize可视化

一、什么是决策树(decision tree)——机器学习中的一个重要的分类算法决策树是一个类似于数据流程图的树结构:其中,每个内部节点表示一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或者类的分布,树的最顶层是根结点根据天气情况决定出游与否的案例二、决策树算法构建2.1决策树的核心思路特征选择:从训练数据的特征中选择一个特征作为当前节点的分裂标准(特征选择的标准不同产生了不同的...

夕夕如盼的博客 2万+

【基于CKF的IMM】CV和CT两个模型下的IMM,二维,滤波使用CKF(容积卡尔曼滤波),附完整的matlab代码

该文章摘要: 本文提出了一种基于交互多模型(IMM)和容积卡尔曼滤波(CKF)的融合定位算法,用于解决目标在直线运动和转弯机动之间的模型切换问题。通过MATLAB仿真实现了IMM-CKF算法,并与单一的CV-CKF(匀速模型)和CT-CKF(匀角速转弯模型)方法进行对比。实验结果表明,在包含直线段和转弯段的复合轨迹跟踪中,IMM-CKF方法能够自适应调整模型权重,显著提高了定位精度。轨迹跟踪图、位置/速度误差对比图以及模型概率曲线直观展示了IMM算法的优势。文章提供了完整的MATLAB实现代码,可用于目标跟

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 615

【ROS机器人系统】实验4 ROS简单应用:激光SLAM与导航

ROS简单应用:激光SLAM与导航 (1)了解机器人和SLAM之间关系 (2)了解激光SLAM (3)了解gmapping和导航

南京大学软件工程硕士在读 2146

2005:我在硅谷种AI-第4集:咖啡机的预言诗

摘要(149字): 《咖啡机的预言诗》讲述未来AI科学家陆眠穿越回2005年斯坦福,用极简算法解决工学院咖啡机"十点诅咒"之谜。通过收集天气、课表等6个特征数据,他采用ID3决策树算法(最大深度3层)实现88%准确率的预测模型,引发"复杂问题是否需要复杂解法"的思考。本集通过手写Matlab代码演示香农熵计算过程,展现"用最少判断步骤解决实际问题"的算法哲学,最终使咖啡机预测成为校园传奇。同步发布主题曲《种春天》AB双版供听众评选。

u011864458的博客 691

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最大信息熵增益_信息熵、信息增益和决策树(ID3算法)

决策树算法:优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关的特征数据。缺点:可能会产生过度匹配问题。适用数据类型:数值型和标称型。算法原理:决策树是一个简单的为输入值选择标签的流程图。这个流程图由检查特征值的决策节点和分配标签的子叶节点组成。为输入值选择标签,我们以流程图的初始决策节点(即根节点)开始。此节点包含一个条件,检查输入值的特征之一,基于该特征的值选择一个分...

weixin_36448964的博客 542

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

机器学习方法之决策树

决策树是一个类似于流程图的树结构:其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。 上图中是否出去玩取决于天气情况(sunny、overcast、rain)和空气湿度(humidity、windy)这2个属性的值。 信息熵 决策树算法种类很多,本文主要介绍ID3算法。ID3算法在1970-1980年,由J.Ross. Qui...

From Zero to Hero 559

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 轻量级锁_用最通俗的语言解释Synchronized原理以及偏向锁,自旋锁,轻量级锁和重量级锁的区别...
下一篇: 是不是一个东西_判断一个男人是不是真心爱你,就看他愿不愿意给你这三样东西...
伶邪
博客等级 码龄8年 32粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值