决策树 - Decision Tree

决策树 - Decision Tree

按照树的类型:
  • 分类树
  • 回归树
按照树的构建:
  • 信息增益–ID3
  • 信息增益率–C4.5
  • 基尼系数–CART

决策树是什么,定义?

使用树形结构将数据进行分类,每个内部节点对应一个输入属性,子节点代表父节点属性的可能取值,叶子节点对应一个预测结果。

  • 总体流程
    1、自根至叶的递归过程;
    2、在每个中间结点寻找一个“划分”(split or test)属性。

  • 决策树的三种停止生长条件:
    1、当前节点包含的样本全部属于同类别;(例如:在相亲中,此次的样本,都是高的人)
    2、当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;(例如:相亲中,富的和不富的都见面)
    3、当前节点包含的样本集合为空,不能划分。(例如:相亲中,没有帅的人)

决策树的三种算法

在解释三种算法之前,先解释一个概念——

信息熵(entropy)是度量样本集合“纯度”的一种指标,也就是样本中混乱程度。假定当前样本集合D中的第k类样本所占集合的比例为P(k) ,则D的信息熵定义为:

E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 P k Ent(D) = -\sum_{k=1}^{|y|}p_klog_2P_k Ent(D)=k=1ypklog2Pk

其中Ent(D)的值越小,则D的纯度越高。
约定P = 0 , Plog2§ = 0 。 Ent(D) 的最小值为 0 ,最大值为log2(|y|)。

ID3 --信息增益(information gain)

离散属性a的取值{a1,a2,a3,…,av}
Dv: D中在a上的取值 = av的样本集合

对属性进行信息熵计算,找到信息增益最大的那个属性(也就是使混乱度降低了的属性),作为节点。

以属性a对 数据集D 进行划分所得到的信息增益为:

G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a) = Ent(D) - \sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

D^v 为 D在属性ai上的集合

编号色泽根蒂敲声纹理脐部触感好瓜
1青绿蜷缩浊响清晰凹陷硬滑
2乌黑蜷缩沉闷清晰凹陷硬滑
3乌黑蜷缩浊响清晰凹陷硬滑
4青绿蜷缩沉闷清晰凹陷硬滑
5浅白蜷缩浊响清晰凹陷硬滑
6青绿稍蜷浊响清晰稍凹软粘
7乌黑稍蜷浊响稍糊稍凹软粘
8乌黑稍蜷浊响清晰稍凹硬滑
9乌黑稍蜷沉闷稍糊稍凹硬滑
10青绿硬挺清脆清晰平坦软粘
11浅白硬挺清脆模糊平坦硬滑
12浅白蜷缩浊响模糊平坦软粘
13青绿稍蜷浊响稍糊凹陷硬滑
14浅白稍蜷沉闷稍糊凹陷硬滑
15乌黑稍蜷浊响清晰稍凹软粘
16浅白蜷缩浊响模糊平坦硬滑
17青绿蜷缩沉闷稍糊稍凹硬滑

$|y| = 2 $

E n t ( D ) = − ∑ k = 1 2 p k l o g 2 p k = − ( 8 17 l o g 2 8 17 + 9 17 l o g 2 9 17 ) = 0.998 Ent(D) = -\sum_{k=1}^2p_klog_2p_k = -(\frac{8}{17}log_2{\frac{8}{17}} + \frac{9}{17}log_2{\frac{9}{17}}) = 0.998 Ent(D)=k=12pklog2pk=(178log2178+179log2179)=0.998

  • 以属性“色泽”为例,其对应3个子数据集,D1(青绿)=6,D2(乌黑)=6,D3(浅白)=5

E n t ( D 1 ) = − ( 3 6 l o g 2 3 6 + 3 6 l o g 2 3 6 ) = 1.000 Ent(D^1) = -(\frac{3}{6}log_2{\frac{3}{6}} + \frac{3}{6}log_2{\frac{3}{6}}) = 1.000 Ent(D1)=(63log263+63log263)=1.000

