机器学习与模式识别作业----决策树属性划分计算

文章目录

1.决策树划分原理

在决策树的算法中,我们常用的划分属性的方法又如下三种:

那么我们是怎么通过特征选择指标来进行属性的划分的呢,我们接下来将介绍上述三个特征选择的划分算法。

1.1.特征选择1--信息增益

"信息熵"(information entropy)是度量样本集合纯度最常用的一种指标假定当前样本集合D中第k类样本所占的比例为 p k ( k = 1 , 2 , . . . , ) p_{k}(k = 1,2,...,) pk(k=1,2,...,) ,则D的信息熵定义为
Ent ⁡ ( D ) = − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k . \operatorname{Ent}(D)=-\sum_{k=1}^{|\mathcal{Y}|}p_{k}\log_{2}p_{k}. Ent(D)=−k=1∑∣Y∣pklog2pk.

假定离散属性a有V个可能的取值 { a 1 , a 2 , a 3 , . . . . a v } \{{a^{1},a^{2},a^{3},....a^{v}}\} {a1,a2,a3,....av},若使用a来对样本集D进行划分,则会产生V个分支结点,其中第v个分支结点包含了D 中所有在属性a上取值为 a v a^{v} av的样本记为 D v D^{v} Dv,我们可根据计算D信息再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重 D v / D D^{v}/D Dv/D即样本数越多的分支结点的影响越大于是可计算出用属性a对样本D进行划分所获得的"信息增益"(information gain)。
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) \mathrm{Gain}(D,a)=\mathrm{Ent}(D)-\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}\mathrm{Ent}(D^{v}) Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)

一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的"纯度提升"越大.因此,我们可用信息增益来进行决策树的划分属性选择。

1.2.特征选择2--信息增益比

实际上,信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响著名的 C4.5 决策算法不直接使用信息增益而是使用"增益率"(gain ratio)来选择最优划分属性,增益率定义如下所示:
G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) \mathrm{Gain}\_\mathrm{ratio}(D,a)=\frac{\mathrm{Gain}(D,a)}{\mathrm{IV}(a)} Gain_ratio(D,a)=IV(a)Gain(D,a)

其中,
I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ \mathrm{IV}(a)=-\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}\log_{2}\frac{|D^{v}|}{|D|} IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣

称为属性a的"固有值"(intrinsic value),属性a的可能取值数目越多(即 V 越大)则IV(a) 的值通常会越大。

需注意的是,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性再从中选择增益率最高的.

1.3.特征选择3--基尼系数

CART决策树使用"基尼指数"(Gini index)来选择划分属性,基尼值的计算公式如下所示:
G i n i ( D ) = ∑ k = 1 ∣ Y ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ Y ∣ p k 2 . \begin{aligned}\mathrm{Gini}(D)&=\sum_{k=1}^{|\mathcal{Y}|}\sum_{k^{\prime}\neq k}p_kp_{k^{\prime}}\\&=1-\sum_{k=1}^{|\mathcal{Y}|}p_k^2.\end{aligned} Gini(D)=k=1∑∣Y∣k′=k∑pkpk′=1−k=1∑∣Y∣pk2.

直观来说,Gini(D)反映了从数据集 D中随机抽取两个样本,其类别标记不一致的概率。因此Gini(D)越小则数据集 D的纯度越高,基尼指数定义如下所示:
G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ . G i n i ( D v ) \mathrm{Gini}\\mathrm{index}(D,a)=\sum{v=1}^{V}\frac{|D^{v}|}{|D|.}\mathrm{Gini}(D^{v}) Gini_index(D,a)=v=1∑V∣D∣.∣Dv∣Gini(Dv)

于是,我们在候选属性集合 A 中选择那个使得划分后基尼指数最小的属性作为最优划分属性。

2.决策树属性划分计算题

Iris数据集的某个特征增广版本包含7个样本,具体情况如表格示对比香气和颜色两种特征,分别依据信息增益、 信息增益比和基尼指数给出分裂特征选择结果及计算过程。

2.1.信息增益计算

2.2.1.属性1的信息增益计算

