标题:决策树
概念:决策树通过对训练样本的学习,建立分类规则,依据规则对新样本数据分类预测,属于有监督学习。
“有监督:x,y
无监督 x”。
核心:所有数据从根节点一步步落到叶子节点 。
由于决策数,它是根据一个特征来进行输出的,所以它要比逻辑回归、线性回归还有 KN 算法它们的执行的速度都要快。或者说不是说是根据一个特征,或者说有五个特征,如果有一个特征它符合要求,那就给它输出,但是之前的逻辑回归线性回归 n 算法。都是。有很多特征,或者有很多 x 值,然后都符合才行,所以它就是这个方面的不一样的点。
根节点: 第一个节点。
非叶子节点: 中间节点。
叶子节点: 最终结果节点。
需要考虑的问题:
- 哪个节点作为根节点?哪些节点作为中间节点?哪些节点作为叶子节点?
- 节点如何分裂?
- 节点分裂标准的依据?
决策树分类标准相关,包括:
- ID3 算法
- C4.5 算法
- 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
显然,信息增益最大的是:天气 > 湿度 > 有风 > 温度