ID决策树的构造原理

前言

🏷️🏷️本章开始学习有关决策树的相关知识,决策树是一种树形模型,也是一种常用的分类和回归方法。本章我们首先介绍第一种决策树的构造原理

学习目标

  1. 了解决策树算法的基本思想
  2. 掌握 ID3 决策树的构建原理

1.决策树介绍

1.1案例引入

有的同学可能在大学学习过一门课程叫《数据结构》,里面有一个重要的结构就是"树",和现实生活中的树一样,树的主要由四部分树根树干树枝树叶组成,今天的决策树也是一种树结构,大家学习的时候可以想象现实生活中的树来来理解。

决策树算法是一种监督学习算法,英文是Decision tree。

决策树思想的来源非常朴素,试想每个人的大脑都有类似于if-else这样的逻辑判断,这其中的if表示的是条件,if之后的then就是一种选择或决策。程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。

比如:你母亲要给你介绍男朋友,是这么来对话的:

女儿:多大年纪了?

母亲:26。

女儿:长的帅不帅?

母亲:挺帅的。

女儿:收入高不?

母亲:不算很高,中等情况。

女儿:是公务员不?

母亲:是,在税务局上班呢。

女儿:那好,我去见见。

于是你在脑袋里面就有了下面这张图

作为女孩的你在决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。

1.2构建决策树的三个步骤

  1. 特征选择:选取有较强分类能力的特征(定性分析问题还是定量分析问题等等)
  2. 决策树生成
  3. 决策树剪枝(让决策树更加简洁高效,对于一些特征不重要,或根据权值大小,对决策树的分类进行筛选)

决策树API:

  • from sklearn.tree import DecisionTreeClassifier
  • from sklearn.tree import plot_tree

2.ID3决策树

  1. 掌握信息熵的概念
  2. 掌握条件熵的概念
  3. 掌握ID3决策树构建过程

2.1信息熵

ID3 树是基于信息增益构建的决策树.

定义

  • 熵在信息论中代表随机变量不确定度的度量
  • 熵越大,数据的不确定性度越高
  • 熵越小,数据的不确定性越低

公式:

公式的转换,当数据类别只有两类的情况下,公式可以做如下转换:

代码角度理解信息熵的概念

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

def entropy(p):
    return -p*np.log(p)-(1-p)*np.log(1-p)

x = np.linspace(0.01,0.99,200)
plt.plot(x,entropy(x))
plt.show()

✒️观察上图可以得出,当我们的系统每一个类别是等概率的时候,系统的信息熵最高,当系统偏向于某一列,相当于系统有了一定程度的确定性,直到系统整体百分之百的都到某一类中,此时信息熵就达到了最低值,即为0。上述结论也可以拓展到多类别的情况。

2.2 信息增益

💡💡上文我们也讲到,决策树构建第一步即特征选择是尤为重要的,每一种特征的重要性怎样体现呢,那就是信息增益。

2.2.1定义

特征对训练数据集D的信息增益,定义为集合的经验熵与特征A给定条件下D的经验熵之差。即

根据信息增益选择特征方法是:对训练数据集D,计算其每个特征的信息增益,并比较它们的大小,并选择信息增益最大的特征进行划分。表示由于特征A而使得对数据D的分类不确定性减少的程度。

2.2.2算法

设训练数据集为D,表示其样本个数。设有个类为属于类的样本个数,。设特征A有个不同取值,根据特征A的取值将D划分为个子集样本个数, 。子集中属于类的样本集合为,即*为*的样本个数。信息增益算法如下:

  • 输入:训练数据集D和特征A;

  • 输出:特征A对训练数据集D的信息增益

(1) 计算数据集D的经验熵

(2) 计算特征A对数据集D的经验条件熵

(3) 计算信息增益

💡💡只看公式可能觉得很复杂,下面我们带入一个例子来更好的理解

下面以常用的贷款申请样本数据表为样本集,通过数学计算来介绍信息增益计算过程。

Step1 计算经验熵

类别一共是两个拒绝/同意,数量分别是6和9,根据熵定义可得:

Step2 各特征的条件熵

将各特征分别记为 ,分别代表年龄、有无工作、有无房子和信贷情况,那么

Step3 计算增益

根据计算所得的信息增益,选取最大的 作为根节点的特征。它将训练集 划分为两个子集(取值为"是")和(取值为"否")。由于只有同一类的样本点,所以成为一个叶节点,节点标记为"是"。

对于需从特征中选择新的特征。计算各个特征的信息增益

选择信息增益最大的特征作为节点的特征。由于有两个可能取值,一个是"是"的子节点,有三个样本,且为同一类,所以是一个叶节点,类标记为"是";另一个是"否"的子节点,包含6个样本,也属同一类,所以也是一个叶节点,类别标记为"否"。

最终构建的决策树如下:

3.ID3的算法步骤

  1. 计算每个特征的信息增益

  2. 使用信息增益最大的特征将数据集 S 拆分为子集

  3. 使用该特征(信息增益最大的特征)作为决策树的一个节点

  4. 使用剩余特征对子集重复上述(1,2,3)过程

4.小结

  1. 信息熵是一个变量(特征)包含信息多少的度量方式。信息熵的值大,则认为该变量包含的信息量就大

  2. 条件熵用于衡量以某个特征作为条件,对目标值纯度的提升程度

  3. 信息增益用于衡量那个特征更加适合优先分裂

  4. 使用信息增益构建的决策树成为 ID3 决策树

相关推荐
唐某人丶1 小时前
教你如何用 JS 实现 Agent 系统(2)—— 开发 ReAct 版本的“深度搜索”
前端·人工智能·aigc
FIT2CLOUD飞致云1 小时前
九月月报丨MaxKB在不同规模医疗机构的应用进展汇报
人工智能·开源
阿里云大数据AI技术1 小时前
【新模型速递】PAI-Model Gallery云上一键部署Qwen3-Next系列模型
人工智能
袁庭新2 小时前
全球首位AI机器人部长,背负反腐重任
人工智能·aigc
机器之心2 小时前
谁说Scaling Law到头了?新研究:每一步的微小提升会带来指数级增长
人工智能·openai
算家计算2 小时前
AI配音革命!B站最新开源IndexTTS2本地部署教程:精准对口型,情感随心换
人工智能·开源·aigc
量子位2 小时前
马斯克周末血裁xAI 500人
人工智能·ai编程
算家计算2 小时前
OpenAI最强编程模型GPT-5-Codex发布!可独立编程7小时,编程效率提升10倍
人工智能·ai编程·资讯
NAGNIP4 小时前
大模型框架性能优化策略:延迟、吞吐量与成本权衡
算法
聚客AI4 小时前
🌟大模型为什么产生幻觉?预训练到推理的漏洞全揭秘
人工智能·llm·掘金·日新计划