决策树

源自西瓜书

基本流程

训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\} D={(x1,y1),(x2,y2),...,(xm,ym)}
属性集 A = { a 1 , a 2 , . . . , a d } A=\{a_1,a_2,...,a_d\} A={a1,a2,...,ad}
过程
生成结点 n o d e node node;
i f   D if\ D if D中样本全部属于类别 C   t h e n C\ then C then
n o d e node node标记为 C C C类叶结点; r e t u r n return return
e n d   i f end\ if end if
i f A = ∅   o r   D if A=∅\ or\ D ifA= or D中样本在 A A A上取值相同 t h e n then then
n o d e node node标记为叶结点,其类别标记为 D D D中样本数最多的类。 r e t u r n return return
e n d   i f end\ if end if
A A A中选择最优划分属性 a ∗ a_* a
f o r   a ∗ for\ a_* for a的每一个值:
\quad n o d e node node生成一个分支, D v D_v Dv表示 D D D a ∗ a_* a上取值为 a ∗ v a_*^v av的样本子集;
i f   D v \quad if\ D_v if Dv为空   t h e n \ then  then
\quad\quad 将分支结点标记为叶结点,其类别为 D D D中样本最多的类; r e t u r n return return
e l s e \quad else else
\quad\quad T r e e ( D v , A − { a ∗ } ) Tree(D_v,A-\{a_*\}) Tree(Dv,A{a})为分支结点。
e n d   i f \quad end\ if end if
e n d   f o r end\ for end for

注意

决策树的生成是一个递归过程,三种情况会导致递归返回:
1 1 1 当前结点包含的样本属于同一类别
2 2 2 当前结点的属性集为空,或者所有样本在所有属性取值相同,无法划分。
3 3 3 当前节点包含的样本集合为空

2 2 2 3 3 3都是把当前 D D D中最多的类别作为当前结点的决策,但 2 2 2做的是已知样本特征(结果),求引起特征的类别(原因),即后验分布, 3 3 3即是通过父节点的样本分布,作为其先验分布,对未知进行预测。

划分选择

关键在于如何找出最优划分属性
随着划分的不断进行,我们希望决策树的分支结点包含的样本尽可能属于同一类别,即结点的纯度越来越高。

信息增益

是度量样本集合纯度最常用的一种指标。
E n t ( D ) = − ∑ p k l o g 2 p k Ent(D)=-\sum p_klog_2p_k Ent(D)=pklog2pk p k p_k pk为样本集合 D D D中第 k k k类样本所占的比例。
E n t Ent Ent越小,样本纯度越高。

对于每个类别,我们设置权重,因为样本数越多显然影响越大。
最终用属性 a a a划分的信息增益
G a i n ( D , a ) = E n t ( D ) − ∑ ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum\frac{|D_v|}{|D|}Ent(D_v) Gain(D,a)=Ent(D)DDvEnt(Dv)
a ∗ = arg max ⁡ a ∈ A G a i n ( D , a ) a_*=\mathop{\argmax}\limits_{a \in A} Gain(D,a) a=aAargmaxGain(D,a)

I D 3 ID3 ID3就是使用了这样的方法。
缺点是什么呢,可能会对取值数目较多的属性有偏好,产生不利影响。

信息增益率

C 4.5 C4.5 C4.5算法不直接使用信息增益,而是使用增益率。
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)} Gain_ratio(D,a)=IV(a)Gain(D,a)
I V ( a ) = − ∑ ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ D IV(a)=-\sum\frac{|D_v|}{|D|}log_2\frac{|D_v|}{D} IV(a)=DDvlog2DDv,其表示属性取值越多,其值越大。
显然增益率对属性取值较少的有偏好,所以 C 4.5 C4.5 C4.5用了一个启发式算法:
先从候选划分属性中找出信息增益高于平均水平的属性,再从中选取增益率最高的。

接下来以后再学 q w q qwq qwq

实例

分类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值