type
status
date
slug
summary
tags
category
icon
password
Property
Jun 30, 2025 07:57 AM

一、基本概念

待补充

二、信息熵与条件熵

待补充

三、学习案例

3.1 ID3算法

3.1 基于西瓜数据集的ID3算法详细计算过程

notion image
根据图中的数据集逐步计算每个特征的信息增益,并选择最佳划分特征。

1. 计算初始信息熵

首先计算整个数据集的信息熵Ent(D):
  • 总样本数|D| = 17
  • 正例("是")数量 = 8
  • 反例("否")数量 = 9
Ent(D) = - (8/17)log₂(8/17) - (9/17)log₂(9/17)= -0.4706(-1.117) - 0.5294(-0.918)≈ 0.5255 + 0.4861≈ 0.998

2. 计算各特征的信息增益

(1) 特征"色泽"

"色泽"有三个取值:青绿、乌黑、浅白
  • 青绿(D₁): 6个样本(3是,3否)
  • 乌黑(D₂): 6个样本(4是,2否)
  • 浅白(D₃): 5个样本(1是,4否)
计算各子集熵值:
Ent(D₁) = - (3/6)*log₂(3/6) - (3/6)*log₂(3/6) = 1
Ent(D₂) = - (4/6)*log₂(4/6) - (2/6)*log₂(2/6) ≈ 0.918
Ent(D₃) = - (1/5)*log₂(1/5) - (4/5)*log₂(4/5) ≈ 0.722
信息增益:
Gain(D,色泽) = Ent(D) - [ (6/17)*1 + (6/17)*0.918 + (5/17)*0.722 ]
≈ 0.998 - [ 0.3529 + 0.324 + 0.2124 ]
≈ 0.998 - 0.8893
≈ 0.109

(2) 特征"根蒂"

"根蒂"有三个取值:蜷缩、稍蜷、硬挺
  • 蜷缩(D₁): 8个样本(5是,3否)
  • 稍蜷(D₂): 7个样本(3是,4否)
  • 硬挺(D₃): 2个样本(0是,2否)
计算各子集熵值:
Ent(D₁) = - (5/8)*log₂(5/8) - (3/8)*log₂(3/8) ≈ 0.954
Ent(D₂) = - (3/7)*log₂(3/7) - (4/7)*log₂(4/7) ≈ 0.985
Ent(D₃) = 0 (因为所有样本都属于同一类)
信息增益:
Gain(D,根蒂) = Ent(D) - [ (8/17)*0.954 + (7/17)*0.985 + (2/17)*0 ]
≈ 0.998 - [ 0.449 + 0.4056 + 0 ]
≈ 0.998 - 0.8546
≈ 0.143

(3) 特征"敲声"

"敲声"有三个取值:浊响、沉闷、清脆
  • 浊响(D₁): 10个样本(6是,4否)
  • 沉闷(D₂): 5个样本(1是,4否)
  • 清脆(D₃): 2个样本(1是,1否)
计算各子集熵值:
Ent(D₁) = - (6/10)*log₂(6/10) - (4/10)*log₂(4/10) ≈ 0.971
Ent(D₂) = - (1/5)*log₂(1/5) - (4/5)*log₂(4/5) ≈ 0.722
Ent(D₃) = 1
信息增益:
Gain(D,敲声) = Ent(D) - [ (10/17)*0.971 + (5/17)*0.722 + (2/17)*1 ]
≈ 0.998 - [ 0.5712 + 0.2124 + 0.1176 ]
≈ 0.998 - 0.9012
≈ 0.097

(4) 特征"纹理"

"纹理"有三个取值:清晰、稍糊、模糊
  • 清晰(D₁): 9个样本(7是,2否)
  • 稍糊(D₂): 5个样本(1是,4否)
  • 模糊(D₃): 3个样本(0是,3否)
计算各子集熵值:
Ent(D₁) = - (7/9)*log₂(7/9) - (2/9)*log₂(2/9) ≈ 0.764
Ent(D₂) = - (1/5)*log₂(1/5) - (4/5)*log₂(4/5) ≈ 0.722
Ent(D₃) = 0
信息增益:
Gain(D,纹理) = Ent(D) - [ (9/17)*0.764 + (5/17)*0.722 + (3/17)*0 ]
≈ 0.998 - [ 0.4045 + 0.2124 + 0 ]
≈ 0.998 - 0.6169
≈ 0.381

(5) 特征"脐部"

"脐部"有三个取值:凹陷、稍凹、平坦
  • 凹陷(D₁): 7个样本(5是,2否)
  • 稍凹(D₂): 6个样本(3是,3否)
  • 平坦(D₃): 4个样本(0是,4否)
计算各子集熵值:
Ent(D₁) = - (5/7)*log₂(5/7) - (2/7)*log₂(2/7) ≈ 0.863
Ent(D₂) = 1
Ent(D₃) = 0
信息增益:
Gain(D,脐部) = Ent(D) - [ (7/17)*0.863 + (6/17)*1 + (4/17)*0 ]
≈ 0.998 - [ 0.3554 + 0.3529 + 0 ]
≈ 0.998 - 0.7083
≈ 0.290

(6) 特征"触感"

"触感"有两个取值:硬滑、软粘
  • 硬滑(D₁): 10个样本(5是,5否)
  • 软粘(D₂): 7个样本(3是,4否)
计算各子集熵值:
Ent(D₁) = 1
Ent(D₂) = - (3/7)*log₂(3/7) - (4/7)*log₂(4/7) ≈ 0.985
信息增益:
Gain(D,触感) = Ent(D) - [ (10/17)*1 + (7/17)*0.985 ]
≈ 0.998 - [ 0.5882 + 0.4056 ]
≈ 0.998 - 0.9938
≈ 0.004

