机器学习中决策树浅析

来源:互联网 发布:淘宝营销推广方案 编辑:程序博客网 时间:2024/06/18 02:38

引言

在本文中主要分析了决策树的相关知识,主要包含了决策树的原理分析、数学公式。首先了解到决策树是用来分类。分类问题不仅是一个普遍存在的问题,而且是其他更加复杂的决策问题的基础,更是机器学习和数据挖掘技术中最庞大的一类算法家族。

决策树概念

这里借用周志华西瓜书的一个例子,例如当我们拿到一个西瓜时,有颜色、根底好坏、敲打发出的声响等特征(这里的每一个特征就是一个西瓜的属性),通过一定的规则判断首先使用哪个属性分类可以获得高的可信度,假如颜色的可信度较高,则将颜色属性作为根节点。后面使用同样的规则进行,直至到达叶子节点。其中叶子节点代表分类结果,中间的每个节点代表了西瓜的每个属性。通过训练集数据建立决策树,当有新的数据时,则根据决策树判断这个瓜的好坏。决策树中常用的算法有ID3算法、c4.5算法等。

决策树中ID3算法

在决策树中,我们每次使用较优的属性进行划分。随着划分的进行,我们希望决策树的分支节点所包含的样本属于同一个类别,即分类结果的纯度。
在信息论,我们学过,我们期望的信息越小,则信息增益越大。我们使用信息增益判别属性的优劣。首先介绍一下信息熵,信息熵的作用主要用来衡量样本集合的纯度。
我们假定在当前样本集合D中,第k类样本所占的比例为pk,则D的信息熵为

Ent(D)=k=1npklog2pk

其中Ent(D)越小,则样本集D越高
假定属性a有v个离散的取值{a1,a2...av},并且第v个取值对应的样本数量为Dv,则信息增益为

Gain(D,a)=Ent(D)v=1V|Dv||D|Ent(Dv)

一般来说,信息增益越大,则纯度越高。
接下来我们使用一个具体的例子讲解算法的使用,我们检测账号的真实性。
这里写图片描述(图片来自于作者http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html,在此表示感谢)
s、m、l代表了小中大关系。
首先计算日志的亲密度的信息增益
我们可以看到“真实”类别占到710,而“非真实”类别占到310,因此可以计算信息熵为
Ent(D)=k=1npklog2pk=(710log2710+310log2310)=0.879

我们看到日志亲密度一共有s、m、l三个类别,首先看一下s包含了样本集有3个,其中一个yes,其余两个类别为no。
Ent(Ds)=(13log213+23log223)

Ent(Dm)=(34log234+34log234)

Ent(Dl)=(03log203+33log233)

则日志亲密度的信息增益为
Gain(D,a)=Ent(D)v=1V|Dv||D|Ent(Dv)=Ent(D)310Ent(Ds)410Ent(Dm)310Ent(Dl)=0.276

使用同样的方法可以得到好友密度、是否使用真实头像的信息增益分别为0.0330.553
因为是否使用真实头像具有最大的信息增益,所以第一次分裂选择是否使用真实头像为分裂属性,分裂后的结果如下图表示:
这里写图片描述在上图的基础上,再递归使用这个方法计算子节点的分裂属性,最终就可以得到整个决策树。

C4.5算法

在这里我们简述一下c4.5算法的优缺点以及原理。
信息增益对去之术木较多的属性具有偏好,为了减少这种偏好带来的不利影响,因此后面提出了c4.5算法。该算法使用增益率来选择最优属性划分。

Gain_ratio(D,a)=Gain(D,a)IV(a)

其中
IV(a)=v=1V|Dv|Dlog2|Dv|D

其中IV(a)称为a的固有值,从中选出增益率高的,作为划分依据。

剪枝处理

在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题。
剪枝pruning是决策树学习算法对付“过拟合”的主要手段,决策树分支过多,以至于把训练集自身的一些特点当做所有数据都具有的一般性质而导致过拟合,“预剪枝”prepruning和“后剪枝”postpruning是决策树剪枝的两种基本策略,预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;后剪枝则是先从训练集生成一颗完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能的提升,则将该子树替换为叶结点。

决策树优点

  • 决策树可读性好,描述性比较好
  • 决策树效率高,一旦将决策树建立好,短期内可以长期实用