决策树——(二)决策树的生成与剪枝ID3,C4.5

2024-03-30 00:18
文章标签 生成 c4.5 决策树 剪枝 id3

本文主要是介绍决策树——(二)决策树的生成与剪枝ID3,C4.5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.基本概念

在正式介绍决策树的生成算法前,我们先将之前的几个概念梳理一下:

1.1 信息熵

X X X是一个取有限个值的离散型随机变量,其分布概率为
P ( X = x i ) = p i , i = 1 , 2 , . . . , n P(X=x_i)=p_i,i=1,2,...,n P(X=xi)=pi,i=1,2,...,n

则随机变量 X X X的熵定义为
H ( X ) = − ∑ i = 1 n p i log ⁡ p i (1.1) H(X)=-\sum_{i=1}^np_i\log{p_i}\tag{1.1} H(X)=i=1npilogpi(1.1)

其中,若 p i = 0 p_i=0 pi=0,则定义 0 log ⁡ 0 = 0 0\log0=0 0log0=0;且通常 log ⁡ \log log取2为底和 e e e为底时,其熵的单位分别称为比特(bit)或纳特(nat).如无特殊说明,默认2为底。

1.2 条件熵

设有随机变量 ( X , Y ) (X,Y) (X,Y),其联合概率分布分
P ( X = x i , Y = y i ) = p i j , i = 1 , 2 , . . . , n ;    j = 1 , 2 , . . . , m P(X=x_i,Y=y_i)=p_{ij},i=1,2,...,n;\;j=1,2,...,m P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m

条件熵 H ( Y ∣ X ) H(Y|X) H(YX)表示在已知随机变量 X X X的条件下,随机变量 Y Y Y的不确定性。其定义为
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) (1.2) H(Y|X)=\sum_{i=1}^np_iH(Y|X=x_i)\tag{1.2} H(YX)=i=1npiH(YX=xi)(1.2)

其中, p i = P ( X = x i ) , i = 1 , 2 , . . . , n p_i=P(X=x_i),i=1,2,...,n pi=P(X=xi),i=1,2,...,n
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称之为经验熵(empirical entropy)和经验条件熵(empirical coditional entropy)。事实上我们在实际处理的时候确实时用的经验熵和经验条件熵,这一点同朴素贝叶斯中的处理一样。

1.3 信息增益

特征 A A A对训练数据集 D D D的信息增益 d ( D , A ) d(D,A) d(D,A),定义为集合 D D D的经验熵 H ( D ) H(D) H(D)与特征 A A A给定条件下 D D D的经验条件熵 H ( D ∣ A ) H(D|A) H(DA)之差,即
g ( D , A ) = H ( D ) − H ( D ∣ A ) (1.3) g(D,A)=H(D)-H(D|A)\tag{1.3} g(D,A)=H(D)H(DA)(1.3)

设训练集为 D D D ∣ D ∣ |D| D表示其样本容量,即样本个数。设有 K K K个类 C k , k = 1 , 2 , . . . , K ;    ∣ C k ∣ C_k,k=1,2,...,K;\;|C_k| Ck,k=1,2,...,K;Ck为属于类 C k C_k Ck的样本的个数,即 ∑ k = 1 K ∣ C k ∣ = ∣ D ∣ \sum_{k=1}^K|C_k|=|D| k=1KCk=D.设特征 A A A n n n个不同的取值 a 1 , a 2 , . . . , a n {a_1,a_2,...,a_n} a1,a2,...,an,根据特征 A A A的取值将 D D D划分为 n n n个子集 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn, ∣ D i ∣ |D_i| Di D i D_i Di的样本个数,即 ∑ i = 1 n ∣ D i ∣ = ∣ D ∣ \sum_{i=1}^n|D_i|=|D| i=1nDi=D.记子集 D i D_i Di中,属于类 C k C_k Ck的样本集合为 D i k D_{ik} Dik,即 D i k = D i ⋂ C k D_{ik}=D_i\bigcap C_k Dik=DiCk ∣ D i k ∣ |D_{ik}| Dik D i k D_{ik} Dik的样本个数. 则有:
(1)数据集 D D D的经验熵 H ( D ) H(D) H(D)
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ log ⁡ 2 ∣ C k ∣ ∣ D ∣ (1.4) H(D)=-\sum_{k=1}^K\frac{|C_k|}{|D|}\log_2\frac{|C_k|}{|D|}\tag{1.4} H(D)=k=1KDCklog2DCk(1.4)