E n t ( D 2 ) = − ( 4 6 l o g 2 4 6 + 2 6 l o g 2 2 6 ) = 0.918 Ent(D^2) = -(\frac{4}{6}log_2{\frac{4}{6}} + \frac{2}{6}log_2{\frac{2}{6}}) = 0.918 Ent(D2)=(64log264+62log262)=0.918

E n t ( D 3 ) = − ( 1 5 l o g 2 1 5 + 4 5 l o g 2 4 5 ) = 0.722 Ent(D^3) = -(\frac{1}{5}log_2{\frac{1}{5}} + \frac{4}{5}log_2{\frac{4}{5}}) = 0.722 Ent(D3)=(51log251+54log254)=0.722

G a i n ( D , s e z e ) = E n t ( D ) − ∑ v = 1 3 ∣ D v ∣ ∣ D ∣ E n t ( D v ) = 0.998 − ( 6 17 ∗ 1.000 + 6 17 ∗ 0.918 + 5 17 ∗ 0.722 ) = 0.109 Gain(D, seze) = Ent(D) - \sum_{v=1}^3\frac{|D^v|}{|D|}Ent(D^v) = 0.998 -(\frac{6}{17} * 1.000 + \frac{6}{17} * 0.918 + \frac{5}{17} * 0.722) = 0.109 Gain(D,seze)=Ent(D)v=13DDvEnt(Dv)=0.998(1761.000+1760.918+1750.722)=0.109

同理可求出其他属性的信息增益:
Gain(D,色泽) = 0.109
Gain(D,根蒂) = 0.143
Gain(D,敲声) = 0.141
Gain(D,纹理) = 0.381
Gain(D,脐部) = 0.289
Gain(D,触感) = 0.006

可见,纹理的信息增益最大,使用纹理当做被划分属性

C4.5 --信息增益率(gain ratio)

G a i n r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain_ratio(D,a) = \frac{Gain(D,a)}{IV(a)} Gainratio(D,a)=IV(a)Gain(D,a)

I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ IV(a) =-\sum_{v=1}^V\frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|} IV(a)=v=1VDDvlog2DDv
属性a的可能取值数目越多(即V越大),则IV(a)的值通常就越大。

启发:先从候选划分属性中找出信息增益高于平均水平的,再从中选取增益率最高的。

CART --基尼指数或者基尼不纯度(gini index)

CART是二叉树

G i n i ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ y ∣ p k 2 Gini(D) = \sum_{k=1}^{|y|}\sum_{k'\neq k}p_kp_{k'} = 1 - \sum_{k=1}^{|y|}p^2_k Gini(D)=k=1yk̸=kpkpk=1k=1ypk2

反映了从D中随机抽取两个样例,其类别标记不一致的概率。
Gini(D)越小,数据集D的纯度越高

属性a的基尼指数:
G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D,a) = \sum_{v=1}^V\frac{|D^v|}{|D|}Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)

在候选属性集合中,选取那个使划分后基尼指数最小的属性。也就是划分属性使得纯度提高。

回归树

  • 递归二分
    R 1 ( j , s ) = { x ∣ x j &lt; s } R_1(j,s) = \{x|x_j &lt; s\} R1(j,s)={xxj<s}

R 2 ( j , s ) = { x ∣ x j &lt; s } R_2(j,s) = \{x|x_j &lt; s\} R2(j,s)={xxj<s}

R S S = ∑ x i ∈ R 1 ( j , s ) ( y i − y ˉ R 1 ) 2 + ∑ x i ∈ R 2 ( j , s ) ( y i − y ˉ R 2 ) 2 RSS = \sum{}_{{x_i}\in{R}_1(j,s)}(y_i - \bar y_{R1})^2 + \sum{}_{{x_i}\in{R}_2(j,s)}(y_i - \bar y_{R2})^2 RSS=xiR1(j,s)(yiyˉR1)2+xiR2(j,s)(yiyˉR2)2

  • 回归树剪枝
    正则化项
    ∑ m = 1 ∣ T ∣ ∑ x i ∈ R m \sum_{m=1}^{|T|}\sum{}_{{x_i}\in{R_m}} m=1TxiRm

基尼指数 vs 熵 vs 分类错误率

  • Gini ≈ Entropy

多棵树的类型

Bagging
Bootstraping
Random Forest

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值