赞
踩
1、设网球俱乐部有打球与气候条件的历史统计数据如下表1所示。它有“天气”、“气温”、“适度”和“风力”4个描述气候的条件属性,类别属性为“是”与“否”的二元取值,分别表示在当时的气候条件下是否适宜打球的两种类别。
样本id | 天气 | 温度 | 湿度 | 风力 | 类别 | 样本id | 天气 | 温度 | 湿度 | 风力 | 类别 |
---|---|---|---|---|---|---|---|---|---|---|---|
X 1 X_1 X1 | 晴 | 高 | 大 | 无 | 否 | X 8 X_8 X8 | 晴 | 中 | 大 | 无 | 否 |
X 2 X_2 X2 | 晴 | 高 | 大 | 无 | 否 | X 9 X_9 X9 | 晴 | 低 | 小 | 无 | 是 |
X 3 X_3 X3 | 云 | 高 | 大 | 无 | 是 | X 10 X_{10} X10 | 雨 | 中 | 小 | 无 | 是 |
X 4 X_4 X4 | 雨 | 中 | 大 | 无 | 是 | X 11 X_{11} X11 | 晴 | 中 | 小 | 有 | 是 |
X 5 X_5 X5 | 雨 | 低 | 小 | 无 | 是 | X 12 X_{12} X12 | 云 | 中 | 大 | 有 | 是 |
X 6 X_6 X6 | 雨 | 低 | 小 | 有 | 否 | X 13 X_{13} X13 | 云 | 高 | 小 | 无 | 是 |
X 7 X_7 X7 | 云 | 低 | 小 | 有 | 是 | X 14 X_{14} X14 | 雨 | 中 | 大 | 有 | 否 |
对 S S S 中的任意两个数据对象 X , Y X,Y X,Y,定义其在4个条件属性上的相异度为 d ( X , Y ) = ∑ j = 1 r δ ( x j , y j ) d(X,Y)=\sum_{j=1}^r\delta(x_j,y_j) d(X,Y)=j=1∑rδ(xj,yj) 其中 x j , y j x_j,y_j xj,yj 是数据对象 X , Y X,Y X,Y 的第 j j j 个分量值;如果 x j = y j x_j=y_j xj=yj, δ ( x j , y j ) = 0 \delta(x_j,y_j)=0 δ(xj,yj)=0,否则 δ ( x j , y j ) = 1 \delta(x_j,y_j)=1 δ(xj,yj)=1。
根据天气预报得知,后天的天气情况 X H = ( 雨、高、小、无 ) X_H=(雨、高、小、无) XH=(雨、高、小、无),若令,请用 k k k-最近邻分类算法预测后天是否适合打球。
解:
首先,计算相异度。根据提供的相异度定义,可以使用欧氏距离来计算相异度。欧氏距离的计算公式如下所示:
d
(
p
,
q
)
=
(
p
1
−
q
1
)
2
+
(
p
2
−
q
2
)
2
+
(
p
3
−
q
3
)
2
+
(
p
4
−
q
4
)
2
d(\mathbf{p}, \mathbf{q}) = \sqrt{(p_1 - q_1)^2 + (p_2 - q_2)^2 + (p_3 - q_3)^2 + (p_4 - q_4)^2}
d(p,q)=(p1−q1)2+(p2−q2)2+(p3−q3)2+(p4−q4)2
其中 ( p i p_i pi) 和 ( q i q_i qi) 分别是两个数据对象在第 ( i i i) 个属性上的取值。现在开始计算相异度。对于样本中的每个数据对象,将其表示为一个向量,其中每个分量对应于一个条件属性。然后,使用欧氏距离计算每对数据对象之间的相异度。接下来,将根据计算得到的相异度找出与后天天气情况最相似的 k 个样本,以进行预测。
计算后天天气情况(雨、高、小、无)与每个样本之间的相异度。现在,让计算后天天气情况(雨、高、小、无)与每个样本之间的相异度。使用欧氏距离公式来计算相异度:
d
(
p
,
q
)
=
(
p
1
−
q
1
)
2
+
(
p
2
−
q
2
)
2
+
(
p
3
−
q
3
)
2
+
(
p
4
−
q
4
)
2
d(\mathbf{p}, \mathbf{q}) = \sqrt{(p_1 - q_1)^2 + (p_2 - q_2)^2 + (p_3 - q_3)^2 + (p_4 - q_4)^2}
d(p,q)=(p1−q1)2+(p2−q2)2+(p3−q3)2+(p4−q4)2
其中,( p \mathbf{p} p) 表示后天天气情况,( q \mathbf{q} q) 表示样本数据中的每个数据对象。
后天天气情况为:天气=雨,温度=高,湿度=小,风力=无。现在,计算后天天气情况与每个样本之间的相异度。先将后天的天气情况表示为向量:
p
H
=
(
雨
,
高
,
小
,
无
)
\mathbf{p_{\text{H}}} = (雨, 高, 小, 无)
pH=(雨,高,小,无)
然后,逐个计算后天天气情况与每个样本之间的相异度。将每个样本的条件属性值代入欧氏距离公式中,并计算相异度。下面是计算结果:
d
(
p
H
,
q
1
)
=
(
雨
−
晴
)
2
+
(
高
−
高
)
2
+
(
小
−
大
)
2
+
(
无
−
无
)
2
=
1
2
+
0
2
+
1
2
+
0
2
=
2
≈
1.414
d
(
p
H
,
q
2
)
=
(
雨
−
晴
)
2
+
(
高
−
高
)
2
+
(
小
−
大
)
2
+
(
无
−
无
)
2
=
1
2
+
0
2
+
1
2
+
0
2
=
2
≈
1.414
d
(
p
H
,
q
3
)
=
(
雨
−
云
)
2
+
(
高
−
高
)
2
+
(
小
−
大
)
2
+
(
无
−
无
)
2
=
1
2
+
0
2
+
1
2
+
0
2
=
2
≈
1.414
d
(
p
H
,
q
4
)
=
(
雨
−
雨
)
2
+
(
高
−
中
)
2
+
(
小
−
大
)
2
+
(
无
−
无
)
2
=
0
2
+
1
2
+
1
2
+
0
2
=
2
≈
1.414
d
(
p
H
,
q
5
)
=
(
雨
−
雨
)
2
+
(
高
−
低
)
2
+
(
小
−
小
)
2
+
(
无
−
无
)
2
=
0
2
+
1
2
+
0
2
+
0
2
=
1
d
(
p
H
,
q
6
)
=
(
雨
−
雨
)
2
+
(
高
−
低
)
2
+
(
小
−
小
)
2
+
(
无
−
有
)
2
=
0
2
+
1
2
+
0
2
+
1
2
=
2
≈
1.414
d
(
p
H
,
q
7
)
=
(
雨
−
云
)
2
+
(
高
−
低
)
2
+
(
小
−
小
)
2
+
(
无
−
有
)
2
=
1
2
+
1
2
+
0
2
+
1
2
=
3
≈
1.732
d
(
p
H
,
q
8
)
=
(
雨
−
晴
)
2
+
(
高
−
中
)
2
+
(
小
−
大
)
2
+
(
无
−
无
)
2
=
1
2
+
1
2
+
1
2
+
0
2
=
3
≈
1.732
d
(
p
H
,
q
9
)
=
(
雨
−
晴
)
2
+
(
高
−
低
)
2
+
(
小
−
小
)
2
+
(
无
−
无
)
2
=
1
2
+
1
2
+
0
2
+
0
2
=
2
≈
1.414
d
(
p
H
,
q
10
)
=
(
雨
−
雨
)
2
+
(
高
−
中
)
2
+
(
小
−
小
)
2
+
(
无
−
无
)
2
=
0
2
+
1
2
+
0
2
+
0
2
=
1
d
(
p
H
,
q
11
)
=
(
雨
−
晴
)
2
+
(
高
−
中
)
2
+
(
小
−
小
)
2
+
(
无
−
有
)
2
=
1
2
+
1
2
+
0
2
+
1
2
=
2
≈
1.414
d
(
p
H
,
q
12
)
=
(
雨
−
云
)
2
+
(
高
−
中
)
2
+
(
小
−
大
)
2
+
(
无
−
有
)
2
=
1
2
+
1
2
+
1
2
+
1
2
=
2
d
(
p
H
,
q
13
)
=
(
雨
−
云
)
2
+
(
高
−
高
)
2
+
(
小
−
小
)
2
+
(
无
−
无
)
2
=
1
2
+
0
2
+
0
2
+
0
2
=
1
d
(
p
H
,
q
14
)
=
(
雨
−
雨
)
2
+
(
高
−
中
)
2
+
(
小
−
大
)
2
+
(
无
−
有
)
2
=
0
2
+
1
2
+
1
2
+
1
2
=
3
≈
1.732
d(pH,q1)=√(雨−晴)2+(高−高)2+(小−大)2+(无−无)2 =√12+02+12+02 =√2 ≈1.414 d(pH,q2)=√(雨−晴)2+(高−高)2+(小−大)2+(无−无)2 =√12+02+12+02 =√2 ≈1.414 d(pH,q3)=√(雨−云)2+(高−高)2+(小−大)2+(无−无)2 =√12+02+12+02 =√2 ≈1.414 d(pH,q4)=√(雨−雨)2+(高−中)2+(小−大)2+(无−无)2 =√02+12+12+02 =√2 ≈1.414d(pH,q5)=√(雨−雨)2+(高−低)2+(小−小)2+(无−无)2 =√02+12+02+02 =1d(pH,q6)=√(雨−雨)2+(高−低)2+(小−小)2+(无−有)2 =√02+12+02+12 =√2 ≈1.414d(pH,q7)=√(雨−云)2+(高−低)2+(小−小)2+(无−有)2 =√12+12+02+12 =√3 ≈1.732d(pH,q8)=√(雨−晴)2+(高−中)2+(小−大)2+(无−无)2 =√12+12+12+02 =√3 ≈1.732d(pH,q9)=√(雨−晴)2+(高−低)2+(小−小)2+(无−无)2 =√12+12+02+02 =√2 ≈1.414d(pH,q10)=√(雨−雨)2+(高−中)2+(小−小)2+(无−无)2 =√02+12+02+02 =1d(pH,q11)=√(雨−晴)2+(高−中)2+(小−小)2+(无−有)2 =√12+12+02+12 =√2 ≈1.414d(pH,q12)=√(雨−云)2+(高−中)2+(小−大)2+(无−有)2 =√12+12+12+12 =2d(pH,q13)=√(雨−云)2+(高−高)2+(小−小)2+(无−无)2 =√12+02+02+02 =1d(pH,q14)=√(雨−雨)2+(高−中)2+(小−大)2+(无−有)2 =√02+12+12+12 =√3 ≈1.732
接下来,找出与后天天气情况最相似的 k 个样本。
假设选择 k=3,即找出与后天天气情况最相似的三个样本。根据之前计算的相异度,可以列出相异度最小的三个样本。
样本 X 5 X_5 X5: 相异度为 1;样本 X 10 X_{10} X10: 相异度为 1;样本 X 13 X_{13} X13: 相异度为 1。因此,与后天天气情况最相似的三个样本是 X 5 X_5 X5、 X 10 X_{10} X10 和 X 13 X_{13} X13。
最后,将根据这三个样本的类别来预测后天是否适合打球。在这三个样本中,类别为“是”,所以可以预测后天适合打球。
2、设有动物分类样本集如下表2,其中是否温血、有无羽毛、有无毛皮、会否游泳为条件属性,卵生动物类别属性,取值1表示该动物为卵生动物,0表示非卵生动物。试用ID3算法对样本集进行学习并生成其决策树,再由决策树获得动物的分类规则。
动物id | 是否温血 | 有无羽毛 | 有无毛皮 | 会否游泳 | 是否卵生 |
---|---|---|---|---|---|
X 1 X_1 X1 | 1 | 1 | 0 | 0 | 1 |
X 2 X_2 X2 | 0 | 0 | 0 | 1 | 1 |
X 3 X_3 X3 | 1 | 1 | 0 | 0 | 1 |
X 4 X_4 X4 | 1 | 1 | 0 | 0 | 1 |
X 5 X_5 X5 | 1 | 0 | 0 | 1 | 0 |
X 6 X_6 X6 | 1 | 0 | 1 | 0 | 0 |
解:
第一步:选择 S S S 增益最大的属性构造决策树的根结点。
(1)计算分类属性 C C C 的分类信息熵
已知 S = { X 1 , X 2 , … , X 6 } S=\{X_1,X_2,…,X_6\} S={X1,X2,…,X6}共有6个样本点,故 ∣ S ∣ = 6 |S|=6 ∣S∣=6,而分类属性 C = { 1 , 0 } = { C 1 , C 2 } C=\{1, 0\}=\{C_1,C_2\} C={1,0}={C1,C2},即 C 1 C_1 C1 为 “1” 是卵生动物, C 2 C_2 C2 为 “0” 是非卵生动物, C 1 = { X 1 , X 2 , X 3 , X 4 } C_1=\{X_1, X_2, X_3, X_4\} C1={X1,X2,X3,X4}, C 2 = { X 5 , X 6 } C_2=\{X_5, X_6\} C2={X5,X6}。
根据信息熵公式有 E ( S , C ) = − ∑ i = 1 2 ∣ C i ∣ ∣ S ∣ log 2 ∣ C i ∣ ∣ S ∣ = − ( 4 6 log 2 4 6 + 2 6 log 2 2 6 ) ≈ 0.918 E(S,C)=-\sum_{i=1}^{2}\frac{|C_i|}{|S|}\log_2\frac{|C_i|}{|S|}=-\left(\frac{4}{6}\log_2\frac{4}{6}+\frac{2}{6}\log_2\frac{2}{6}\right) \approx 0.918 E(S,C)=−i=1∑2∣S∣∣Ci∣log2∣S∣∣Ci∣=−(64log264+62log262)≈0.918
(2)计算每个条件属性 A A A 相对 C C C 的信息熵
样本集 S S S 有是否温血、有无羽毛、有无毛皮、会否游泳等4个条件属性,因此,应分别计算它们相对 C C C 的分类信息熵。
① 当 A 1 A_1 A1=“是否温血” 时,属性 A 1 A_1 A1 将 S S S 划分为 S 1 = { X 1 , X 3 , X 4 , X 5 , X 6 } S_1=\{X_1, X_3, X_4, X_5, X_6\} S1={X1,X3,X4,X5,X6}, S 2 = { X 2 } S_2=\{X_2\} S2={X2}。
因为 C 1 ∩ S 1 = { X 1 , X 3 , X 4 } C_1\cap S_1 =\{X_1, X_3,X_4\} C1∩S1={X1,X3,X4}, C 2 ∩ S 1 = { X 5 , X 6 } C_2\cap S_1=\{X_5, X_6\} C2∩S1={X5,X6},根据信息熵公式有 E ( S 1 , C ) = − ∑ i = 1 2 ∣ C i ∩ S 1 ∣ ∣ S 1 ∣ log 2 ( ∣ C i ∩ S 1 ∣ ∣ S 1 ∣ ) = − ( 3 5 log 2 3 5 + 2 5 log 2 2 5 ) ≈ 0.971 E(S_1,C)=-\sum_{i=1}^{2}\frac{|C_i\cap S_1|}{|S_1|}\log_2\left(\frac{|C_i\cap S_1|}{|S_1|}\right)=-\left(\frac{3}{5}\log_2\frac{3}{5}+\frac{2}{5}\log_2\frac{2}{5}\right) \approx 0.971 E(S1,C)=−i=1∑2∣S1∣∣Ci∩S1∣log2(∣S1∣∣Ci∩S1∣)=−(53log253+52log252)≈0.971 同理有 C 1 ∩ S 2 = { X 2 } C_1\cap S_2 =\{X_2\} C1∩S2={X2}, C 2 ∩ S 2 = ∅ C_2\cap S_2=\varnothing C2∩S2=∅,根据信息熵公式有 E ( S 2 , C ) = − ∑ i = 1 2 ∣ C i ∩ S 2 ∣ ∣ S 2 ∣ log 2 ( ∣ C i ∩ S 2 ∣ ∣ S 2 ∣ ) = − ( 1 1 log 2 1 1 + 0 1 log 2 0 1 ) = 0 E(S_2,C)=-\sum_{i=1}^{2}\frac{|C_i\cap S_2|}{|S_2|}\log_2\left(\frac{|C_i\cap S_2|}{|S_2|}\right)=-\left(\frac{1}{1}\log_2\frac{1}{1}+\frac{0}{1}\log_2\frac{0}{1}\right)=0 E(S2,C)=−i=1∑2∣S2∣∣Ci∩S2∣log2(∣S2∣∣Ci∩S2∣)=−(11log211+10log210)=0 条件属性 A 1 A_1 A1 划分样本集 S S S 相对于 C C C 的信息熵为 E ( S , A 1 ∣ C ) = ∑ j = 1 2 ∣ S j ∣ ∣ S ∣ E ( S j , C ) = ∣ S 1 ∣ ∣ S ∣ E ( S 1 , C ) + ∣ S 2 ∣ ∣ S ∣ E ( S 2 , C ) = 5 6 × 0.971 + 1 6 × 0 ≈ 0.809 E(S,A_1|C)=\sum_{j=1}^{2}\frac{|S_j|}{|S|}E(S_j,C)=\frac{|S_1|}{|S|}E(S_1,C)+\frac{|S_2|}{|S|}E(S_2,C)=\frac{5}{6}\times0.971+\frac{1}{6}\times0\approx0.809 E(S,A1∣C)=j=1∑2∣S∣∣Sj∣E(Sj,C)=∣S∣∣S1∣E(S1,C)+∣S∣∣S2∣E(S2,C)=65×0.971+61×0≈0.809
② 当 A 2 A_2 A2=“有无羽毛” 时,属性 A 2 A_2 A2 将 S S S 划分为 S 1 = { X 1 , X 3 , X 4 } S_1=\{X_1, X_3, X_4\} S1={X1,X3,X4}, S 2 = { X 2 , X 5 , X 6 } S_2=\{X_2, X_5, X_6\} S2={X2,X5,X6}。
因为 C 1 ∩ S 1 = { X 1 , X 3 , X 4 } C_1\cap S_1 =\{X_1, X_3,X_4\} C1∩S1={X1,X3,X4}, C 2 ∩ S 1 = ∅ C_2\cap S_1=\varnothing C2∩S1=∅,根据信息熵公式有 E ( S 1 , C ) = − ∑ i = 1 2 ∣ C i ∩ S 1 ∣ ∣ S 1 ∣ log 2 ( ∣ C i ∩ S 1 ∣ ∣ S 1 ∣ ) = − ( 3 3 log 2 3 3 + 0 3 log 2 0 3 ) = 0 E(S_1,C)=-\sum_{i=1}^{2}\frac{|C_i\cap S_1|}{|S_1|}\log_2\left(\frac{|C_i\cap S_1|}{|S_1|}\right)=-\left(\frac{3}{3}\log_2\frac{3}{3}+\frac{0}{3}\log_2\frac{0}{3}\right)=0 E(S1,C)=−i=1∑2∣S1∣∣Ci∩S1∣log2(∣S1∣∣Ci∩S1∣)=−(33log233+30log230)=0 同理有 C 1 ∩ S 2 = { X 2 } C_1\cap S_2 =\{X_2\} C1∩S2={X2}, C 2 ∩ S 2 = { X 5 , X 6 } C_2\cap S_2=\{X_5,X_6\} C2∩S2={X5,X6},根据信息熵公式有 E ( S 2 , C ) = − ∑ i = 1 2 ∣ C i ∩ S 2 ∣ ∣ S 2 ∣ log 2 ( ∣ C i ∩ S 2 ∣ ∣ S 2 ∣ ) = − ( 1 3 log 2 1 3 + 2 3 log 2 2 3 ) ≈ 0.918 E(S_2,C)=-\sum_{i=1}^{2}\frac{|C_i\cap S_2|}{|S_2|}\log_2\left(\frac{|C_i\cap S_2|}{|S_2|}\right)=-\left(\frac{1}{3}\log_2\frac{1}{3}+\frac{2}{3}\log_2\frac{2}{3}\right) \approx 0.918 E(S2,C)=−i=1∑2∣S2∣∣Ci∩S2∣log2(∣S2∣∣Ci∩S2∣)=−(31log231+32log232)≈0.918 条件属性 A 2 A_2 A2 划分样本集 S S S 相对于 C C C 的信息熵为 E ( S , A 2 ∣ C ) = ∑ j = 1 2 ∣ S j ∣ ∣ S ∣ E ( S j , C ) = ∣ S 1 ∣ ∣ S ∣ E ( S 1 , C ) + ∣ S 2 ∣ ∣ S ∣ E ( S 2 , C ) = 3 6 × 0 + 3 6 × 0.918 = 0.459 E(S,A_2|C)=\sum_{j=1}^{2}\frac{|S_j|}{|S|}E(S_j,C)=\frac{|S_1|}{|S|}E(S_1,C)+\frac{|S_2|}{|S|}E(S_2,C)=\frac{3}{6}\times0+\frac{3}{6}\times0.918=0.459 E(S,A2∣C)=j=1∑2∣S∣∣Sj∣E(Sj,C)=∣S∣∣S1∣E(S1,C)+∣S∣∣S2∣E(S2,C)=63×0+63×0.918=0.459
③ 当 A 3 A_3 A3=“有无毛皮” 时,属性 A 3 A_3 A3 将 S S S 划分为 S 1 = { X 6 } S_1=\{X_6\} S1={X6}, S 2 = { X 1 , X 2 , X 3 , X 4 , X 5 } S_2=\{X_1, X_2,X_3, X_4,X_5\} S2={X1,X2,X3,X4,X5}。
同理可得, E ( S 1 , C ) = 0 E(S_1,C)=0 E(S1,C)=0, E ( S 2 , C ) ≈ 0.722 E(S_2,C)\approx 0.722 E(S2,C)≈0.722, E ( S , A 3 ∣ C ) ≈ 0.241 E(S,A_3|C)\approx0.241 E(S,A3∣C)≈0.241
④ 当 A 4 A_4 A4=“会否游泳” 时,属性 A 4 A_4 A4 将 S S S 划分为 S 1 = { X 2 , X 5 } S_1=\{X_2,X_5\} S1={X2,X5}, S 2 = { X 1 , X 3 , X 4 , X 6 } S_2=\{X_1,X_3, X_4,X_6\} S2={X1,X3,X4,X6}。
同理可得, E ( S 1 , C ) = 1 E(S_1,C)=1 E(S1,C)=1, E ( S 2 , C ) ≈ 0.811 E(S_2,C)\approx0.811 E(S2,C)≈0.811, E ( S , A 4 ∣ C ) = 0.874 E(S,A_4|C)=0.874 E(S,A4∣C)=0.874
(3)计算每个属性 A A A 的信息增益
根据公式 g a i n ( S , A ∣ C ) = E ( S , C ) − E ( S , A ∣ C ) gain(S,A|C)=E(S,C)-E(S,A|C) gain(S,A∣C)=E(S,C)−E(S,A∣C) 可得
① 是否温血: g a i n ( S , A 1 ∣ C ) = 0.918 − 0.809 = 0.109 gain(S,A_1|C)=0.918-0.809=0.109 gain(S,A1∣C)=0.918−0.809=0.109
② 有无羽毛: g a i n ( S , A 2 ∣ C ) = 0.918 − 0.459 = 0.459 gain(S,A_2|C)=0.918-0.459=0.459 gain(S,A2∣C)=0.918−0.459=0.459
③ 有无毛皮: g a i n ( S , A 3 ∣ C ) = 0.918 − 0.241 = 0.677 gain(S,A_3|C)=0.918-0.241=0.677 gain(S,A3∣C)=0.918−0.241=0.677
④ 会否游泳: g a i n ( S , A 4 ∣ C ) = 0.918 − 0.874 = 0.044 gain(S,A_4|C)=0.918-0.874=0.044 gain(S,A4∣C)=0.918−0.874=0.044
因此,最大增益的属性为“有无毛皮”,即以“有无毛皮”作为根节点,并以“有无毛皮”划分 S S S 所得子集 S 1 S_1 S1, S 2 S_2 S2。
第二步:选择 S 2 S_2 S2 中增益最大的属性作为“有无毛皮”的子女结点,即选择属性“有无羽毛”。
第三步:选择 S 2 S_2 S2 中增益最大的属性作为“有无羽毛”的子女结点,即选择属性“是否温血”。
最终,得到样本集的决策树,如下图所示。
3、设网球俱乐部有打网球与气候条件的历史统计数据(如下表3)。它共有“天气”、“温度”、“湿度”和“风力”4个描述气候的条件属性,其中“湿度”为连续属性,类别属性为“是”与“否”的二元取值,分别表示在当时的气候条件下是否适宜打球的两种类别。假设湿度离散化为高中低三个等级,湿度值<75被认为湿度为低,湿度>85被认为湿度为高,其他情况湿度为中。请用C4.5算法构造关于气候条件与是否适宜打球的决策树。
样本id | 天气 | 温度 | 湿度 | 风力 | 类别 | 样本id | 天气 | 温度 | 湿度 | 风力 | 类别 |
---|---|---|---|---|---|---|---|---|---|---|---|
X 1 X_1 X1 | 晴 | 高 | 95 | 无 | 否 | X 8 X_8 X8 | 晴 | 中 | 85 | 无 | 否 |
X 2 X_2 X2 | 晴 | 高 | 90 | 无 | 否 | X 9 X_9 X9 | 晴 | 低 | 70 | 无 | 是 |
X 3 X_3 X3 | 云 | 高 | 85 | 无 | 是 | X 10 X_{10} X10 | 雨 | 中 | 75 | 无 | 是 |
X 4 X_4 X4 | 雨 | 中 | 80 | 无 | 是 | X 11 X_{11} X11 | 晴 | 中 | 70 | 有 | 是 |
X 5 X_5 X5 | 雨 | 低 | 75 | 无 | 是 | X 12 X_{12} X12 | 云 | 中 | 80 | 有 | 是 |
X 6 X_6 X6 | 雨 | 低 | 70 | 有 | 否 | X 13 X_{13} X13 | 云 | 高 | 75 | 无 | 是 |
X 7 X_7 X7 | 云 | 低 | 65 | 有 | 是 | X 14 X_{14} X14 | 雨 | 中 | 78 | 有 | 否 |
解:
首先,需要计算每个属性的信息增益,以选择最有用的属性作为根节点。以下是计算信息增益的步骤:
第一步,计算数据集的熵 H ( D ) H(D) H(D): H ( D ) = − ( P Y log 2 P Y + P N log 2 P N ) H(D)=-(P_Y\log_2P_Y+P_N\log_2P_N) H(D)=−(PYlog2PY+PNlog2PN) 其中, P Y P_Y PY为类别为“是”的样本占比, P N P_N PN为类别为“否”的样本占比。
根据样本数据, P Y = 9 14 , P N = 5 14 P_Y=\frac{9}{14},P_N=\frac{5}{14} PY=149,PN=145,因此: H ( D ) = − ( 9 14 log 2 9 14 + 5 14 log 2 5 14 ) ≈ 0.940 H(D)=-\left(\frac{9}{14}\log_2\frac{9}{14}+\frac{5}{14}\log_2\frac{5}{14}\right)\approx0.940 H(D)=−(149log2149+145log2145)≈0.940
第二步,对于每个属性 A A A,计算其条件熵 H ( D ∣ A ) H(D|A) H(D∣A): H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) H(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i) H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)
其中, n n n为属性 A A A的取值数, ∣ D i ∣ |D_i| ∣Di∣为样本集中属性 A A A取值为第 i i i个取值的样本数量, H ( D i ) H(D_i) H(Di)为属性 A A A取值为第 i i i个取值时的样本的熵。对于离散属性, H ( D i ) H(D_i) H(Di)可以根据与属性 A A A的取值相对应的样本计算得出,对于连续属性,需要先对其进行离散化处理。对于本题,我们需要对湿度进行离散化处理。
根据题目要求,湿度离散化为高中低三个等级,湿度值<75被认为湿度为低,湿度>85被认为湿度为高,其他情况湿度为中。因此,可以将样本集中湿度小于75的样本归为“低"类,湿度大于85的样本归为“高"类,其余样本归为“中”类。
对于其他属性,可以直接计算条件熵。以下是每个属性的条件熵计算公式:
① 天气:
H
(
D
∣
天气
)
=
5
14
H
(
D
1
)
+
4
14
H
(
D
2
)
+
5
14
H
(
D
3
)
H(D|天气)=\frac{5}{14}H(D_1)+\frac{4}{14}H(D_2)+\frac{5}{14}H(D_3)
H(D∣天气)=145H(D1)+144H(D2)+145H(D3) 其中,
D
1
D_1
D1为天气为“晴”的样本集,
D
2
D_2
D2为天气为“云”的样本集,
D
3
D_3
D3为天气为“雨”的样本集。
H
(
D
1
)
=
−
(
2
5
log
2
2
5
+
3
5
log
2
3
5
)
≈
0.971
H
(
D
2
)
=
−
(
4
4
log
2
4
4
+
0
4
log
2
0
4
)
=
0
H
(
D
3
)
=
−
(
3
5
log
2
3
5
+
2
5
log
2
2
5
)
≈
0.971
H(D1)=−(25log225+35log235)≈0.971H(D2)=−(44log244+04log204)=0H(D3)=−(35log235+25log225)≈0.971
② 温度:
H
(
D
∣
温度
)
=
4
14
H
(
D
1
)
+
4
14
H
(
D
2
)
+
6
14
H
(
D
3
)
H(D|温度)=\frac{4}{14}H(D_1)+\frac{4}{14}H(D_2)+\frac{6}{14}H(D_3)
H(D∣温度)=144H(D1)+144H(D2)+146H(D3) 其中,
D
1
D_1
D1为温度为“高”的样本集,
D
2
D_2
D2为温度为“中”的样本集,
D
3
D_3
D3为温度为“低”的样本集。
H
(
D
1
)
=
−
(
2
4
log
2
2
4
+
2
4
log
2
2
4
)
=
1
H
(
D
2
)
=
−
(
4
6
log
2
4
6
+
2
6
log
2
2
6
)
≈
0.918
H
(
D
3
)
=
−
(
3
4
log
2
3
4
+
1
4
log
2
1
4
)
≈
0.811
H(D1)=−(24log224+24log224)=1H(D2)=−(46log246+26log226)≈0.918H(D3)=−(34log234+14log214)≈0.811
③ 湿度: H ( D ∣ 湿度 ) = 4 14 H ( D 1 ) + 8 14 H ( D 2 ) + 2 14 H ( D 3 ) H(D|湿度)=\frac{4}{14}H(D_1)+\frac{8}{14}H(D_2)+\frac{2}{14}H(D_3) H(D∣湿度)=144H(D1)+148H(D2)+142H(D3) 其中, D 1 D_1 D1为湿度为“低”的样本集, D 2 D_2 D2为湿度为“中”的样本集, D 3 D_3 D3为湿度为“高”的样本集。
同理可得, H ( D 1 ) ≈ 0.811 H(D_1)\approx0.811 H(D1)≈0.811; H ( D 2 ) ≈ 0.811 H(D_2)\approx0.811 H(D2)≈0.811; H ( D 3 ) = 0 H(D_3)=0 H(D3)=0, H ( D ∣ 湿度 ) ≈ 0.695 H(D|湿度)\approx0.695 H(D∣湿度)≈0.695
④ 风力: H ( D ∣ 风力 ) = 9 14 H ( D 1 ) + 5 14 H ( D 2 ) H(D|风力)=\frac{9}{14}H(D_1)+\frac{5}{14}H(D_2) H(D∣风力)=149H(D1)+145H(D2) 其中, D 1 D_1 D1为风力为“无”的样本集, D 2 D_2 D2为风力为“有”的样本集。
同理可得, H ( D 1 ) ≈ 0.918 H(D_1)\approx0.918 H(D1)≈0.918; H ( D 2 ) ≈ 0.971 H(D_2)\approx0.971 H(D2)≈0.971, H ( D ∣ 风力 ) ≈ 0.937 H(D|风力)\approx0.937 H(D∣风力)≈0.937
第三步,计算每个属性的信息增益 g a i n ( D , A ) gain(D,A) gain(D,A): g a i n ( D , A ) = H ( D ) − H ( D ∣ A ) gain(D,A)=H(D)-H(D|A) gain(D,A)=H(D)−H(D∣A) 每个属性的信息增益结果如下:
① 天气: g a i n ( D , 天气 ) ≈ 0.246 gain(D,天气)\approx0.246 gain(D,天气)≈0.246
② 温度: g a i n ( D , 温度 ) ≈ 0.029 gain(D,温度)\approx0.029 gain(D,温度)≈0.029
③ 湿度: g a i n ( D , 湿度 ) ≈ 0.245 gain(D,湿度)\approx0.245 gain(D,湿度)≈0.245
④ 风力: g a i n ( D , 风力 ) ≈ 0.003 gain(D,风力)\approx0.003 gain(D,风力)≈0.003
第四步,计算每个属性的信息增益率。
① 天气: g a i n R a t i o ( D , 天气 ) = g a i n ( D , 天气 ) / H ( D ∣ 天气 ) ≈ 0.156 gainRatio(D,天气)=gain(D,天气)/H(D|天气)\approx0.156 gainRatio(D,天气)=gain(D,天气)/H(D∣天气)≈0.156
② 温度: g a i n R a t i o ( D , 温度 ) = g a i n ( D , 温度 ) / H ( D ∣ 温度 ) ≈ 0.019 gainRatio(D,温度)=gain(D,温度)/H(D|温度)\approx0.019 gainRatio(D,温度)=gain(D,温度)/H(D∣温度)≈0.019
③ 湿度: g a i n R a t i o ( D , 湿度 ) = g a i n ( D , 湿度 ) / H ( D ∣ 湿度 ) ≈ 0.415 gainRatio(D,湿度)=gain(D,湿度)/H(D|湿度)\approx0.415 gainRatio(D,湿度)=gain(D,湿度)/H(D∣湿度)≈0.415
④ 风力: g a i n R a t i o ( D , 风力 ) = g a i n ( D , 风力 ) / H ( D ∣ 风力 ) ≈ 0.003 gainRatio(D,风力)=gain(D,风力)/H(D|风力)\approx0.003 gainRatio(D,风力)=gain(D,风力)/H(D∣风力)≈0.003
因此,选择信息增益率最大的属性“湿度”作为根节点。将样本集按照湿度的取值划分为三个子集,分别为湿度为“低”的子集 D 1 D_1 D1,湿度为“中”的子集 D 2 D_2 D2,湿度为“高”的子集 D 3 D_3 D3。
第五步,对于每个子集,继续选择最有用的属性作为划分依据,构造子树。以下是构造子树的过程:
至此,我们已经得到了一棵完整的决策树,可以用于对新样本进行分类。其中,“高”、“中”、“低”表示湿度的不同取值,“有”、“无”表示风力的不同取值,叶子节点的标记“是”表示适宜打球,“否”表示不适宜打球。
4、设有4个属性14条记录的数据库(如下表4),它记录了顾客身份、年龄、收入和信用等级等个人信息,以及前来商店咨询电脑事宜,其中“电脑”属性标记了一个顾客咨询结束后买了电脑,或者没买就直接离开商店的信息。
样本id | 学生 | 年龄 | 收入 | 信用 | 电脑 | 样本id | 学生 | 年龄 | 收入 | 信用 | 电脑 |
---|---|---|---|---|---|---|---|---|---|---|---|
X 1 X_1 X1 | 否 | ≤30岁 | 高 | 一般 | 否 | X 8 X_8 X8 | 否 | ≤30岁 | 中 | 一般 | 否 |
X 2 X_2 X2 | 否 | ≤30岁 | 高 | 优等 | 否 | X 9 X_9 X9 | 是 | ≤30岁 | 低 | 一般 | 是 |
X 3 X_3 X3 | 否 | 31~40岁 | 高 | 一般 | 是 | X 10 X_{10} X10 | 是 | ≥41岁 | 中 | 一般 | 是 |
X 4 X_4 X4 | 否 | ≥41岁 | 中 | 一般 | 是 | X 11 X_{11} X11 | 是 | ≥41岁 | 中 | 优等 | 是 |
X 5 X_5 X5 | 是 | ≥41岁 | 低 | 一般 | 是 | X 12 X_{12} X12 | 否 | 31~40岁 | 中 | 优等 | 是 |
X 6 X_6 X6 | 是 | ≥41岁 | 低 | 优等 | 否 | X 13 X_{13} X13 | 是 | 31~40岁 | 高 | 一般 | 是 |
X 7 X_7 X7 | 是 | 31~40岁 | 低 | 优等 | 是 | X 14 X_{14} X14 | 否 | ≥41岁 | 中 | 优等 | 否 |
现在来了一位新顾客 X = ( 学生 = 是 , 年龄 ≤ 30 岁 , 收入等 = 中等 , 信用 = 一般 ) X=(学生=是, 年龄≤30岁, 收入等=中等, 信用=一般) X=(学生=是,年龄≤30岁,收入等=中等,信用=一般),试用贝叶斯分类方法,预测顾客 X X X 是否会买电脑。
解:
现在来了一位新顾客 X = ( 学生 = 是 , 年龄 ≤ 30 岁 , 收入 = 中等 , 信用 = 一般 ) X=(学生=是,年龄≤30岁,收入=中等,信用=一般) X=(学生=是,年龄≤30岁,收入=中等,信用=一般),试用贝叶斯分类方法,预测顾客 X X X是否会买电脑。
首先,需要计算先验概率和条件概率。先验概率指的是在没有任何其他信息的情况下,某个事件发生的概率。在这个例子中,需要计算电脑被购买的先验概率和电脑不被购买的先验概率。
设电脑被购买的先验概率为
P
(
电脑
=
是
)
P(电脑=是)
P(电脑=是),电脑不被购买的先验概率为
P
(
电脑
=
否
)
P(电脑=否)
P(电脑=否)。
根据样本数据,电脑被购买的样本数为9,电脑不被购买的样本数为5,因此:
P
(
电脑
=
是
)
=
9
14
=
0.64
P(电脑=是)=\frac{9}{14}=0.64
P(电脑=是)=149=0.64
P
(
电脑
=
否
)
=
5
14
=
0.36
P(电脑=否)=\frac{5}{14}=0.36
P(电脑=否)=145=0.36
条件概率指的是在已知某些条件的情况下,某个事件发生的概率,在这个例子中,我们需要计算在已知学生、年龄、收入和信用等级的情况下,顾客购买电脑的条件概率。
设学生为 S S S,年龄为 A A A,收入为 l l l,信用为 C C C,电脑为 B B B,则需要计算以下条件概率: P ( B = 是 ∣ S = 是 , A ≤ 30 岁 , l = 中等 , C = 一般 ) P(B=是|S=是,A≤30岁,l=中等,C=一般) P(B=是∣S=是,A≤30岁,l=中等,C=一般)
根据贝叶斯公式,条件概率可以计算为: P ( B = 是 ∣ S = 是 , A ≤ 30 岁 , l = 中等 , C = 一般 ) = P ( S = 是 , A ≤ 30 岁 , l = 中等 , C = 一般 ∣ B = 是 ) ⋅ P ( B = 是 ) P ( S = 是 , A ≤ 30 岁 , l = 中等 , C = 一般 ) P(B=是|S=是,A≤30岁,l=中等,C=一般)= \frac{P(S=是,A≤30岁,l=中等,C=一般|B=是)\cdot P(B=是)}{P(S=是,A≤30岁,l=中等,C=一般)} P(B=是∣S=是,A≤30岁,l=中等,C=一般)=P(S=是,A≤30岁,l=中等,C=一般)P(S=是,A≤30岁,l=中等,C=一般∣B=是)⋅P(B=是)
为了计算条件概率,需要计算三个概率值:
① P ( S = 是 , A ≤ 30 岁 , l = 中等 , C = 一般 ∣ B = 是 ) P(S=是,A≤30岁,l=中等,C=一般|B=是) P(S=是,A≤30岁,l=中等,C=一般∣B=是):在电脑被购买的情况下,学生为是、年龄≤30岁、收入为中等、信用为一般的条件概率。 P ( S = 是 , A ≤ 30 岁 , l = 中等 , C = 一般 ∣ B = 是 ) = 1 9 = 0.11 P(S=是,A≤30岁,l=中等,C=一般|B=是)= \frac{1}{9}=0.11 P(S=是,A≤30岁,l=中等,C=一般∣B=是)=91=0.11
② P ( B = 是 ) P(B=是) P(B=是):电脑被购买的先验概率。已知先验概率为0.64。
③ P ( S = 是 , A ≤ 30 岁 , l = 中等 , C = 一般 ) P(S=是,A≤30岁,l=中等,C=一般) P(S=是,A≤30岁,l=中等,C=一般):学生为是、年龄≤30岁、收入为中等、信用为一般的概率。根据样本数据,学生为是、年龄≤30岁、收入为中等、信用为一般的样本数为1,因此: P ( S = 是 , A ≤ 30 岁 , l = 中等 , C = 一般 ) = 1 14 = 0.07 P(S=是,A≤30岁,l=中等,C=一般)=\frac{1}{14}=0.07 P(S=是,A≤30岁,l=中等,C=一般)=141=0.07
现在,可以使用贝叶斯公式,计算条件概率:
P
(
B
=
是
∣
S
=
是
,
A
≤
30
岁
,
l
=
中等
,
C
=
一般
)
=
P
(
S
=
是
,
A
≤
30
岁
,
l
=
中等
,
C
=
一般
∣
B
=
是
)
⋅
P
(
B
=
是
)
P
(
S
=
是
,
A
≤
30
岁
,
l
=
中等
,
C
=
一般
)
=
0.11
×
0.64
0.07
=
1.00
P(B=是|S=是,A≤30岁,l=中等,C=一般)=P(S=是,A≤30岁,l=中等,C=一般|B=是)⋅P(B=是)P(S=是,A≤30岁,l=中等,C=一般)=0.11×0.640.07=1.00
因此,根据贝叶斯分类方法,顾客 X X X购买电脑的条件概率为1,即预测顾客 X X X会买电脑。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。