决策树 集成学习

(一)决策树:

1.定义
决策树是通过一系列规则对数据进行分类的过程。它提供一种在什么条件下会得到什么值的类似规则的方法。决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部节点和叶节点,内部节点表示一个特征或属性,叶节点表示一个类。
分类的时候,从根节点开始,对实例的某一个特征进行测试,根据测试结果,将实例分配到其子结点;此时,每一个子结点对应着该特征的一个取值。如此递归向下移动,直至达到叶结点,最后将实例分配到叶结点的类中。
举一个通俗的栗子,各位立志于脱单的单身男女在找对象的时候就已经完完全全使用了决策树的思想。假设一位母亲在给女儿介绍对象时,有这么一段对话:
母亲:给你介绍个对象。
女儿:年纪多大了?
母亲:26。
女儿:长的帅不帅?
母亲:挺帅的。
女儿:收入高不?
母亲:不算很高,中等情况。
女儿:是公务员不?
母亲:是,在税务局上班呢。
女儿:那好,我去见见。
这个女生的决策过程就是典型的分类决策树。相当于对年龄、外貌、收入和是否公务员等特征将男人分为两个类别:见或者不见。假设这个女生的决策逻辑如下:
这里写图片描述
上图完整表达了这个女孩决定是否见一个约会对象的策略,其中绿色结点(内部结点)表示判断条件,橙色结点(叶结点)表示决策结果,箭头表示在一个判断条件在不同情况下的决策路径,图中红色箭头表示了上面例子中女孩的决策过程。 
2.决策树的学习过程

一棵决策树的生成过程主要分为以下3个部分:

  • 特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。

  • 决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。

  • 剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
3.ID3算法
ID3算法是以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类。
    首先,ID3算法需要解决的问题是如何选择特征作为划分数据集的标准。在ID3算法中,选择信息增益最大的属性作为当前的特征对数据集分类。信息增益的概念将在下面介绍,通过不断的选择特征对数据集不断划分;
    其次,ID3算法需要解决的问题是如何判断划分的结束。分为两种情况,第一种为划分出来的类属于同一个类,如上图中的最左端的“非鱼类”,即为数据集中的第5行和第6行数据;最右边的“鱼类”,即为数据集中的第2行和第3行数据。第二种为已经没有属性可供再分了。此时就结束了。
    通过迭代的方式,我们就可以得到这样的决策树模型。

(ID3算法基本流程)
4.信息熵与信息增益
信息熵:
在信息论中,熵被用来衡量一个随机变量出现的期望值。变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大,熵是整个系统的平均消息量。 信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。
信息熵计算公式是: H(x)=E[I(xi)]=E[ log(1/p(xi)) ]= - p(xi)log(p(xi))(i=1,2,..n)
信息增益:
信息增益(Information Gain):熵A-条件熵B,是信息量的差值。也就是说,一开始是A,用了条件后变成了B,则条件引起的变化是A-B,即信息增益(它描述的是变化Delta)。好的条件就是信息增益越大越好,即变化完后熵越小越好(熵代表混乱程度,最大程度地减小了混乱)。因此我们在树分叉的时候,应优先使用信息增益最大的属性,这样降低了复杂度,也简化了后边的逻辑。
5.基尼指数

CART里面划分决策树的条件是采用Gini Index,定义如下:

gini(T)=1sumnj=1p2j

其中,( p_j )是类jT中的相对频率,当类在T中是倾斜的时,gini(T)会最小。

T划分为T1(实例数为N1)和T2(实例数为N2)两个子集后,划分数据的Gini定义如下:

ginisplit(T)=fracN1Ngini(T1)+fracN2Ngini(T2)

然后选择其中最小的(gini_{split}(T) )作为结点划分决策树。

 

基尼不纯度指标

在CART算法中,基尼不纯度表示一个随机选中的样本在子集中被分错的可能性。基尼不纯度为这个样本被选中的概率乘以它被分错的概率。当一个节点中所有样本都是一个类时,基尼不纯度为零。

假设y的可能取值为{1, 2, ..., m},令fi是样本被赋予i的概率,则基尼指数可以通过如下计算:

例如:

上例是属性有8个,每个属性又有多少离散的值可取。在决策树的每一个节点上我们可以按任一个属性的任一个值进行划分。比如最开始我们按:

1)表面覆盖为毛发和非毛发

2)表面覆盖为鳞片和非鳞片

3)体温为恒温和非恒温

等等产生当前节点的左右两个孩子。下面我们按GINI指数划分有:

GINI指数

总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)。比如体温为恒温时包含哺乳类5个、鸟类2个,则:

体温为非恒温时包含爬行类3个、鱼类3个、两栖类2,

所以如果按照“体温为恒温和非恒温”进行划分的话,我们得到GINI的增益(类比信息增益):

最好的划分就是使得GINI_Gain最小的划分。

(二)集成学习

1.定义

集成学习(ensemble learning)通过构建并结合多个学习起来完成 学习任务,有时也被称为多分类器系统(multi-classifer system)、基于委员会的学习等等。

2.分类

目前,有三种常见的集成学习框架:bagging,boosting和stacking

3.bagging算法

特点:

  1. Boosting是一种框架算法,以随机森林(RDF)算法为代表。
  2. 采用的是随机有放回的选择训练数据然后构造分类器,最后组合。
  3. 从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
  4. 对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
  5. 对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)

图示:

这里写图片描述

4.boosting算法

算法的三个要素:

(1)函数模型:Boosting的函数模型是叠加型的,即

F(x)=i=1kfi(x;θi)F(x)=∑i=1kfi(x;θi)

(2)目标函数:选定某种损失函数作为优化目标
E{F(x)}=E{i=1kfi(x;θi)}E{F(x)}=E{∑i=1kfi(x;θi)}

(3)优化算法:贪婪地逐步优化,即
θm=argminθmE{i=1m1fi(x;θi)+fm(x;θm)}θm∗=arg⁡minθmE{∑i=1m−1fi(x;θi∗)+fm(x;θm)}

需要解决的问题:

对于Boosting算法,需要解决两个问题:

  1. 如何调整训练集,使得在训练集上训练的弱分类器得以进行;
  2. 如何将训练得到的各个弱分类器联合起来形成强分类器。

特点:

  1. Boosting是一种框架算法,拥有系列算法,如AdaBoost,GradientBoosting,LogitBoost等算法。
  2. Boosting系列算法的主要区别在于其三要素选取的函数不同
  3. 可以提高任意给定学习算法准确度
  4. 训练过程为阶梯状,弱分类器按次序一一进行训练(实现上可以做到并行),弱分类器的训练集按照某种策略每次都进行一定的转化。最后以一定的方式将弱分类器组合成一个强分类器。
  5. Boosting中所有的弱分类器可以是不同类的分类器

图示:

这里写图片描述



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值