首先计算根结点的信息熵,根据类别区分出setosa有4朵,versicolor有2朵,virginica有2朵,则根节点的信息熵计算如下:
E n t ( D ) = − ∑ k = 1 3 p k l o g 2 p k = − ( 4 8 l o g 2 4 8 + 2 8 l o g 2 2 8 + 2 8 l o g 2 2 8 ) = 1.5 Ent(D)=-\sum_{k=1}^{3}p_{k}log_{2}p_{k}=-(\frac{4}{8}log_{2}\frac{4}{8}+\frac{2}{8}log_{2}\frac{2}{8}+\frac{2}{8}log_{2}\frac{2}{8} )=1.5 Ent(D)=−k=1∑3pklog2pk=−(84log284+82log282+82log282)=1.5

针对酒香类型,S={有酒香,无酒香},我们分别计算该属性的信息熵如下所示:
E n t ( S 1 ) = − ∑ k = 1 3 p k l o g 2 p k = − ( 4 5 l o g 2 4 5 + 0 l o g 2 0 + 1 5 l o g 2 1 5 ) = 0.721 Ent(S^{1})=-\sum_{k=1}^{3}p_{k}log_{2}p_{k}=-(\frac{4}{5}log_{2}\frac{4}{5}+0log_{2}0+\frac{1}{5}log_{2}\frac{1}{5} )=0.721 Ent(S1)=−k=1∑3pklog2pk=−(54log254+0log20+51log251)=0.721
E n t ( S 2 ) = − ∑ k = 1 3 p k l o g 2 p k = − ( 0 3 l o g 2 0 3 + 2 3 l o g 2 2 3 + 1 3 l o g 2 1 3 ) = 0.918 Ent(S^{2})=-\sum_{k=1}^{3}p_{k}log_{2}p_{k}=-(\frac{0}{3}log_{2}\frac{0}{3}+\frac{2}{3}log_{2}\frac{2}{3}+\frac{1}{3}log_{2}\frac{1}{3} )=0.918 Ent(S2)=−k=1∑3pklog2pk=−(30log230+32log232+31log231)=0.918

最后我们计算酒香属性的信息增益值,如下所示:
Gain ⁡ ( D , S ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) = 1.5 − 5 8 E n t ( D 1 ) − 3 8 E n t ( D 2 ) = 0.705 \operatorname{Gain}(D,S)=\operatorname{Ent}(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}\operatorname{Ent}(D^v)=1.5-\frac{5}{8}Ent(D^{1})-\frac{3}{8}Ent(D^{2})=0.705 Gain(D,S)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)=1.5−85Ent(D1)−83Ent(D2)=0.705

2.2.2.属性2的信息增益计算

针对颜色类型,S={红色,粉色,紫色},我们分别计算该属性的信息熵如下所示:
E n t ( S 1 ) = − ∑ k = 1 3 p k l o g 2 p k = − ( 2 2 l o g 2 2 2 + 0 l o g 2 0 ) = 0 Ent(S^{1})=-\sum_{k=1}^{3}p_{k}log_{2}p_{k}=-(\frac{2}{2}log_{2}\frac{2}{2}+0log_{2}0 )=0 Ent(S1)=−k=1∑3pklog2pk=−(22log222+0log20)=0
E n t ( S 2 ) = − ∑ k = 1 3 p k l o g 2 p k = − ( 1 2 l o g 2 1 2 + 1 2 l o g 2 1 2 ) = 1 Ent(S^{2})=-\sum_{k=1}^{3}p_{k}log_{2}p_{k}=-(\frac{1}{2}log_{2}\frac{1}{2}+\frac{1}{2}log_{2} \frac{1}{2})=1 Ent(S2)=−k=1∑3pklog2pk=−(21log221+21log221)=1
E n t ( S 3 ) = − ∑ k = 1 3 p k l o g 2 p k = − ( 1 4 l o g 2 1 4 + 1 2 l o g 2 1 2 + 1 2 l o g 2 1 2 ) = 1.5 Ent(S^{3})=-\sum_{k=1}^{3}p_{k}log_{2}p_{k}=-(\frac{1}{4}log_{2}\frac{1}{4}+\frac{1}{2}log_{2}\frac{1}{2}+ \frac{1}{2}log_{2}\frac{1}{2})=1.5 Ent(S3)=−k=1∑3pklog2pk=−(41log241+21log221+21log221)=1.5

