5.考虑如下二元分类问题的数据集。
a. 计算按照属性A和属性B划分时的属性增益。决策树归纳算法将会选择哪个属性?
属性A和属性B的不测事件表如下:
划分前的总熵为:Eorig=-0.4log20.4-0.6log20.6=0.9710
按照属性A划分后的信息增益为:
EA=T=-(4/7)×log2(4/7)-(3/7)×log2(3/7)=0.9852
EA=F=-(3/3)×log2(3/3)-(0)×log2(0)=0
Δ=Eorig-7/10×EA=T-3/10×EA=F=0.2813
按照属性B划分后的信息增益为:
因此选择属性A来划分结点。
b. 计算按照属性A和属性B划分时的Gini指标。决策树归纳算法将会选择哪个属性?
总的Gini指数为:Gorig = 1− 0.42 − 0.62 = 0.48
属性A的Gini增益为:
GA=T=1-(4/7)2-(3/7)2=0.4898
GA=F=1-(3/3)2-(0/3)2=0
ΔA= Gorig -7/10*GA=T-3/10*GA=F=0.1371
同理ΔB=0.1633.
因此选择属性B来划分结点。
b.从图4-13可以看出熵和Gini指标在区间[0,0.5]都是单调的,而在[0.5,1]之间时单调递减的。有没有可能信息增益和Gini指标支持不同的属性?解释你的理由。
是的,尽管这些度量具有相似的范围和单调的行为,但它们各自的增益,即度量的标度差,并不一定以相同的方式表现,如(a)和(b)部分的结果所示。
6.考虑如下训练样本集:
a.用之前介绍的贪心算法计算两层的决策树。使用分类差错率作为划分标准。决策树的总差错率是多少?
第一层的划分属性:
为了确定根节点的测试条件,我们需要确定属性X、Y、和Z的差错率。属性X的相应计数为:
属性Y的相应计数为:
属性Z的相应计数为:
Z的差错率最低,选择Z作为第一层的划分属性.
第二层的属性划分:
在确定第一层划分属性Z后,接下来的测试条件包含X或Y,这取决于服从于Z=0和Z=1子节点的训练样本集。
Z=0时,X和Y的相应计数是一样的,如下表。
Z=1时,X和Y的相应计数为:
两层决策树如下图。
Z=0时,决策C2,Z=1时,决策C1.第一层。
X或Y=0时,决策C2,X或Y=1时,决策C1.第二层。
b.使用X作为第一个划分属性,两个后继节点分别在剩余的属性中选择最佳划分属性,重复步骤(a).所构造的决策树的差错率是多少?
选择X作为第一个划分属性,下一个结点的划分属性要么是Y要么是Z。
X=0时,Y和Z的相应计数如下表:
选择Y作为下一结点的划分属性。
X=1时,Y和Z的相应计数分别如下表:
选择属性Y作为下一结点的划分属性。相应的两层决策树如下:
c.比较a,b的结果,评述在划分属性上启发式贪心算法的作用。
从前面的结果来看,(a)部分的错误率明显大于(b)部分的错误率。这个例子表明贪婪的启发式并不总是产生一个最优的解决方案。
7.下表汇总了具有三个属性A,B,C,以及两个类标号+ ,-的数据集。建立一棵两层决策树。
a.根据分类差错率,哪个属性应当选做第一层划分属性?对每个属性,给出相依表和分类差错率的增益。
未根据任何属性划分记录时的差错率为:Eorig=1-max{50/100.50/100}=0.5
根据属性A划分时:
根据属性B划分时:
根据属性B划分时:
应该选择属性A作为第一层划分属性,因为A有最大增益。
b.对根结点的两个子女结点重复以上问题。
因为A=T子节点是纯节点,所以不需要进一步拆分。对于A=F子节点,训练实例的分布为:
根据属性B划分时的差错率增益为:
根据属性C划分时:
选择属性B进行划分。
c.最终决策树的错误分类的实例数是多少?
20
d.使用C作为划分属性,重复a,b,c。
(1)C=T子结点的差错率为:Eorig = 25/50
下一层根据属性A划分后的差错率增益为:
下一层根据属性B划分后的差错率增益为:
因此,选择属性A划分
(2)对于C=F子结点,划分前的错误率为:Eorig=25/50。
在属性A上划分后,错误率增益为:
在属性B上划分后,错误率为:
因此,B用作划分属性。决策树的总错误率为0。
e.使用c,d结果分析决策树归纳算法贪心的本质。
贪婪的启发式不一定能得到最好的树。
8.考虑如下决策树。
a.使用乐观方法计算决策树的泛化差错率。
3/10=0.3
b.使用悲观方法计算决策树的泛化差错率。(增加因子0.5)
(3+4×0.5)/10=0.5
c.使用提供的确认集计算决策树的泛化误差。这种方法叫做降低误差剪枝。
根据reduced error pruning approach,泛化误差为1/5=0.2
9.考虑下图决策树。假设产生决策树的数据集包含16个二元属性三各类C1,C2和C3.
根据最小描述长度原则计算每颗决策树的总描述长度。
树的整体描述长度由下式给出:
Cost(tree,data)=Cost(tree)+Cost(data|tree)
树的每个内部结点用划分属性ID进行编码。如果有m个属性,为每个属性编码的代价是log2m个二进位。
每个叶结点使用与之相关的类的ID编码。如果有k个类,为每个类编码的代价是log2k个二进位。
Cost(tree)是对决策树的所有结点编码的开销。为了简化计算,可以假设决策树的总开销为对每个内部结点和叶结点编码开销的总和。
Cost(data|tree)是对决策树在训练集上的分类错误编码的开销。每个开销用log2n个二进位编码,其中n是训练实例的总数。
根据MDL原则,哪个决策树好?
有16个属性,则树内部每个结点的代价是:log2(16)=4,三个类,则叶结点的代价是:[log2(3)]=2.每次错误划分的代价是log2(n)。
树a的总代价是2×4+3×2+7×log2 n = 14+7 log2 n ,树b的总代价是is 4×4+5×2+4×5 = 26+4 log2 n.根据最小描述长度原则,如果n<16则树a的代价小于b,树a更好;否则b更好。
10.尽管.632自助法可以对模型的准确率做出可靠的估计,但是该方法也有明显的局限性。考虑一个二元分类问题,其中数据包含的正样本和负样本的数目相同,假设每个样本分类标号都是随机产生的,所用分类器是一棵未剪枝的决策树(即完全忠实的写照)。使用下面的方法确定分类器的准确率:
a.保持方法,使用三分之二的数据作为训练数据,剩余的三分之一作为检验数据。
b.十折交叉验证。
c..632自助方法。
d.从a,b,c的结果看,哪种方法对分类器的准确率提供了可靠的估计?
a.假设训练集和测试集具有同等代表性,测试错误率会接近50%。
b.假设每一折训练集和测试集都具有同等代表性,测试错误率会接近50%。
c.当每个自助样本的错误率接近50%时一个完美存储器的训练错误率是100%,把这个信息带入.632自助法中的公式,错误估计为
d.十折交叉验证和保持方法比.632自助法提供了更好的错误估计。
11.考虑如下测试分类法A是否优于另一个分类法B的方法。设N是数据集的大小,pA是分类法A的准确率,pB是分类法B的准确率,而p=(pA+pB)/2是两种分类法的平均准确率。为了测试A是否显著优于B,使用Z统计量。
用下面的3×3表格汇总上表的分类法在数据上的分类性能。
表中每个单元的内容包含比较行与列的两个分类器时的赢、输和平的数目。
12.设X是一个均值为Np、方差为Np(1-p)的二元随机变量。证明比率X/N也服从均值为p、方差为p(1-p)/N的二项分布。
设r=X/N,既然X服从二项分布,则r也服从同样的分布,r的均值和方差可以计算如下:
均值:E[r] = E[X/N] = E[X]/N = (Np)/N = p;
方差:E[(r − E[r])2] = E[(X/N − E[X/N])2]
= E[(X − E[X])2]/N2
= Np(1 − p)/N2
= p(1 − p)/N