机器学习——决策树

发布于:2025-08-05 ⋅ 阅读:(12) ⋅ 点赞:(0)

标题:决策树


概念:决策树通过对训练样本的学习,建立分类规则,依据规则对新样本数据分类预测,属于有监督学习。

“有监督:x,y

 无监督 x”。
核心:所有数据从根节点一步步落到叶子节点 。

由于决策数,它是根据一个特征来进行输出的,所以它要比逻辑回归、线性回归还有 KN 算法它们的执行的速度都要快。或者说不是说是根据一个特征,或者说有五个特征,如果有一个特征它符合要求,那就给它输出,但是之前的逻辑回归线性回归 n 算法。都是。有很多特征,或者有很多 x 值,然后都符合才行,所以它就是这个方面的不一样的点。

 根节点: 第一个节点。

非叶子节点: 中间节点。

叶子节点: 最终结果节点。

 

需要考虑的问题:

  1. 哪个节点作为根节点?哪些节点作为中间节点?哪些节点作为叶子节点?
  2. 节点如何分裂?
  3. 节点分裂标准的依据?

决策树分类标准相关,包括:

  1. ID3 算法
  2. C4.5 算法
  3. CART 决策树

 

 ID3 算法中熵值相关内容:

衡量标准涉及熵值,熵值是对随机变量不确定性、物体内部混乱程度的度量

给出熵值计算公式 

pi是概率 

A集合:[1, 1, 1, 1, 1, 1,1,1,2,2]  
B集合:[0, 1, 2, 3, 4, 5,6,7,8,9]  

A集合熵值:−2/10×log₂(2/10)−8/10×log₂(8/10) = 0.722  
B集合熵值:−1/10×log₂(1/10)×10 = 3.322  

显然B的熵值更大,更加混乱。  

 

一、ID3 算法:  

熵:熵值越小,该节点越“纯”。  

第一遍遍历:  
1.标签(结果是否外出打球)的熵(类别熵):  
14 天中,9 天打球,5 天不打球,熵为:  
-⅑ log₂⅑ - ⅕ log₂⅕ = 0.940  
计算对数的 Python 程序:  
import math  
result = -9/14*math.log(9/14, 2) - 5/14*math.log(5/14, 2)  

 

2.基于天气的划分  

outlook(天气属性)分支:  
- sunny(晴天):对应结果 [yes, yes, no, no, no]  
- overcast(阴天):对应结果 [yes, yes, yes, yes]  
- rainy(雨天):对应结果 [yes, yes, yes, no, no]  
属性熵:  
晴天【5 天】的熵:  
-⅖ log₂⅖ - ⅗ log₂⅗ = 0.971  

Overcast(阴天)【4 天】的熵:  
-⅘ log₂⅘ = 0  

雨天【5 天】的熵:  
-⅗ log₂⅗ - ⅖ log₂⅖ = 0.971  
那么,天气对应标签结果的熵为:  

公式:H(X) = -∑ pᵢ * log pᵢ, i=1,2,…,n  

熵值计算:  
5/14×0.971 + 4/14×0 + 5/14×0.971 = 0.693  

增益相关内容:

  • 计算结果:信息增益为 \(0.940 - 0.693 = 0.247\)
  • 概念解释:信息增益(information gain)是特征选择重要指标,描述特征为系统带来信息量(熵),度量信息不确定性减少程度;若一特征带来信息量最大,最关键,会选作划分数据集特征 。
3.基于温度的划分  

temperature(温度)分支:  
- hot(炎热)【4 天】:结果 [yes, yes, no, no]  
- mild(温和)【6 天】:结果 [yes, yes, yes, yes, no, no]  
- cool(凉爽)【4 天】:结果 [yes, yes, yes, no]  

各子节点熵:  
Hot【4 天】的熵:-⅖ log₂⅖ - ⅖ log₂⅖ = 1.000  
Mild【6 天】的熵:-⅘ log₂⅘ - ⅖ log₂⅖ = 0.918  
Cool【4 天】的熵:-¾ log₂¾ - ¼ log₂¼ = 0.811  

熵值计算:4/14×1 + 6/14×0.918 + 4/14×0.811 = 0.911  
信息增益:0.940 - 0.911 = 0.029  
4.基于湿度的划分  

humidity(湿度)分支:  
- high(高湿度)【7 天】:结果 [yes, yes, no, no, no, no, no]  
- normal(正常湿度)【7 天】:结果 [yes, yes, yes, yes, yes, no, no]  

各子节点熵:  
High【7 天】的熵:-⅜ log₂⅜ - ⅝ log₂⅝ = 0.985  
Normal【7 天】的熵:-⅚ log₂⅚ - ⅙ log₂⅙ = 0.592  

熵值计算:7/14×0.985 + 7/14×0.592 = 0.789  
信息增益:0.940 - 0.789 = 0.151  
5.基于有风的划分  

windy(有风)分支:  
- false(无风)【8 天】:结果 [yes, yes, yes, yes, yes, no, no, no]  
- true(有风)【6 天】:结果 [yes, yes, no, no, no, no]  

各子节点熵:  
False【8 天】的熵:-⅞ log₂⅞ - ⅛ log₂⅛ = 0.811  
True【6 天】的熵:-½ log₂½ - ½ log₂½ = 1  

熵值计算:8/14×0.811 + 6/14×1 = 0.892  
信息增益:0.940 - 0.892 = 0.048  
综上:信息增益的大小:  
天气:0.247  
温度:0.029  
湿度:0.151(注:虽图中未单独列“湿度”计算过程,但结论包含该指标 )  
有风:0.048  

显然,信息增益最大的是:天气 > 湿度 > 有风 > 温度  


网站公告

今日签到

点亮在社区的每一天
去签到