我是靠谱客的博主 深情凉面,最近开发中收集的这篇文章主要介绍决策树原理一、概述二、基本原理三:优缺点四:算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、概述

决策树是一种功能强大而且较为受欢迎的分类预测工具。这种工具能以树形图将对实例分类时产生的规则表达出来。

决策树是一种典型的非线性分类器。

 

二、基本原理

2.1 表现形式

决策树基本组成部分:决策节点、分支、叶子。

其中每个分支都是一个新的决策节点或者叶子。

根节点:决策树最上边(开始)的节点。

决策节点:一个问题或决策,通常对应分类对象的属性。

叶子:一种可能的分类结果,树的末梢。

2.2 运行机制

对于一个问题(根节点)进行分类(或称分支),当分类不纯时,从不纯的节点(决策节点)以某种规则继续分类,以此类推,知道不再出现不纯的情况,即完全分类(叶子),此时,终止分类。

2.3 规则

决策树的规则从某种程度讲是实例属性值约束合取的折枝式。换句话说,从根节点到树叶的每一条路径都对应一组属性值的合取。而树本身是对这些组合的折取。

 

三:优缺点

优点: 通过决策树可以产生易于了解的规则(通过图的方式);计算少;能处理离散和连续型的数据;通过决策树可以清晰的指引哪些变量更重要;训练数据可以包含缺少属性值的数据。

缺点:对连续性字段较难预测;类别过多时,错误迅速上升。

 

四:算法

决策树的经典算法有:CLS(1966,Hunt,Marin,Stone),ID3(1979-1983-1986,J.R.Quinlan,经典),C4.5(1993,Quinlan,ID3的改进版)。此外还有CART(1984,Friedman,Breiman)算法,这种算法是由二元逻辑问题(只有正与反)生成。

理想的决策树有三种:

     A:叶子结点数最少。

     B:叶子结点深度最小。

     C:A&B

而优化决策树的目的就是:找到尽可能趋向于最优的决策树。

4.1 CLS(Concept Learning System)

CLS学习系统最初被用来学习单个概念。CLS算法是决策树众多学习算法的基础。

基本思想:从一个空的决策树开始,选择一个(分类)属性作为测试属性对应根节点或决策节点,根据该属性的值将训练样本分成相应子集,若其中的某子集为空或该子集中样本属于同一类,则该子集为叶节点;否则对应一个新的决策节点,需要重新选择一个新的(分类)属性对该子集继续进行划分,直到所有子集不可再划分或为空。

算法步骤

① 生成一颗空的决策树,一组样本属性集T,其中每个样本有如下属性{S1,S2,...,Sn},即每个样本有n个属性。

② 若T中样本都属于同一类则跳到第 ⑦ 步,否则继续。

③ 以某种策略从T中选择属性Si 作为测试属性,生成测试节点Si

④ 若属性Si中有值v1,...,vm。则将S分成m个子集:T1,...,Tm

⑤ 从训练样本属性集中删除属性Si

⑥ 对每个子集递归,跳到步骤 ② 调用CLS

⑦ 结束分类

算法缺陷:在步骤③中测试属性的选取并没有规定,但测试属性集的组成和测试属性选取的先后对决策树的学习有极其重要的影响。换句话说,测试属性选取的先后影响了决策树的复杂性和分类意义

4.2 ID3算法

基于CLS出现的问题,ID3算法主要针对属性选择问题,由此,ID3是决策树众多学习方法中最典型,最具影响力的算法。

该方法使用信息增益度来选择测试属性。而ID3则通过对信息量的大小进行度量从而获取信息增益度。

1948年shannon提出(信息论理论),以P(a)表示事件a发生的概率,则事件a的信息量

                                         I(a)=P(a)log_2 frac{1}{P(a)} = -P(a)log_2 P(a)

假设有n个互不相容的事件a1,...,an,其中有且仅有一个发生,则其平均信息量

                                                      I(a_1,...,a_n)=sum_{i=1}^{n}I(a_i)