(2)特征值A对数据集 D D D的经验条件熵 H ( D ∣ A ) 为 H(D|A)为 H(DA)
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ log ⁡ 2 D i k D i (1.5) H(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i)=-\sum_{i=1}^n\frac{|D_i|}{|D|}\sum_{k=1}^K\frac{|D_{ik}|}{|D_i|}\log_2{\frac{D_{ik}}{D_i}}\tag{1.5} H(DA)=i=1nDDiH(Di)=i=1nDDik=1KDiDiklog2DiDik(1.5)

(3)信息增益
g ( D , A ) = H ( D ) − H ( D ∣ A ) (1.6) g(D,A)=H(D)-H(D|A)\tag{1.6} g(D,A)=H(D)H(DA)(1.6)

仅看上面的公式肯定会很模糊,还是举个例子来说明一下(将公式同下面的计算式子对比着看会更容易理解).下表是一个由15个样本组成的贷款申请训练数据集。数据包括4个特征,最后一列表示是否通过申请。
I D 年龄 有工作 有自己的房子 贷款情况 类别 1 青年 否 否 一般 否 2 青年 否 否 好 否 3 青年 是 否 好 是 4 青年 是 是 一般 是 5 青年 否 否 一般 否 6 中年 否 否 一般 否 7 中年 否 否 好 否 8 中年 是 是 好 是 9 中年 否 是 非常好 是 10 中年 否 是 非常好 是 11 老年 否 是 非常好 是 12 老年 否 是 好 是 13 老年 是 否 好 是 14 老年 是 否 非常好 是 15 老年 否 否 一般 否 \begin{array}{c|cc} \hline ID&\text{年龄}&\text{有工作}&\text{有自己的房子}&\text{贷款情况}&\text{类别}\\ \hline 1&\text{青年}&\text{否}&\text{否}&\text{一般}&\text{否}\\ 2&\text{青年}&\text{否}&\text{否}&\text{好}&\text{否}\\ 3&\text{青年}&\text{是}&\text{否}&\text{好}&\text{是}\\ 4&\text{青年}&\text{是}&\text{是}&\text{一般}&\text{是}\\ 5&\text{青年}&\text{否}&\text{否}&\text{一般}&\text{否}\\ \hline 6&\text{中年}&\text{否}&\text{否}&\text{一般}&\text{否}\\ 7&\text{中年}&\text{否}&\text{否}&\text{好}&\text{否}\\ 8&\text{中年}&\text{是}&\text{是}&\text{好}&\text{是}\\ 9&\text{中年}&\text{否}&\text{是}&\text{非常好}&\text{是}\\ 10&\text{中年}&\text{否}&\text{是}&\text{非常好}&\text{是}\\ \hline 11&\text{老年}&\text{否}&\text{是}&\text{非常好}&\text{是}\\ 12&\text{老年}&\text{否}&\text{是}&\text{好}&\text{是}\\ 13&\text{老年}&\text{是}&\text{否}&\text{好}&\text{是}\\ 14&\text{老年}&\text{是}&\text{否}&\text{非常好}&\text{是}\\ 15&\text{老年}&\text{否}&\text{否}&\text{一般}&\text{否}\\ \hline \end{array} ID123456789101112131415年龄青年青年青年青年青年中年中年中年中年中年老年老年老年老年老年有工作有自己的房子贷款情况一般一般一般一般非常好非常好非常好非常好一般类别

这篇关于决策树——(二)决策树的生成与剪枝ID3,C4.5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/860040

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

PyQt5+Python-docx实现一键生成测试报告

《PyQt5+Python-docx实现一键生成测试报告》作为一名测试工程师,你是否经历过手动填写测试报告的痛苦,本文将用Python的PyQt5和python-docx库,打造一款测试报告一键生成工... 目录引言工具功能亮点工具设计思路1. 界面设计:PyQt5实现数据输入2. 文档生成:python-

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注