最后我们计算颜色属性的信息增益值,如下所示:
Gain ⁡ ( D , S ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) = 1.5 − 2 8 E n t ( S 1 ) − 2 8 E n t ( S 2 ) − 4 8 E n t ( S 3 ) = 0.5 \operatorname{Gain}(D,S)=\operatorname{Ent}(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}\operatorname{Ent}(D^v)=1.5-\frac{2}{8}Ent(S ^{1})-\frac{2}{8}Ent(S^{2})-\frac{4}{8}Ent(S^{3})=0.5 Gain(D,S)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)=1.5−82Ent(S1)−82Ent(S2)−84Ent(S3)=0.5

2.2.3.属性信息增益比较

我们分别求出了酒香和颜色两种属性的信息增益,接下来我们就根据求出的信息增益来划分属性:
Gain ⁡ ( D , " 酒香 " ) > Gain ⁡ ( D , " 颜色 " ) \operatorname{Gain}(D,"酒香")>\operatorname{Gain}(D,"颜色") Gain(D,"酒香")>Gain(D,"颜色")

所以我们的选择的属性就是酒香,通过酒香的分类去划分属性。

2.2.信息增益比计算

由上述分析我们知道信息增益和信息增益比的关系,所以我们直接计算信息增益比的值,如下所示:
H ^ { " 酒香 " } = − ∑ k = 1 2 N k N l o g 2 N k N = − ( 5 8 l o g 2 5 8 + 3 8 l o g 2 3 8 ) = 0.954 \hat{H}\{"酒香"\}=-\sum_{k=1}^{2}\frac{N_{k}}{N}log_{2}\frac{N_{k}}{N} =-(\frac{5}{8}log_{2}\frac{5}{8}+\frac{3}{8}log_{2}\frac{3}{8})=0.954 H^{"酒香"}=−k=1∑2NNklog2NNk=−(85log285+83log283)=0.954
H ^ { " 颜色 " } = − ∑ k = 1 2 N k N l o g 2 N k N = − ( 2 8 l o g 2 2 8 + 2 8 l o g 2 2 8 + 4 8 l o g 2 4 8 ) = 1.5 \hat{H}\{"颜色"\}=-\sum_{k=1}^{2}\frac{N_{k}}{N}log_{2}\frac{N_{k}}{N} =-(\frac{2}{8}log_{2}\frac{2}{8}+\frac{2}{8}log_{2}\frac{2}{8}+\frac{4}{8}log_{2}\frac{4}{8})=1.5 H^{"颜色"}=−k=1∑2NNklog2NNk=−(82log282+82log282+84log284)=1.5

