我是靠谱客的博主 清脆雪糕,最近开发中收集的这篇文章主要介绍机器学习(三)——决策树(Decision Tree)1 决策树原理2 剪枝处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

决策树

  • 1 决策树原理
    • 1.1 决策树的构造
    • 1.2 划分指标
      • 1.2.1 信息增益
      • 1.2.2 基尼(GINI)系数
    • 1.3 决策树种类
      • 1.3.1 ID3
      • 1.3.2 C4.5
      • 1.3.3 CART
  • 2 剪枝处理
    • 2.1 预剪枝
    • 2.2 后剪枝

1 决策树原理

决策树是基于树形结构来进行决策的,目的是产生一颗泛化能力强的决策树,其基本流程遵循简单且直观的分而治之策略。一般的,一颗决策树包含一个根结点、若干内部结点和若干叶结点;其中叶结点对应决策结果,其他结点对应一个属性测试,每个分支代表一个判断结果的输出;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根节点包含样本全部结点。
在这里插入图片描述

1.1 决策树的构造

对于训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D={(x_1,y_1),(x_2,y_2),dots,(x_m,y_m)} D={(x1,y1),(x2,y2),,(xm,ym)}和属性集 A = { a 1 , a 2 , … , a d } A={a_1,a_2,dots,a_d} A={a1,a2,,ad}

递归构造(D, A):

  1. 生成结点node;
  2. 如果 D D D中样本全部属于同一类别 C C C,那么将node标记未 C C C类叶结点,return;(该步是以当前结点所含样本最多的类别划分,注意与第5步区别)
  3. 如果 A A A为空或者 D D D中样本在 A A A上取值相同,那么将node标记为叶结点,其类别标记为 D D D中样本数最多的类,return;
  4. *从 A A A中选择最优划分属性 a ∗ a_* a(例如,选择属性脐部);
  5. 遍历 a ∗ a_* a中的每一个属性值 a ∗ v a_*^v av(例如脐部属性,属性值有凹陷、稍凹、平坦),并执行如下操作:
    为node生成一个分支;
    D v D_v Dv表示 D D D中在 a ∗ a_* a取值为 a ∗ v a_*^v av的样本子集;
    如果 D v D_v Dv为空,那么将分支结点标记为叶结点,其类别标记为 D D D中样本最多的类,return(例如,脐部凹陷的样本集为空,直接标记为叶结点,类别为好瓜);(该步是以根节点所含样本最多的类别划分,注意与第2步区别)
    否则以 D v D_v Dv a ∗ ∉ A {a_*} notin A a/A 为分支结点,递归构建下一个结点;
  6. 输出以node为根节点的决策树。

1.2 划分指标

从构造过程可知,决策树学习的关键在于第4步,如何选择最优划分属性。因此这里有两个划分指标:信息增益和基尼(GINI)系数。

1.2.1 信息增益

信息增益衡量的是划分前后信息不确定性程度的减小。而“信息熵”是衡量样本集合纯度最常用的一种指标,“信息熵”越小样本集合的纯度越大。因此我们使用“信息熵”来衡量样本的不确定程度,定义为:
H ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g p k H(D)=-sum_{k=1}^{|y|}p_klogp_k H(D)=k=1ypklogpk
其中 k k k表示样本的标签, p p p表示该类样本出现的概率。样本集合越纯则 p k p_k pk越大,则 E n t ( D ) Ent(D) Ent(D)越小。

