决策树

决策树

1 如何划分决策树

1.1 决策树的构造

不同于贝叶斯算法,决策树的构造过程不依赖领域知识,它使用属性选择度量来选择将元组最好地划分成不同的类的属性。所谓决策树的构造就是进行属性选择度量确定各个特征属性之间的拓扑结构。

构造决策树的关键步骤是分裂属性。所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。分裂属性分为三种不同的情况:

  • 1、属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。

  • 2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。

- 3、属性是连续值。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。

属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心策略。这里介绍ID3和C4.5两种常用算法。

1.2 ID3 算法

ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。

信息熵
假定当前样本集合D中第k类样本所占的比例为 pk (k=1,2….,|y|),可以用属于此类别元素的数量除以训练元组元素总数量作为估计,则D的信息熵为

Ent(D)=k=1|y|pklog2pk

Ent(D)的值越小,则D的纯度越高。
熵的实际意义表示是D中元组的类标号所需要的平均信息量。

信息增益
假定离散属性a有V个可能的取值{a1,a2,…., av },若使用a对样本D进行划分,则会产生V个分支节点。其中第V个节点上取值为 av 的样本,记为 Dv 。则a对D划分的期望增益为:

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

故属性a对样本D进行划分所获得的“信息增益”(information gain):
Gain(D,a)=Ent(D)v=1V|Dv||D|Ent(Dv)

一般而言,信息增益越大意味着使用属性a来进行划分所获得的“纯度提升越大”

1.3 C4.5算法

注意: ID3算法存在一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。

C4.5算法首先定义了“分裂信息”,其定义可以表示成:

IV(a)=v=1V|Dv||D|log2|Dv||D|

增益率为:

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

其中,IV(a)称作属性a的固有值。属性a的可能取值数目越多,则IV(a)的值越大。因此增益率对取值数目较少的属性有所偏好。

1.4 基尼系数

除却上述两种选择划分属性的方法,CART决策树还可以使用基尼系数来选择划分。数据集D的纯度可以使用基尼系数来度量:

Gini(D)=k=1|y|kkpkpk=1k=1|y|p2k

Gini(D)越小。则数据集D的纯度越高。
则属性a的基尼系数为

Gini_index(D,a)=v=1V|Dv||D|Gini(Dv)

2 如何防止决策树的过拟合

2.1 剪枝处理

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

预剪枝和后剪枝判断度量为验证集精度是否提升

3 决策树样本值的连续与缺失

3.1 连续值处理

给定样本集D和连续属性a,若a在D上出现了n个不同的取值,则出现n-1 个区间,则在n-1 个区间内取中值,则可得离散值,然后根据1.2 或1.3公式划分生成决策树。

3.2 缺失值处理

对于样本集D中某一属性a,共有样本n个,缺失值k个,则共有n-k个无缺样本 D ,故

ρ=nkn

ρ 代表了无缺样本值所占得比例。
将无缺样本按ID3,C4.5算法处理,计算出属性a得信息增益Gain( D ,a),故属性a得真正信息增益为
Gain(D,a)=ρ×Gain(D,a)

4 优缺点

C4.5算法核心思想是ID3算法,是ID3算法的改进,改进方面有:

1)用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;

2)在树构造过程中进行剪枝

3)能处理非离散的数据

4)能处理不完整的数据

C4.5算法优点:产生的分类规则易于理解,准确率较高。

缺点:

1)在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。

2)C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值