决策树学习算法

来源:互联网 发布:yankee candle 知乎 编辑:程序博客网 时间:2024/06/09 20:22

决策树学习算法最著名的代表是ID3、C4.5、CART。下面不同的决策树学习算法对应着不同的代表,把不同算法的代表说出来,可以在面试或者交流中提高B格。


一、介绍

决策树是一种常见的机器学习方法。决策树顾名思义就是基于树结构来进行决策的,这恰是人类面临决策问题时一种很自然最常见的处理机制。例如:我们去超市买瓜,如何判断这个瓜是否是好瓜?面对这样一个问题,我们通常会进行一系列的判断,比如我们先看“它纹路是否清楚?”,如果“清楚”,我们再看“它的根蒂是什么形态?”,如果是“蜷缩”,我们再判断"它敲击起来是什么声音?",如果声音“浊响”,最后我们做出决策,这是个好瓜。这就是一个典型的决策树判断法。

决策树的目的是为了产生一颗泛化能力强,即处理未见示例 能力强的决策树,其基本流程遵循“分而治之”策略,如下图



二、划分选择


1、信息增益

首先要引入“信息熵”的概念,是度量样本及和纯度的一种指标。假定当前样本集合D中第k类(类指的是最终的结果,比如说好瓜,坏瓜)样本所占的比例为,则集合D的信息熵公式为:


信息熵越小,表明集合的纯度越高。

假定离散属性a有V个可能的取值,若使用属性a来对样本进行划分,会产生V个分支,其中第V个分支节点包含了D中所有在属性a上取值为的样本,记为。根据上面的公式计算出的信息熵(这个地方要注意概念的区分)。考虑到不同分支结点所包含的样本数不同,我们给分支节点赋予权重,可以理解为样本数目越多的分支影响越大,于是可以计算出属性a对样本集D进行划分所得的“信息增益”,公式如下:


这个公式表示a属性的信息增益,也可以理解为信息增益等于集合D中所有属性得信息熵减去某个属性的信息熵,所有属性的信息熵肯定大于某个属性的信息熵,所以信息增益肯定为证,如果信息增益越大,说明这个属性的信息熵越小,说明这个属性越纯,也就是说如果我们用这个属性去划分,获得的“纯度提升”越大,因此我们可以用信息增益来进行决策树的划分属性的选择。

著名的ID3(Iterative Dichotomiser/迭代二分器)决策树学习算法就是以信息增益为准则来选择划分属性。

2、增益率

实际上,信息增益准则对可取值数目比较多的属性有所偏好,为了减少这种偏好可能带来的不利影响,著名的C4.5决策树算法不直接使用信息增益,而是使用“增益率”来选择最优化分属性,增益率公式为:


其中:


这个公式仔细去理解,其中第二个公式我的理解是求了权值的权值,可能这样表述不对,但是可以这样去理解,就像求导一样。

通过这个公式,我们可以看到,属性a可能取之数目越多,也就是V越大,IV(a)越大。需要注意的是增益率准则对可取值数目较少的属性有所偏好,因此C4.5算法并不是直接选择增益率最大的候选划分属性,而是先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

3、基尼指数

CART决策树实用“基尼指数”来选择划分属性,采用与信息熵相同的符号,基尼指数计算公式如下:


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

若采用与信息增益相同的符号表示,公式为:


在候选属性集合A中,我们会选择使得基尼指数最小的属性作为最优的划分属性。


三、剪枝处理

“剪枝”顾名思义,就是去除决策树中对划分起副作用的枝。剪枝是决策树学习算法对付“过拟合”的主要手段。

这个地方有两个知识点,一是如何判断这个枝是否“过拟合”;二是如何剪枝。

我们首先来说第二个问题,如何剪枝,剪枝有两种策略,“预剪枝”和“后剪枝”。预剪枝是指在决策树生成过程中,对每个节点在划分前进行估计,如果当前节点划分不能带来决策树泛化性能的提升,则停止划分。后剪枝则是先生成一颗完整的决策树,然后自底向上的对非叶节点进行考察,如果该节点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。预剪枝降低了过拟合风险,但是也增加了欠拟合风险;后剪枝欠拟合风险很小,泛化性能往往优于预剪枝决策树,但是其训练时间以及资源消耗要比预剪枝大得多。

接下来说第二个问题,如何判断是否“过拟合”。首先你要对“过拟合”有个彻底的理解,过拟合指的就是泛化性能的变化,如果增加枝,但是决策树泛化性能没有提高或者是下降,这就是典型的过拟合。下面我们通过一个例子来看一下如何判断“过拟合”。