在对样本进行划分时,我们选择属性 a a a,假设该属性有 v v v个可能的取值 { a 1 , a 2 , … , a v } {a^1,a^2,dots,a^v} {a1,a2,,av},那么依此划分会产生 v v v个分支,第 v v v个分支的数据集为 D v D^v Dv,由此可计算出每个分支条件下对应的信息熵,即条件熵:
H ( D ∣ a ) = ∑ a v ∈ a p ( a v ) H ( D ∣ a = a v )    = − ∑ a v ∈ a p ( a v ) ∑ y ∈ Y p ( y ∣ a v ) l o g p ( y ∣ a v ) = − ∑ a v ∈ a ∑ y ∈ Y p ( y , a v ) l o g p ( y ∣ a v )    = − ∑ a v ∈ a , y ∈ Y p ( y , a v ) l o g p ( y , a v ) p ( a v ) = ∑ a v ∈ a , y ∈ Y p ( y , a v ) l o g p ( a v ) p ( y , a v ) H(D|a)=sum_{a^vin a}p(a^v)H(D|a=a^v)\ qquadqquadqquadqquad;=-sum_{a^vin a}p(a^v)sum_{yin Y}p(y|a^v)logp(y|a^v)\ qquadqquadqquad=-sum_{a^vin a}sum_{yin Y}p(y,a^v)logp(y|a^v)\ qquadqquadqquad;=-sum_{a^vin a,yin Y}p(y,a^v)logfrac{p(y,a^v)}{p(a^v)}\ qquadqquadquad=sum_{a^vin a,yin Y}p(y,a^v)logfrac{p(a^v)}{p(y,a^v)} H(Da)=avap(av)H(Da=av)=avap(av)yYp(yav)logp(yav)=avayYp(y,av)logp(yav)=ava,yYp(y,av)logp(av)p(y,av)=ava,yYp(y,av)logp(y,av)p(av)
信息增益定义为信息熵与条件熵的差值,即父亲节点的信息熵减去所有子节点归一化条件下的信息熵
I G = H ( D , a ) = H ( D ) − H ( D ∣ a ) IG=H(D,a)=H(D)-H(D|a) IG=H(D,a)=H(D)H(Da)
信息增益IG越大,说明使用该特征划分数据所获得的信息量变化越大,子节点的样本“纯度”越高。

因此,属性选择为:
a ∗ = a r g    m a x a ∈ A    H ( D , a ) a_* =arg;max_{ain A};H(D,a) a=argmaxaAH(D,a)

1.2.2 基尼(GINI)系数

同样的,我们可以使用基尼系数衡量样本集合的不纯度。
G i n i = 1 − ∑ p i 2 Gini = 1 - sum{p_i^2} Gini=1pi2
当我们划分时,计算使用当前属性 a a a划分的基尼系数:
G i n i a = ∑ a ∈ A p ( A = a ) [ 1 − ∑ p i 2 ] Gini_a = sum_{ain A}p(A=a)[1 - sum{p_i^2}] Ginia=aAp(A=a)[1pi2]
一般来说,我们选择使得划分后Gini指数最小的特征(注意这里是直接根据Gini指数进行判断,而并非其变化量):
a ∗ = a r g    m i n a ∈ A    G i n i a a_* =arg;min_{ain A};Gini_a a=argminaAGinia

1.3 决策树种类

1.3.1 ID3

使用信息增益作为划分指标。

1.3.2 C4.5

ID3越细小的分割分类错误率越小,所以ID3会越分越细,但是这会导致过度学习。基于此C4.5对ID3进行了改进,使用信息增益率作为划分指标。如果分割太细那么增益率的分母就会增加,信息增益率会降低,其他的构建过程和ID3相同。
信息增益率定义为:
H r a t i o ( D , a ) = H ( D , a ) I V ( a ) I V ( a ) = − ∑ a v ∈ a p ( a v ) l o g p ( a v ) = − ∑ a v ∈ a ∣ D v ∣ ∣ D ∣ l o g ∣ D v ∣ ∣ D ∣ H_ratio(D,a)=frac{H(D,a)}{IV(a)}\ IV(a)=-sum_{a^v in a}p(a^v)logp(a^v)=-sum_{a^v in a}frac{|D^v|}{|D|}logfrac{|D^v|}{|D|} Hratio(D,a)=IV(a)H(D,a)IV(a)=avap(av)logp(av)=avaDDvlogDDv

1.3.3 CART

CART叫分类回归树,它是一种二叉树。使用基尼系数(Gini)作为划分指标。CART与ID3有相同的问题,可能导致划分太细导致过度学习。

2 剪枝处理

前面已经说过决策树可能会划分过细,导致过度学习,此时可以使用剪枝技术进行处理,防止过拟合。剪枝技术可分为“预剪枝”和“后剪枝”。

2.1 预剪枝

预剪枝是指在决策树生成个过程中,对每个结点在划分前先进行评估,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分,并将当前结点标记为叶结点,类别标记为当前结点样本集合中样本数最多的类别。

2.2 后剪枝

后剪枝是指先从训练集生成一颗完整的决策树,然后自底向上地对非叶子结点进行评估,若该结点对应地子树被替换为叶结点能带来泛化性能地提升,则将该子树替换为叶结点。

最后

以上就是清脆雪糕为你收集整理的机器学习(三)——决策树(Decision Tree)1 决策树原理2 剪枝处理的全部内容,希望文章能够帮你解决机器学习(三)——决策树(Decision Tree)1 决策树原理2 剪枝处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部