在上式中不同的对数底数对应熵的不同单位,通常默认取2,且规定P(ai)=0时,I(ai)=0。

ID3基本思想:假设训练样本集S,该样本集个数|S|,将样本划分为m个不同类C1,...,Cm,这些类的大小分别标识为|C1|,...,|Cm|,则任意样本s属于类Ck的概率为:

                                                                  P(C_k)=frac{|C_k|}{|S|}

sum表示属性A所有可能的值,E(S,A)表示属性A的信息期望度,E(S)表示样本集S的决策类别C的期望度,E(Sv)表示Sv子集上决策类别C的期望度,G(S,A)表示属性A在S上的信息增益。Sv是属性A有v值的子集,|Sv|是Sv子集的元素个数。则有

E(S)=sum_{k=1}^{m} I(C_k)        ,    P(C_k,Sv)=frac{|C_k|}{|Sv|}           ,           E(Sv)=sum_{k=1}^{m} I(C_k,Sv)

E(S,A)=sum frac{|Sv|}{|S|}E(Sv)               ,                           G(S,A)=E(S)-E(S,A)

其G(S,A)越大,则A属性对分类提供的信息越多。

ID3算法步骤:

① 决定分类属性:类别

② 对目前数据表S,建立一个节点N。

③ 如果S中数据都属于同一类,则N为叶子,跳至步骤⑧,若S中数据为空,同样跳至步骤⑧,否则进行下一步

④ 如果S中没有其他(测试)属性可考虑,则N为叶子,叶子所属类别按少数服从多数抉择,跳至步骤⑧,否则进行下一步

⑤ 基于当前S根据“信息期望值Entropy” 或 “信息增益度Gains” 值选出一个最佳属性作为节点N的测试属性T。

⑥ 根据测试属性T的值(V1,...,Vm)生成m个分支:T1,...,Tm。并将S中属于该分支的数据收集至该分支,形成一
  一对应的数据表S1,...,Sm。并从这些表中删除当前属性T这一栏。

⑦ 对上述的m个分支,对每个分支都跳到步骤②迭代调用ID3算法建立决策树的子树。

⑧ 该分支分类结束

决策树的数据准备:由于原始样本中的数据可能是离散/连续的数值,也可能是对应每个样本唯一匹配的字符/数字标识,而决策树的缺点是如果分类类别过多时错误率快速上升,并且ID3算法不支持数据缺失等等,因此需要在训练模型前需要对原始数据进行处理,如下是数据处理/准备的准则:

①Data Cleaning 数据清洗:删除/减少noise,补填missing values

②Data transformation 数据变换:数据标准化(data normalization),数据归纳(控制每个属性可能值不超过七种,最好是不超过五种)

③Relevance analysis 相关性分析:删除与问题无关属性;删除属性可能值大于七种又不能归纳的属性

ID3算法缺陷:属性必须是离散值,不能有缺失值,容易过度拟合。

过度拟合的解决方案:1)及早停止树生长。2)后剪枝法

1)及早停止树生长:决策树学习要从候选集合中选择满足给定标准的最大化属性,并且不回溯。而其选择往往是局部最优而非是全局最优。我们知道,树结构越复杂,过度拟合可能性越大,因此应选择简单的模型。

Occan准则(又称剃刀):具有相同泛化误差的两个模型,较简单的模型更可取。

2)后剪枝法:在训练过程中允许对数据有过度拟合,然后再对树进行修剪。

4.3 C4.5算法

C4.5是对ID3算法进行改进后的算法,改进处:

①使用信息增益率来选择测试属性(克服了用信息增益选择属性时的不足:偏向属性取值多的属性)

②在树构造过程中剪枝

③能完成对连续属性的离散化处理

④支持不完整数据处理

最后

以上就是深情凉面为你收集整理的决策树原理一、概述二、基本原理三:优缺点四:算法的全部内容,希望文章能够帮你解决决策树原理一、概述二、基本原理三:优缺点四:算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部