决策树算法

 部分参考https://www.cnblogs.com/taojake-ML/p/6117469.html

1、简介

        分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部节点和叶节点,内部节点表示一个特征或属性,叶节点表示一个类。分类的时候,从根节点开始,当前节点设为根节点,当前节点必定是一种特征,根据实例的该特征的取值,向下移动,直到到达叶节点,将实例分到叶节点对应的类中。决策树的属性结构其实对应着一个规则集合:由决策树的根节点到叶节点的每条路径构成的规则组成;路径上的内部特征对应着if条件,叶节点对应着then结论。决策树的每条路径对应于划分中的一个单元。给定实例的特征X,一定落入某个划分,决策树选取该划分里最大概率的类作为结果输出。

2、模型

        决策树学习算法包含特征选择、决策树的生成与剪枝过程。决策树的学习算法一般是递归地选择最优特征,并用最优特征对数据集进行分割。由于决策树表示条件概率分布,所以高度不同的决策树对应不同复杂度的概率模型。最优决策树的生成是个NP问题,能实现的生成算法都是局部最优的,剪枝则是既定决策树下的全局最优。

(1) 特征选择

如何判断一个特征的分类能力呢?有以下两种方法:1、信息增益;2、信息增益比;3、基尼系数。

信息增益:

        “信息熵”是度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占的比例为pk(k=1,2,...,y),则D的信息熵Ent(D)的定义如下,Ent(D)的值越小,则D的纯度越高。

     

        假定离散属性a有V个可能的取值{a1,a2,...,aV},若使用a来对样本集D进行划分,则会产生V个分支节点,其中第v个分支结点包含了D中所有在属性a上取值为aV的样本,记为Dv。考虑到给分支结点赋予权重,即样本数越多的分支结点的影响越大,于是可计算出用属性a对样本集D进行划分所获得的“信息增益”Gain(D,a)如上。

        一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升“越大。因此,我们可用信息增益来进行决策树的划分属性选择。ID3决策树学习算法就是以信息增益为准则来选择划分属性。

信息增益率

        实际上,信息增益率准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5决策树算法使用“增益率”(gain ratio)来选择最优划分属性。增益率定义如下,其中IV(a)称为属性a的“固有值”。

  

        需要注意的是,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择信息增益率最高的。

基尼指数

        CART决策树使用“基尼指数”(Gini index)来选择划分属性,数据集D的纯度可用基尼值(Gini(D))来度量。直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此Gini(D)越小。数据的纯度越高。属性a的基尼指数Gini_index(D,a)如下。

           

(2)剪枝处理

        剪枝是决策树学习算法对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好了”以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此可主动去掉一些分支来降低过拟合的风险。

        决策树剪枝的基本策略有“预剪枝”和“后剪枝”。预剪枝是指在决策树生成过程中,对每个结点在划分前先估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点记为叶节点。后剪枝则是先从训练集生成一颗完整的决策树,然后自底而上地对非叶节点进行考察,若将该结点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。

        一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树,但后剪枝过程是在生成完全决策树之后进行的,并且要自底而上地对树中的所有非叶节点逐一考察,因此其训练时间开销比预剪枝决策树和未剪枝决策树都要大得多。

3、总结

决策树算法是机器学习中一个大类算法,这些理论是基础,后面的随机森林,GBDT等等算法都是这些算法的提升。需要着重理解。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值