决策树

       决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。

       决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。

       分类树(决策树)是一种十分常用的分类方法。

组成

□--决策点,是对几种可能方案的选择,即最后选择的最佳方案。如果决策属于多级决策,则决策树的中间可以有多个决策点,以决策树根部的决策点为最终决策方案。

○--状态节点,代表备选方案的经济效果(期望值),通过各状态节点的经济效果的对比,按照一定的决策标准就可以选出最佳方案。由状态节点引出的分支称为概率枝,概率枝的数目表示可能出现的自然状态数目每个分枝上要注明该状态出现的概率。

△--结果节点,将每个方案在各种自然状态下取得的损益值标注于结果节点的右端。

机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

从数据产生决策树的机器学习技术叫做决策树学习, 通俗说就是决策树

一个决策树包含三种类型的节点:

  1. 决策节点:通常用矩形框来表示
  2. 机会节点:通常用圆圈来表示
  3. 终结点:通常用三角形来表示

决策树学习也是资料探勘中一个普通的方法。在这里,每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。 当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。另外,随机森林分类器将许多决策树结合起来以提升分类的正确率。

决策树同时也可以依靠计算条件概率来构造。

决策树如果依靠数学的计算方法可以取得更加理想的效果。 数据库已如下所示:

(x, y) = (x1, x2, x3…, xk, y)

相关的变量 Y 表示我们尝试去理解,分类或者更一般化的结果。 其他的变量x1, x2, x3 等则是帮助我们达到目的的变量。

决策树的剪枝

剪枝是决策树停止分支的方法之一,剪枝有分预先剪枝和后剪枝两种。预先剪枝是在树的生长过程中设定一个指标,当达到该指标时就停止生长,这样做容易产生"视界局限",就是一旦停止分支,使得节点N成为叶节点,就断绝了其后继节点进行"好"的分支操作的任何可能性。不严格的说这些已停止的分支会误导学习算法,导致产生的树不纯度降差最大的地方过分靠近根节点。后剪枝中树首先要充分生长,直到叶节点都有最小的不纯度值为止,因而可以克服"视界局限"。然后对所有相邻的成对叶节点考虑是否消去它们,如果消去能引起令人满意的不纯度增长,那么执行消去,并令它们的公共父节点成为新的叶节点。这种"合并"叶节点的做法和节点分支的过程恰好相反,经过剪枝后叶节点常常会分布在很宽的层次上,树也变得非平衡。后剪枝技术的优点是克服了"视界局限"效应,而且无需保留部分样本用于交叉验证,所以可以充分利用全部训练集的信息。但后剪枝的计算量代价比预剪枝方法大得多,特别是在大样本集中,不过对于小样本的情况,后剪枝方法还是优于预剪枝方法的。

优点

决策树易于理解和实现,人们在在学习过程中不需要使用者了解很多的背景知识,这同时是它的能够直接体现数据的特点,只要通过解释后都有能力去理解决策树所表达的意义。[1]

对于决策树,数据的准备往往是简单或者是不必要的,而且能够同时处理数据型和常规型属性,在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

易于通过静态测试来对模型进行评测,可以测定模型可信度;如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。

缺点

1)对连续性的字段比较难预测。

2)对有时间顺序的数据,需要很多预处理的工作。

3)当类别太多时,错误可能就会增加的比较快。

4)一般的算法分类的时候,只是根据一个字段来分类。

特征选择

直观上,如果一个特征具有更好的分类能力,或者说,按照这一特征将训练数据集分割成子集,是的各个子集在当前条件下有最好的分类,则就更应该选择这个特征。信息增益就能够很好地表示这一直观的准则。  

  特征选择的准则是信息增益信息增益比

 信息增益

    在这里,要先给出熵和条件熵的定义,熵表示随机变量不确定性的度量。设X是一个取有限个值得离散随机变量,其概率分布为:

  则随机变量X的熵定义为:,若Pi=0,则H(X)=0,由定义可知,熵只依赖于X的分布,而与X的取值无关,所以也可将X的熵记作H(p):;熵越大,随机变量的不确定性就越大。

   当随机变量只有两个值时,例如1, 0时,即X的分布为:

    熵为:,当p=0或p=1时,H(p)=0,表示随机变量完全没有不确定性。

   设有随机变量(X,Y),其联合概率分布为:

    条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的条件下随机变量Y的条件熵H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X数学期望

    信息增益表示得知特征X 的信息而使得类Y的信息的不确定性减少的程度。

    

     显然,对于数据集D而言,信息增益依赖于特征,不同特征往往具有不同的信息增益。信息增益大的特征具有更强的分类能力。。

   根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较他们的大小,选择信息增益最大的特征。