3. 选择最佳划分特征

比较各特征的信息增益:
  • 色泽: 0.109
  • 根蒂: 0.143
  • 敲声: 0.097
  • 纹理: 0.381
  • 脐部: 0.290
  • 触感: 0.004
"纹理"的信息增益最大(0.381),因此选择"纹理"作为根节点。

4. 递归构建决策树

第一层划分:纹理

  1. 纹理=清晰分支(9个样本:7是,2否)
      • 计算剩余特征的信息增益
      • 发现纯度已经较高,可以停止划分或继续细分
  1. 纹理=稍糊分支(5个样本:1是,4否)
      • 继续选择最佳划分特征
  1. 纹理=模糊分支(3个样本:0是,3否)
      • 已经纯了(全是"否"),作为叶节点

纹理=清晰分支的进一步划分

计算剩余特征的信息增益(仅使用纹理=清晰的9个样本):
  1. 色泽:
      • 青绿:3(2是,1否), 乌黑:4(4是,0否), 浅白:2(1是,1否)
      • Gain ≈ 0.764 - [ (3/9)*0.918 + (4/9)*0 + (2/9)*1 ] ≈ 0.764 - 0.417 ≈ 0.347
  1. 根蒂:
      • 蜷缩:5(4是,1否), 稍蜷:4(3是,1否)
      • Gain ≈ 0.764 - [ (5/9)*0.722 + (4/9)*0.811 ] ≈ 0.764 - 0.760 ≈ 0.004
  1. 敲声:
      • 浊响:7(6是,1否), 沉闷:1(0是,1否), 清脆:1(1是,0否)
      • Gain ≈ 0.764 - [ (7/9)*0.592 + (1/9)*0 + (1/9)*0 ] ≈ 0.764 - 0.461 ≈ 0.303
  1. 脐部:
      • 凹陷:5(4是,1否), 稍凹:3(3是,0否), 平坦:1(0是,1否)
      • Gain ≈ 0.764 - [ (5/9)*0.722 + (3/9)*0 + (1/9)*0 ] ≈ 0.764 - 0.401 ≈ 0.363
  1. 触感:
      • 硬滑:5(4是,1否), 软粘:4(3是,1否)
      • Gain ≈ 0.764 - [ (5/9)*0.722 + (4/9)*0.811 ] ≈ 0.764 - 0.760 ≈ 0.004
选择"脐部"作为下一划分特征(Gain=0.363)

纹理=稍糊分支的进一步划分

计算剩余特征的信息增益(仅使用纹理=稍糊的5个样本):
  1. 色泽:
      • 青绿:2(0是,2否), 乌黑:2(1是,1否), 浅白:1(0是,1否)
      • Gain ≈ 0.722 - [ (2/5)*0 + (2/5)*1 + (1/5)*0 ] ≈ 0.722 - 0.4 ≈ 0.322
  1. 根蒂:
      • 蜷缩:1(0是,1否), 稍蜷:4(1是,3否)
      • Gain ≈ 0.722 - [ (1/5)*0 + (4/5)*0.811 ] ≈ 0.722 - 0.649 ≈ 0.073
  1. 敲声:
      • 浊响:3(1是,2否), 沉闷:2(0是,2否)
      • Gain ≈ 0.722 - [ (3/5)*0.918 + (2/5)*0 ] ≈ 0.722 - 0.551 ≈ 0.171
  1. 脐部:
      • 凹陷:2(0是,2否), 稍凹:3(1是,2否)
      • Gain ≈ 0.722 - [ (2/5)*0 + (3/5)*0.918 ] ≈ 0.722 - 0.551 ≈ 0.171
  1. 触感:
      • 硬滑:3(0是,3否), 软粘:2(1是,1否)
      • Gain ≈ 0.722 - [ (3/5)*0 + (2/5)*1 ] ≈ 0.722 - 0.4 ≈ 0.322
选择"色泽"或"触感"作为下一划分特征(Gain=0.322)

5. 最终决策树结构

基于以上计算,构建的决策树大致如下:
 
相关文章
机器学习入门篇:数学的基础要求
Lazy loaded image
机器学习基础篇(一):机器学习概论
Lazy loaded image
机器学习基础篇(三):线性回归算法
Lazy loaded image
机器学习基础篇(四):数学知识概要
Lazy loaded image
机器学习基础篇(五):梯度下降
Lazy loaded image
机器学习深入篇(一):探究MSE与MAE的关系与联系
Lazy loaded image
机器学习深入篇(一):探究MSE与MAE的关系与联系小知识Tip(一):为什么python打印字符串'''...''’可以在前面加一个r?
Loading...
fntp
fntp
多一点兴趣,少一点功利
最新发布
开源干货(一):基于OpenCV+JavaFX+Yolo+Seetaface构建人脸识别
2025-6-30
Day03:前端页面开发-首页开发
2025-6-30
机器学习基础篇(五):梯度下降
2025-6-30
机器学习基础篇(十一):决策树算法
2025-6-30
机器学习深入篇(四):探究拉格朗日乘数法的应用
2025-6-30
机器学习深入篇(一):探究MSE与MAE的关系与联系
2025-6-30
公告
📝 博客只为了记录我的学习生涯
😎 我的学习目标是成为一名极客
🤖 我热爱开源当然我也拥抱开源
💌 我期待能收到你的Email留言
📧 我的邮箱:stickpoint@163.com
欢迎交流~