day2 决策树

2.1原理

什么是决策树

从根节点开始一步步走到叶子节点,所有的数据都最终会落在叶子节点上。可以做分类也可以做回归

由什么组成

根节点:第一个选择点
非叶子节点:中间过程
叶子节点:最终的决策结果

两个阶段

训练阶段

从给定训练集中构造一棵树(从根节点开始选择特征,如何进行特征切分)
测试阶段
根据构造出来的树模型,从上到下走一遍

2.2 如何切分特征

:表示随机变量不确定性的度量(数据内部的混乱程度)

− ∑ ( P i ∗ l o g P i ) ( i = 1 , 2 , 3 , . . . n ) -\sum(Pi*logPi)(i=1,2,3,...n) (PilogPi)(i=1,2,3,...n)

log函数Pi的值越接近1,那么log值越接近0,因前面的-号越大的概率得到的熵值越小,越小的概率得到的熵值越大
A的集合[1,1,1,1,1,1,1,1,2,2]
B的集合[1,2,3,4,5,6,7,8,9,1]

很明显A的熵值比较低(我们希望通过节点分支后的数据类型的熵值大还是小?)
希望经过一次决策后得到一个A集合类型的

信息增益:表示特征X使得类y的不确定性减少的程度(熵值下降了多少)
在这里插入图片描述

2.3例子

在这里插入图片描述

图上数据为14天的打球数据
划分方法有四种
在这里插入图片描述
根据信息增益来选择根节点
此时的熵为
− ( 9 14 l o g 2 9 14 ) − ( 5 14 l o g 2 5 14 ) = 0.940 -(\frac{9}{14}log_2 \frac{9}{14})-(\frac{5}{14}log_2 \frac{5}{14})=0.940 (149log2149)(145log2145)=0.940

根节点的选择

当天气作为根节点时此时的熵为

outlook = sunny时,熵值为0.971
− ( 2 5 l o g 2 2 5 ) − ( 3 5 l o g 2 3 5 ) = 0.971 -(\frac{2}{5}log_2 \frac{2}{5})-(\frac{3}{5}log_2 \frac{3}{5})=0.971 (52log252)(53log253)=0.971
outlook = overcast时熵值为0
− ( 4 4 l o g 2 4 4 ) = 0 -(\frac{4}{4}log_2 \frac{4}{4})=0 (44log244)=0
outlook = rainy时,熵值为0.971
− ( 3 5 l o g 2 3 5 ) − ( 2 5 l o g 2 2 5 ) = 0.971 -(\frac{3}{5}log_2 \frac{3}{5})-(\frac{2}{5}log_2 \frac{2}{5})=0.971 (53log253)(52log252)=0.971
熵值计算:
( 5 14 ) ∗ 0.971 + ( 4 14 ) ∗ 0 + ( 5 14 ) ∗ 0.971 = 0.693 (\frac{5}{14})*0.971 + (\frac{4}{14})*0 + (\frac{5}{14})*0.971 = 0.693 (145)0.971+(144)0+(145)0.971=0.693
增益为0.940 - 0.693 = 0.247


当温度作为根节点时此时的熵为

temperature = hot时,熵值为1
− ( 1 2 l o g 2 1 2 ) − ( 1 2 l o g 2 1 2 ) = 1 -(\frac{1}{2}log_2 \frac{1}{2})-(\frac{1}{2}log_2 \frac{1}{2})=1 (21log221)(21log221)=1
temperature = mid时,熵值为
− ( 2 3 l o g 2 2 3 ) − ( 1 3 l o g 2 1 3 ) = 0.918 -(\frac{2}{3}log_2 \frac{2}{3})-(\frac{1}{3}log_2 \frac{1}{3})=0.918 (32log232)(31log231)=0.918
temperature = cool时,熵值为
− ( 3 4 l o g 2 3 4 ) − ( 1 4 l o g 2 1 4 ) = 0.811 -(\frac{3}{4}log_2 \frac{3}{4})-(\frac{1}{4}log_2 \frac{1}{4})=0.811 (43log243)(41log241)=0.811
( 4 14 ) ∗ 1 + ( 6 14 ) ∗ 0.918 + ( 4 14 ) ∗ 0.811 = 0.911 (\frac{4}{14})*1 + (\frac{6}{14})*0.918 + (\frac{4}{14})*0.811 = 0.911 (144)1+(146)0.918+(144)0.811=0.911
增益为
0.940 − 0.911 = 0.029 0.940 - 0.911 = 0.029 0.9400.911=0.029


当湿度作为根节点时此时的熵为

humidity = high时熵值为:
− ( 3 7 l o g 2 3 7 ) − ( 4 7 l o g 2 4 7 ) = 0.985 -(\frac{3}{7}log_2 \frac{3}{7})-(\frac{4}{7}log_2 \frac{4}{7})=0.985 (73log273)(74log274)=0.985
humidity = normal时熵值为:
− ( 6 7 l o g 2 6 7 ) − ( 1 7 l o g 2 1 7 ) = 0.592 -(\frac{6}{7}log_2 \frac{6}{7})-(\frac{1}{7}log_2 \frac{1}{7})=0.592 (76log276)(71log271)=0.592
熵值计算
1 2 ∗ 0.985 + 1 2 ∗ 0.592 = 0.787 \frac{1}{2}*0.985+\frac{1}{2}*0.592=0.787 210.985+210.592=0.787
增益为
0.940 − 0.787 = 0.153 0.940-0.787=0.153 0.9400.787=0.153


当风作为根节点时此时的熵为0.891

windy = false 熵值为
− ( 3 4 l o g 2 3 4 ) − ( 1 4 l o g 2 1 4 ) = 0.811 -(\frac{3}{4}log_2 \frac{3}{4})-(\frac{1}{4}log_2 \frac{1}{4})=0.811 (43log243)(41log241)=0.811
windy = True 熵值为
− ( 1 2 l o g 2 1 2 ) − ( 1 2 l o g 2 1 2 ) = 1 -(\frac{1}{2}log_2 \frac{1}{2})-(\frac{1}{2}log_2 \frac{1}{2})=1 (21log221)(21log221)=1
熵值计算
8 14 ∗ 0.811 + 6 14 ∗ 1 = 0.891 \frac{8}{14}*0.811 + \frac{6}{14}*1=0.891 1480.811+1461=0.891
增益为
0.940 − 0.891 = 0.049 0.940-0.891=0.049 0.9400.891=0.049
由上知
0.247 > 0.153 > 0.049 > 0.029 0.247>0.153>0.049>0.029 0.247>0.153>0.049>0.029
所以选择天气作为根子节点以此类推

2.4剪枝

预剪枝:限制深度,叶子节点个数叶子节点样本数,信息增益量等
后剪枝:通过一定的衡量标准

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值