决策树的生成

  从根节点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。而C4.5算法是对ID3算法进行了改进。在C4.5的生成树过程中,是用信息增益比来选择特征的。

  这里在介绍一下CART算法,CART假设决策树是二叉树,内部结点特征取值为“是”或者“否”的行为分支,比如对于年龄不是分为老、中、青年,而是选择其中一个子特性进行二分,比如“是青年”和“不是青年”,再者,也是基于基尼指数,基尼指数数值越大,样本集合的不确定性也就越大,和熵类似。分类树用基尼指数选择最优特征,同时决定该特征的最优二指切分点。

使用决策树做预测需要以下过程:

  • 收集数据:可以使用任何方法。比如想构建一个相亲系统,我们可以从媒婆那里,或者通过参访相亲对象获取数据。根据他们考虑的因素和最终的选择结果,就可以得到一些供我们利用的数据了。
  • 准备数据:收集完的数据,我们要进行整理,将这些所有收集的信息按照一定规则整理出来,并排版,方便我们进行后续处理。
  • 分析数据:可以使用任何方法,决策树构造完成之后,我们可以检查决策树图形是否符合预期。
  • 训练算法:这个过程也就是构造决策树,同样也可以说是决策树学习,就是构造一个决策树的数据结构。
  • 测试算法:使用经验树计算错误率。当错误率达到了可接收范围,这个决策树就可以投放使用了。
  • 使用算法:此步骤可以使用适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。 

决策树的剪枝

决策树生成算法递归的产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知测试数据的分类缺没有那么精确,即会出现过拟合现象。过拟合产生的原因在于在学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决方法是考虑决策树的复杂度,对已经生成的树进行简化。

剪枝(pruning):从已经生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶子节点,从而简化分类树模型。

实现方式:极小化决策树整体的损失函数或代价函数来实现

决策树学习的损失函数定义为:

 

[Math Processing Error]

因为

所以有[Math Processing Error]

其中:

参数意义
[Math Processing Error]C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度;
[Math Processing Error]|T|表示模型复杂度
[Math Processing Error]α参数[Math Processing Error]α>=0控制两者之间的影响,较大的[Math Processing Error]α促使选择较简单的模型(树),较小的[Math Processing Error]α促使选择较复杂的模型(树),[Math Processing Error]α=0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。

剪枝就是当[Math Processing Error]α确定时,选择损失函数最小的模型,即损失函数最小的子树。

  • 当[Math Processing Error]α值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度越高;
  • 子树越小,模型的复杂度就越低,但是往往与训练数据的拟合不好
  • 损失函数正好表示了对两者的平衡。

损失函数认为对于每个分类终点(叶子节点)的不确定性程度就是分类的损失因子,而叶子节点的个数是模型的复杂程度,作为惩罚项,损失函数的第一项是样本的训练误差,第二项是模型的复杂度。如果一棵子树的损失函数值越大,说明这棵子树越差,因此我们希望让每一棵子树的损失函数值尽可能得小,损失函数最小化就是用正则化的极大似然估计进行模型选择的过程。

决策树的剪枝过程(泛化过程)就是从叶子节点开始递归,记其父节点将所有子节点回缩后的子树为Tb(分类值取类别比例最大的特征值),未回缩的子树为[Math Processing Error]Ta,如果[Math Processing Error]Cα(Ta)≥Cα(Tb)说明回缩后使得损失函数减小了,那么应该使这棵子树回缩,递归直到无法回缩为止,这样使用“贪心”的思想进行剪枝可以降低损失函数值,也使决策树得到泛化。

可以看出,决策树的生成只是考虑通过提高信息增益对训练数据进行更好的拟合,而决策树剪枝通过优化损失函数还考虑了减小模型复杂度。

公式[Math Processing Error]Cα(T)=C(T)+α|T|定义的损失函数的极小化等价于正则化的极大似然估计,剪枝过程示意图: 
这里写图片描述

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值