机器学习(决策树)

1.算法流程

给定样本集D((x1,y1),(x2,y2)......(xn,yn)),和属性A{a1,a2,....an}

(1)若当前节点样本全部为同一类C,则将当前节点设为叶结点,并将其结点的类别设为C。

(2)若当前结点,属性集A为空,或者样本在属性集A上的取值相同,则将当前结点设为叶结点,并将其结点的类别设为D中数目最多的类。

(3)若当前结点的样本集为空,则把父节点的类别作为当前结点的类别。

(4)否则,从A结点中找出最优的划分属性ai,

(5)对于ai的不同取值av,分别生成子节点,子节点的样本集为D中在ai上取值为av的子集Dv,属性集为、A-ai.

(6)循环递归

2.划分选择

从算法流程中可以看出,决策树算法的关键在于划分属性的选择。

(1)信息增益

信息熵:信息熵越小,表明样本集D的纯度越高

信息增益越大,表明属性a划分所得到的纯度提升越大。


信息增益对可取值数目较多属性有所偏好

(2)信息增益率

信息增益率对取值数目较少的属性有所偏好

(3)基尼指数

基尼指数表示随机从样本集中抽取两个样本,两个样本不属于同一类的概论。


3.剪枝处理

判断增加的分支是否对提高决策树的泛化能力有所帮助,如果不能提升泛化能力则进行剪枝。

(1)预剪枝

在分支之前进行测试,如果没有提升则不进行剪枝。

速度快,但是在当前结点不会提升性能不代表在之后的结点不会提升性能,从而带来了欠拟合的风险。

(2)后剪枝

在决策树建立之后,从下而上进行剪枝,判断将当前分支替换为父结点是否会造成性能的下降,如果不能则替换之。

训练时间久,欠拟合的风险小。

4.连续与缺失值

(1)对连续值的处理是将其离散化。

(2)对缺失值的处理是:

在选择最优划分时,只使用没有缺失值的样本进行计算。

在划分类别时,将有缺失值的样本划分到所有子节点类别中。


4.1基本流程

组成:一个根节点、若干内部节点和若干叶节点;叶节点对应了不同的预测结果,我们的目的是从包含样本全集的根节点找到它到每个叶节点的路径对应一个判定预测序列。 
目的:产生一棵泛化能力强的决策树。什么叫做泛化能力强呢?就是这颗决策树能够对之前没见过的样本也能做出正确的预测。整个过程如下

输入:训练集D,属性集A
1、生成节点node
2、如果 D中的样本全部属于同意类别C,那么就将node标记为C类的叶节点。返回。
3、如果2不满足,并且属性集为空或者D样本在A上的取值相同,就将node标记为叶节点并且类别设置为D中样本最多的类;返回。
4、一般情况:从A中选择最优的属性划分A',根据D中在A'上的属性可能取值进行划分,划分完之后属性集大小减1,样本D在当前节点上分为N(N为D在A'属性的N种取值)。
输出:以node位根节点的一棵决策树。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

那么,显然能发现三种导致递归返回的情况: 
1、当前节点所包含的样本全部属于同一类,无需划分 
2、属性集为空或者数据集在当前属性集上所有取值相同,无法划分 
3、当前节点所包含的样本集合为空,不能划分。

4.2划分选择

1、信息增益

利用熵降的大小来进行判断。

2、增益率

很显然,对离散数据增益可以有不错的划分效果。但是如果变成连续数据呢?假设样本某个连续特征的取值各不相同,那么只要选取这一特征的增益率一定是最大的。那么在增益的基础上除以一个IV(a)就是增益率。 
IV(a)是什么呢?a是属性的取值可能性,可能性越多IV(a)越大。

3.基尼指数

直观来看,基尼指数就是反映从数据集中随机抽取两个样本,其类别标记不一致的概率。

4.3剪枝处理

基本策略:预剪枝、后剪枝。 
预剪枝是在决策树生成过程中,如果这个节点进行划分,不能带来泛化性能的提升,则停止划分并将该节点设置为叶子节点。 
后剪枝则是先训练好一棵树,然后自底向上对非叶子节点进行考察,如果将该节点对应的子树替换为叶节点能不能带来泛化性能的提升,能就将该子树替换为叶节点。 
如何判断泛化性能的提升?将训练集分出一部分当验证集。

4.3.1 预剪枝

在每次决定用一个特征去划分数据集的时候,都用验证集的数据去判断这次划分是否能提高验证集的精度。 
优点:预剪枝使得决策树很多分支都没有“展开”,这不仅降低了过拟合的风险,还显著减少来决策树的训练时间开销和测试时间开销。 
缺点:虽然某次划分可能并不能带来性能上的提升,但是后序的划分可能会带来性能上的提升;预剪枝基于“贪心”的本质给决策树带来欠拟合的风险。

4.3.2后剪枝

后剪枝就是从某个节点后续划分去掉,将该节点设置为叶节点时,如果性能得到提升则进行剪枝操作。从性能上后剪枝一般比预剪枝的性能要更好,但是其时间开销更大。

周志华 《机器学习》之 第四章(决策树)概念总结

原创  2016年08月15日 14:41:51
  • 586

看完周老师的决策树章节,首先从内容安排上采用了循序渐进的方式引入介绍决策树这种分类算法。书中从基本流程、划分选择、剪枝处理、连续与缺失值、多变量决策树五个方面进行详细介绍。看完之后我们如何理解决策树呢? 
1、决策树的概念:首先我们可以明确决策树同其他机器学习算法一样,是一种解决分类问题的算法。从名字上我们可以看出决策树是一颗树的存储结构,图显示的话,这个算法应该就是一颗数。在机器学习中,一颗决策树包含一个根结点、若干个内部结点和若干个叶结点;根结点和内部结点都对应于一个属性测试,叶结点则对应于决策结果;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集。从根结点到每个叶结点的路径对应了一个判定测试序列;因此,可以想象一次次划分之后由根延伸出了许多分支,形象的说就是一棵树。 
从决策树的概念中可以分析出,如何在每个内部结点处,属性测试中如何选择最优划分属性成为了构建决策树的关键。 
2、划分选择书中介绍三种方法,分别是信息增益、增益率、基尼指数 提到基本概念如下: 
信息熵:是度量样本集合纯度最常用的一种指标。信息熵的值越小,则样本集合的纯度就越高。 
信息增益:信息增益我们可以理解为在划分样本集前后引起的信息熵的差异,一般而言,信息增益越大,则意味着使用的划分属性对样本集进行划分获得的“纯度提升”越大。 
增益率:http://blog.csdn.net/athenaer/article/details/8425479 
基尼指数: 
3、剪枝处理主要讲述预剪枝和后剪枝 
剪枝处理是决策树学习算法对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好”了,以致于把训练集自身的一些特点当做所有数据都具有的一般性质而导致过拟合。因此,可以通过主动去掉一些分支来降低过拟合的风险。 
预剪枝: 
后剪枝: 
注:预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险;后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但后剪枝过程是在生产完全决策树之后进行的,并且要自底向上的对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大很多。 
4、连续与缺失值 本小结主要是对数据连续时以及缺失数据时的情况下如何处理构建决策树 
连续属性离散化技术 
遇到不完整样本,即样本的某些属性值缺失。引入

pp
表示无缺失值样本所占比例。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值