我是靠谱客的博主 激昂电脑,最近开发中收集的这篇文章主要介绍数据挖掘算法----决策树,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简介

决策树(Decision Tree)算法,属于机器学习有监督分类算法的一种,决策树是一个预测模型。决策树是一种用于对实例进行分类的树形结构。由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点与叶结点,内结点表示一个特征或属性的测试条件(用于分开具有不同特性的记录),叶结点表示一个分类。

使用决策树模型,首先构建决策树,然后从决策树的根结点开始,沿着内部结点的属性测试条件选择适当的分支,得到最终的叶结点分类。

决策树基本流程

输入:训练集D={(x1,y1),(x2,y2),...,(xm,ym)};
     属性集A={a1,a2,....,ad}
过程:函数TreeGenerate(D,A)
1:生成结点node
2:if D 中样本全属于同一类别C then
3:    将node标记为C类叶结点; return;(1)
4:end if
5:if A=空 OR D 中样本在 A 上取值相同  then
6:    将node标记为叶结点,其类别标记为D中样本数最多的类; return;(2)
7:end if
8:从A中选择最优划分属性a*;
9:for a* 的每一个值 a*v do
10:    为node生成一个分支; 令Dv表示D中在a*上取值为a*v的样本子集;
11:    if Dv 为空 then
12:        将分支结点标记为叶结点,其类别标记为D中样本最多的类; return;(3)
13:    else
14:        以TreeGenerate(Dv,A{a*})为分支结点
15:    end if
16:end for

在决策树基本算法中,有三种情形会导致递归返回:(1)当前结点包含的样本全属于同一类别,无需划分;(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;(3)当前结点包含的样本集合为空,不能划分;

在第(2)中情形下,把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别;在第(3)中情形下,同样将当前结点标记为叶结点,但将其类别设定为其父结点所含样本最多的类别;注意这两种情形处理的实质不同:情形(2)是在利用当前结点的后验分布,而情形(3)则是把父结点的样本分布作为当前结点的先验分布。

决策树构建---Hunt算法

Hunt算法是一种采用局部最优策略构建决策树的算法,通过将训练记录相继划分为较纯的子集以递归的方式建立决策树。假设D_{t}是与结点 相关联的训练记录集,y=left { y_{1},y_{2}.....y_{c} right }是类标号,递归过程如下:

(1)若D_{t}中所有记录都属于同一类,则 t 是叶结点,使用y_{t}来标记。

(2)若D_{t}中包含属于多个类的记录,则选择一个属性测试条件,将记录划分为较小的子集,对测试条件的每个输出,创建一个子女结点,并根据测试结果将记录分布到子女结点中,对于每个子女结点,递归调用该算法。

划分选择

决策树学习的关键一步是选择最优划分属性。一般而言,随着划分过程不断进行。决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高。

1、基尼系数(Gini)

对于一个给定的结点 t ,基尼系数的计算公式为

 GINI(t)=sum_{j}left [ P(j|t) right ]{_{}}^{}{2},其中P(j|t)表示给定结点 t 中属于类 j 的记录所占比例。

选择最佳划分的度量通常是根据划分后子女结点的不纯性的程度,不纯的程度越低,类分布就越倾斜。基尼系数越小,则数据集D的纯度越高。

通过比较父结点与子女结点的不纯程度来计算测试条件的效果,两者差值越大,测试条件的效果越好。

Delta =Ileft ( parent right )-sum_{j=1}^{k}frac{Nleft ( V_{j} right )}{N}Ileft ( V_{j}right ),其中Ileft ( . right )是给定结点的不纯度度量,N 是父结点上的记录总数,k 是属性值的个数,Nleft ( V_{j} right )是与子女结点V_{j}相关联的记录个数,决策树构建算法通常选择最大化增益Delta的测试条件。

2、信息熵(Entropy)

香农提出“信息熵”的概念,一条信息的信息量大小和它的不确定性有直接关系,对一样东西越是一无所知,想要了解它就需要越多的信息。

对于给定的结点 t ,信息熵公式为:

Entropyleft ( t right )=-sum_{j}Pleft ( j|t right )log Pleft ( j|t right ),其中P(j|t)表示给定结点 t 中属于类 j 的记录所占比例。信息熵的值越小,则D的纯度越高。

信息增益(Information gain),ID3决策树学习算法以信息增益为准则来选择划分属性。

GAIN=Entropyleft ( p right )-left [ sum_{i=1}^{k}frac{n_{i}}{n}Entropyleft ( p right )right ],其中 p 为父结点,p 被划分为 k 类,n_{i}是划分为第 i 类的记录的数量。信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。

信息增益的缺点是信息增益大小是相对训练集而言的,训练数据集的经验熵比较大时,信息增益会偏大。

增益率(Information gain ratio),C4.5决策树学习算法以增益率为准则划分属性。

SpiltInfo=-sum_{i=1}^{k}frac{n_{i}}{n}log frac{n_{i}}{n}GainRatioSpilt=frac{GAIN}{SpiltInfo}

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

3、分类误差(classfication error)

给定一个结点 t ,分类误差的定义为Error(t)=1-maxP(i|t).

剪枝处理

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

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

连续值与缺失值

 

参考:

【1】https://blog.csdn.net/baimafujinji/article/details/51724371

【2】机器学习,周志华

 

最后

以上就是激昂电脑为你收集整理的数据挖掘算法----决策树的全部内容,希望文章能够帮你解决数据挖掘算法----决策树所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部