由此我们能够计算出对应的信息增益比如下所示:
{ R 1 = G r a i n ( D , " 酒香 " ) H ^ { " 酒香 " } = 0.705 0.954 = 0.738 R 2 = G r a i n ( D , " 颜色 " ) H ^ { " 颜色 " } = 0.5 1.5 = 1 3 \left\{\begin{matrix}R_{1}=\frac{Grain(D,"酒香")}{\hat{H}\{"酒香"\}} =\frac{0.705}{0.954}=0.738 \\R_{2}=\frac{Grain(D,"颜色")}{\hat{H}\{"颜色"\}} =\frac{0.5}{1.5}=\frac{1}{3}\end{matrix}\right. {R1=H^{"酒香"}Grain(D,"酒香")=0.9540.705=0.738R2=H^{"颜色"}Grain(D,"颜色")=1.50.5=31

因为计算出的R1>R2,所以我们的选择的属性就是酒香,通过酒香的分类去划分属性。

2.3.基尼系数计算

Gini系数的计算也比较简答,我们只要根据基尼系数的计算公式来进行计算即可:

计算酒香属性的Gini系数如下所示:
G i n i ( " 香气 " = " 有 " ) = 1 − ∑ 1 2 p k 2 = 1 − ( 4 5 ) 2 − ( 1 5 ) 2 = 0.320 G i n i ( " 香气 " = " 无 " ) = 1 − ∑ 1 2 p k 2 = 1 − ( 1 3 ) 2 − ( 2 3 ) 2 = 0.444 \begin{matrix}Gini("香气"="有")=1-\sum_{1}^{2}p^{2}{k} =1-(\frac{4}{5} )^{2}-(\frac{1}{5} )^{2}=0.320 \\Gini("香气"="无")=1-\sum{1}^{2}p^{2}_{k} =1-(\frac{1}{3} )^{2}-(\frac{2}{3} )^{2}=0.444\end{matrix} Gini("香气"="有")=1−∑12pk2=1−(54)2−(51)2=0.320Gini("香气"="无")=1−∑12pk2=1−(31)2−(32)2=0.444

计算颜色属性的Gini系数如下所示:
G i n i ( " 颜色 " = " 红 " ) = 1 − ∑ 1 3 p k 2 = 1 − ( 2 2 ) 2 − 0 − 0 = 0 G i n i ( " 颜色 " = " 粉 " ) = 1 − ∑ 1 3 p k 2 = 1 − ( 1 2 ) 2 − ( 1 2 ) 2 − 0 = 0.5 G i n i ( " 颜色 " = " 紫 " ) = 1 − ∑ 1 3 p k 2 = 1 − ( 1 4 ) 2 − ( 1 4 ) 2 − ( 2 4 ) 2 = 0.625 \begin{matrix}Gini("颜色"="红")=1-\sum_{1}^{3}p^{2}{k} =1-(\frac{2}{2} )^{2}-0-0=0 \\Gini("颜色"="粉")=1-\sum{1}^{3}p^{2}{k} =1-(\frac{1}{2} )^{2}-(\frac{1}{2} )^{2}-0=0.5 \\Gini("颜色"="紫")=1-\sum{1}^{3}p^{2}_{k} =1-(\frac{1}{4} )^{2}-(\frac{1}{4} )^{2}-(\frac{2}{4} )^{2}=0.625 \end{matrix} Gini("颜色"="红")=1−∑13pk2=1−(22)2−0−0=0Gini("颜色"="粉")=1−∑13pk2=1−(21)2−(21)2−0=0.5Gini("颜色"="紫")=1−∑13pk2=1−(41)2−(41)2−(42)2=0.625

由此我们分别计算对应的基尼系数如下所示:
G i n i _ R a t i o ( " 香气 " ) = 5 8 G i n i 1 + 3 8 G i n i 2 = 0.37 G i n i _ R a t i o ( " 颜色 " ) = 2 8 G i n i 1 + 2 8 G i n i 2 + 4 8 G i n i 3 = 0.437 \begin{matrix}Gini\Ratio("香气")=\frac{5}{8} Gini{1}+\frac{3}{8} Gini_{2}=0.37 \\Gini\Ratio("颜色")=\frac{2}{8} Gini{1}+\frac{2}{8} Gini_{2}+\frac{4}{8} Gini_{3}=0.437\end{matrix} Gini_Ratio("香气")=85Gini1+83Gini2=0.37Gini_Ratio("颜色")=82Gini1+82Gini2+84Gini3=0.437

因为计算出的 G i n i _ R a t i o ( " 香气 " ) Gini\_Ratio("香气") Gini_Ratio("香气")< G i n i _ R a t i o ( " 颜色 " ) Gini\_Ratio("颜色") Gini_Ratio("颜色"),所以我们的选择的属性就是酒香,通过酒香的分类去划分属性。

相关推荐
桃花键神19 分钟前
AI可信论坛亮点:合合信息分享视觉内容安全技术前沿
人工智能
野蛮的大西瓜40 分钟前
开源呼叫中心中,如何将ASR与IVR菜单结合,实现动态的IVR交互
人工智能·机器人·自动化·音视频·信息与通信
CountingStars6191 小时前
目标检测常用评估指标(metrics)
人工智能·目标检测·目标跟踪
tangjunjun-owen1 小时前
第四节:GLM-4v-9b模型的tokenizer源码解读
人工智能·glm-4v-9b·多模态大模型教程
冰蓝蓝1 小时前
深度学习中的注意力机制:解锁智能模型的新视角
人工智能·深度学习
橙子小哥的代码世界1 小时前
【计算机视觉基础CV-图像分类】01- 从历史源头到深度时代:一文读懂计算机视觉的进化脉络、核心任务与产业蓝图
人工智能·计算机视觉
新加坡内哥谈技术2 小时前
苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
大数据·人工智能·语言模型
fanstuck3 小时前
Prompt提示工程上手指南(七)Prompt编写实战-基于智能客服问答系统下的Prompt编写
人工智能·数据挖掘·openai
lovelin+v175030409663 小时前
安全性升级:API接口在零信任架构下的安全防护策略
大数据·数据库·人工智能·爬虫·数据分析
唐小旭3 小时前
python3.6搭建pytorch环境
人工智能·pytorch·python