决策树(Decision Tree)--原理及Python代码实现

本文详细介绍了决策树的学习流程,包括信息增益、增益率、基尼指数等划分选择准则,以及预剪枝和后剪枝策略。通过实际案例展示了如何处理连续值和缺失值,并探讨了多变量决策树。最后提到了Python中实现决策树的方法。
摘要由CSDN通过智能技术生成
友情提示:仔细阅读、用笔计算,才能更好的理解。

1. 基本流程

决策树(Decision Tree)是一类常见的机器学习方法。一般的,一颗决策树包含一个根节点、若干个内部节点何若干个叶节点。西瓜问题的决策树如下:
dt
决策树学习的目的是为了产生一颗泛化能力强,即处理未见实例能力强的决策树,其基本流程遵循简单且直观的“分而治之”(divide—and—conquer)策略。决策树学习的基本算法如图所示:
dt_algorithm
决策树是由递归生成的,再决策树基本算法中,有三种情形会导致递归返回:
(1)当前结点包含的样本全属于同一类别,无需划分;
(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
(3)当前结点包含的样本集合为空,不能划分。

2. 划分选择

决策树学习的关键是从属性集中选择最优的划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高。

2.1. 信息增益

ID3(Iterative Dichotomiser—迭代二分器)就是以信息增益为准则来选择划分属性。“信息熵”(information entropy)是度量样本集合纯度中常用的一种指标。
假设当前样本集合D中第k类样本所占的比例为Pk(k = 1,2,…,|y|),信息熵的计算公式如图所示:
information_entropy
在对样本集D进行划分时,需要考虑样本集的不同离散属性a(如:西瓜色泽包含青绿、乌黑、浅白属性),不用的分支结点中样本数越多的影响越大,于时可计算用属性a对样本D进行划分所获得的“信息增益”(information gain),公式如下:
information_gain
决策树的生成
下面以表4.1中的西瓜数据2.0为例,用以学习一棵能预测没剖开的是不是好瓜的决策树:
data2.0
显然,|y|=2。
step1
在决策树开始时,根结点包含D中的所有样例,其中正例占p1=8/17,反例占p2=9/17。根据公式得到根节点的信息熵为:
root_ie
step2
计算出当前属性集合{色泽,根蒂,敲声,纹理,脐部,触感}中每个属性的信息增益。以属性“色泽”为例,它有3个可能的取值{青绿,乌黑,浅白}。

  1. "色泽"属性有3个子集,记为D1(色泽=青绿),D2(色泽=乌黑),D3(色泽=浅白)。
  2. D1中包含编号{1,4,6,10,13,17}6个样例,其中正例p1=3/6,p2=3/6;
    D2中包含编号{2,3,7,8,9,15}6个样例,其中正例p1=4/6,p2=2/6;
    D3中包含编号{5,11,12,14,16}5个样例,其中正例p1=1/5,p2=4/5。
  3. 计算用“色泽”划分之后所获得的3个分支结点的信息熵
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值