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

文章目录

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("颜色"),所以我们的选择的属性就是酒香,通过酒香的分类去划分属性。

相关推荐
Shockang6 小时前
LangGraph 状态机实战
人工智能
刹那芳华19926 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作7 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门7 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜7 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟7 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦7 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生8 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能
ZhengEnCi8 小时前
MoE(Mixture of Experts,混合专家模型)深度解析:从路由机制到专家专业化的迷思
人工智能
shxjnpl8 小时前
Qwen3-ASR 从 PyTorch 迁移到 vLLM:一次信创环境下的推理路径改造实录
人工智能·pytorch·vllm