首先我们来看一下一个细化数据集,我们分为训练集和验证集:


下图就是基于上表生成的未剪枝决策树:


我们来看一下根节点1,如果没有节点1也就是没有划分,我们暂且认为都是好瓜,这样我们用验证集去验证的划分正确率是(3/7)42.9%,我们用训练集进行训练之后,发现脐部凹陷是好瓜,稍凹也是好瓜(你也可以训练位坏瓜,结果是一样的),平坦的是坏瓜,再用验证集验证,发现划分正确率是(5/7)71.4%,我们可以确定这个枝不是“过拟合”。我们现在看一下节点2,划分之后用验证集验证,发现划分精度是(4/7)57.1%,所以我们可以确定这个枝是“过拟合”,然后剪掉这个分支。如下所示:


最后我们得到剪枝处理之后的决策树:



四、连续与缺失值

1、连续值处理

之前我们研究的都是基于离散属性来生成的决策树。现实任务中常常会遇到连续属性,所以接下来我们要讨论的是如何在决策树学习中实用连续属性。可能有人不知道什么是离散属性什么是连续属性,在这里介绍一下通俗的理解方式:离散属性是指有限的,连续属性是无穷尽的。举个连续属性的例子,比如西瓜中的含糖率。

由于连续属性可取值数目不再有限,因此,不能直接根据连续属性的可取值来对节点进行划分。此时,连续属性离散化技术可以派上用场,最简单的就是二分法,这也正是C4.5决策树算法中 采用的机制。

给定样本集D和连续属性a,假设a在D上出现了n个不同的取值,我们将这个数值从小到大排序,记为,基于划分点t将D分为子集表示包含那些属性a上取值不大于t的样本,而表示包含那些属性a上取值大于t的样本。对于相邻的属性取值来说,t在区间中任意取值所产生的划分结果相同,因此对于连续属性a,我们可以确定包含n-1个元素候选划分点集合:


联系之前信息增益的公式,我们可以得到:


这个式子表示样本集D基于划分点t二分后的信息增益。于是,我们可选择使信息增益最大化的划分点。

2、缺失值处理

在实际当中,我们经常会遇到不完整的样本,即样本的某些属性缺失。如果对缺失属性的样本丢弃,会造成极大的浪费,所以我们就要考虑利用缺失属性值的训练样例来进行学习。处理方式为让同一个样本以不同的概率划入到不同的子节点中去(这个就不展开了,可能用起来比较方便,个人觉得没意思,需要的自己百度下)。


五、多变量决策树


在多变量决策树的徐熙过程中,不是为每个非叶结点寻找一个最有划分属性,二是试图建立一个合适的线性分类器。


最后考验一下大家对预剪枝理解的深度:为什么预剪枝会带来欠拟合风险?



1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 掉了一颗虎牙,怎么办 牙里面掉了一块怎么办 u盘坏了无法识别怎么办 u盘内容读不出来怎么办 u盘文件读不出来怎么办 u盘突然读不出来怎么办 u盘读取不出来怎么办 蛋糕卷底部粘纸怎么办 美瞳没有护理液怎么办 没有带护理液了怎么办 护理液忘记带了怎么办 康宁玻璃锅裂了怎么办 带隐形牙套喝酒怎么办 牙齿保持器丢了怎么办 牙套保持器坏了怎么办 牙齿磕掉了一小块怎么办 牙齿裂掉了一半怎么办 大牙缺了一小块怎么办 牙根碎了一小块怎么办 门牙碎了一小块怎么办 孩子门牙长歪了怎么办 儿童门牙长歪了怎么办 大门牙长歪了怎么办 下面牙齿长歪了怎么办 只有一颗牙齿歪怎么办 牙齿突然长歪了怎么办 有个牙齿长歪了怎么办 一颗大牙长歪了怎么办 一颗牙齿长偏了怎么办 一个门牙长歪了怎么办 儿童牙齿长歪了怎么办 孩子牙齿长歪了怎么办 宝宝门牙长歪了怎么办 一颗牙齿挤歪了怎么办 后槽牙掉了一块怎么办 最里面的牙掉了怎么办 成年了牙齿掉了怎么办 我的门牙豁牙子怎么办 小孩牙齿长得稀怎么办 后槽牙掉了一颗怎么办 前门牙掉了一颗怎么办