决策树算法

当前决策树更新算法运用主要分为ID3、C4.5、CART三种,ID3、C4.5建立决策树依靠数据分类利用信息熵形成多叉树,CART则使用基尼指数形成二叉树,前者不适用于连续性数据分布,有一定局限性,后者运用较广。
决策树的建立在程序上本质上相当于很多嵌套的if else体系形成,通过不断分支最终将数据以一颗决策树作为规则进行分类。

一、ID3、C4.5

决策树中对信息进行分叉的参数被称作信息熵,表示随机变量分布的混乱程度,分布越混乱熵越大,计算公式如下:
E n t ( D ) = − ∑ k = 1 K p k ∗ l o g 2 p k Ent(D)=-\sum_{k=1}^{K}p_{k}*log_{2}p_{k} Ent(D)=k=1Kpklog2pk
以天气预报的数据集为例:
在这里插入图片描述
上述数据中特征标签为Play?分为yes和no两个标签共14条数据,其中yes有9个,no有5个,那么对于yes来说 p k p_{k} pk 9 14 \frac{9}{14} 149,对于no来说 p k p_{k} pk 5 14 \frac{5}{14} 145,因此信息熵 E n t ( D ) = − 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.940286 Ent(D)=-\frac{9}{14}log_{2}\frac{9}{14}-\frac{5}{14}log_{2}\frac{5}{14}=0.940286 Ent(D)=149log2149145log2145=0.940286
在这里插入图片描述
再看特征数据以Outlook为例,Outlook主要分为sunny、overcast和rainy三个类,对于sunny来说,有2个yes3个no,故sunny中yes的 p k p_{k} pk 2 5 \frac{2}{5} 52,no的 p k p_{k} pk 3 5 \frac{3}{5} 53,信息熵为 H ( D s u n n y ) = − 2 5 l o g 2 2 5 − 3 5 l o g 2 3 5 = 0.970951 H(D^{sunny})=-\frac{2}{5}log_{2}\frac{2}{5}-\frac{3}{5}log_{2}\frac{3}{5}=0.970951 H(Dsunny)=52log25253log253=0.970951
同上,overcast及rainy的信息熵为 H ( D o v e r c a s t ) = − 4 4 l o g 2 4 4 = 0 H(D^{overcast})=-\frac{4}{4}log_{2}\frac{4}{4}=0 H(Dovercast)=44log244=0 H ( D r a i n y ) = − 2 5 l o g 2 2 5 − 3 5 l o g 2 3 5 = 0.970951 H(D^{rainy})=-\frac{2}{5}log_{2}\frac{2}{5}-\frac{3}{5}log_{2}\frac{3}{5}=0.970951 H(Drainy)=52log25253log253=0.970951
在决策树中,选择特征分叉先后顺序对最终结果是有很大影响的,因此对特征进行分叉的时候,需要优先将影响权重较大的特征进行分裂,再依次往下,能够减少特征之间相对的不确定性。这样的参数我们称为信息增益,计算公式如下:
G a i n ( D ) = E n t ( D ) − E n t ( D ′ ) Gain(D)=Ent(D)-Ent(D^{\prime}) Gain(D)=Ent(D)Ent(D)
以上述数据集为例,已知标签的信息熵为 E n t ( D ) = − 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.940286 Ent(D)=-\frac{9}{14}log_{2}\frac{9}{14}-\frac{5}{14}log_{2}\frac{5}{14}=0.940286 Ent(D)=149log2149145log2145=0.940286,三个特征总共的信息熵为
E n t ( D ′ ) = 5 14 ∗ H ( D s u n n y ) + 4 14 ∗ H ( D o v e r c a s t + 5 14 ∗ H ( D r a i n y ) ) = 5 14 ∗ 0.970951 + 4 14 ∗ 0 + 5 14 ∗ 0.970951 = 0.693536 \begin{split} Ent(D^{\prime})&=\frac{5}{14}*H(D^{sunny})+\frac{4}{14}*H(D^{overcast}+\frac{5}{14}*H(D^{rainy})) \\ &=\frac{5}{14}*0.970951+\frac{4}{14}*0+\frac{5}{14}*0.970951 \\ &=0.693536 \end{split} Ent(D)=145H(Dsunny)+144H(Dovercast+145H(Drainy))=1450.970951+1440+1450.970951=0.693536
信息增益为
G a i n ( D o u t l o o k ) = E n t ( D ) − E n t ( D ′ ) = 0.940286 − 0.693536 = 0.24675 \begin{split} Gain(D^{outlook})&=Ent(D)-Ent(D^{\prime}) \\ &=0.940286-0.693536 \\ &=0.24675 \end{split} Gain(Doutlook)=Ent(D)Ent(D)=0.9402860.693536=0.24675
同理计算temperature、humidity、windy的信息增益能够获取到这些特征信息进行分裂的时候,特征信息分裂的顺序,信息增益越大说明混乱程度下降得越多,需要优先分裂。

二、CART(Classification And Regression Tree)

当数据出现不重复的连续性数据时,若使用ID3、C4.5模式那么将会需要每一个数据单独分出来,这样算法处理复杂数据效果就很差。CART就能很好的解决这个问题。
以贷款数据为例:
在这里插入图片描述
基尼(Gini)指数是一个类似于信息熵的一个分类指标来划分属性,本质上Gini反映的是数据集中随机抽取的两个样本类别标签不一致的概率,Gini越小,分支节点包含样本属于同一样本的纯度就越高,计算公式如下:
G i n i ( T i ) = 1 − ∑ j = 1 n p j 2 Gini(T_{i})=1-\sum_{j=1}^{n}p_{j}^{2} Gini(Ti)=1j=1npj2
以上述有房无房为例,共10条数据
在这里插入图片描述
G i n i ( t 1 ) = 1 − ( 3 / 3 ) 2 − ( 0 / 3 ) 2 = 0 Gini(t1)=1-(3/3)^{2}-(0/3)^{2}=0 Gini(t1)=1(3/3)2(0/3)2=0
G i n i ( t 2 ) = 1 − ( 4 / 7 ) 2 − ( 3 / 7 ) 2 = 0.4849 Gini(t2)=1-(4/7)^{2}-(3/7)^{2}=0.4849 Gini(t2)=1(4/7)2(3/7)2=0.4849
G i n i = 3 10 ∗ 0 7 10 ∗ 0.4849 = 0.343 Gini=\frac{3}{10}*0\frac{7}{10}*0.4849=0.343 Gini=10301070.4849=0.343
而对于像年收入的连续分布特征信息就需要计算Gini指数来完成分裂选择。如下:
在这里插入图片描述
将连续的数据两两之间进行平均得到分界点,按分界点计算该分界点的Gini指数,依次完成所有数据的划分,看基尼指数最小的就是最适合分裂的分界点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值