决策树

基本概念

1.决策树是基于树结构来进行决策的;

2.目的:产生一颗泛化能力强,即处理未见示例能力强的决策树,其基本的流程遵循简单直观的“分而治之”策略;

3.组成及代表含义:一个根结点,若干个内部结点;若干个叶结点;
+根结点和内部结点包含属性,叶结点对应数据类别
+每个结点的样本集合根据属性划分到子结点当中
+根结点包含样本全集,从根结点到叶结点包含了一条决策路径;

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

三种条件下导致递归返回:
1. 当前的结点包含的样本全属于同一类别,无需划分;
2. 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
3. 当前结点包含的样本集为空,不能划分。

结点的划分和选择

目标:决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。

信息增益

信息熵:度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占比例为 pk(k=1,2,...,|y|), 则D的信息熵定义为:

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

假定离散属性 aV 个可能的取值 {a1,a2,...,aV}, 若使用 aD 进行划分,则会产生 V 个分支结点,其中第v个分支结点包含了 Da 上取值为 aVDv ,则可以通过1式来求得该属性值下的信息熵;根据属性的不同取值,我们可以将分支节点赋予权重: |Dv|/|D| ,这样我们可以计算出根据属性 a 进行划分时所获得的“信息增益”:

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

++信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。
++选择结点规则: a=argmaxaAGain(D,a) (ID3算法的选取规则)
(西瓜数据集2.0例很详细,p75-p77)
:ID3算法只有树生成,所以该算法生成的树容易造成过拟合。

增益率

C4.5决策树算法基于“信息增益率”来选择属性,采用2式相同的符号表示,增益率定义为:

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

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

采用启发式方法来选择划分属性:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

基尼指数

CART决策树(回归树)使用“基尼指数”(Gini index)来挑选划分属性。则数据集D可以用基尼值来度量:

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

Gini指数含义:反映从数据集D中随机抽取两样本,其类别标记不一致的概率。因此,Gini(D)越小,则数据集D的纯度越高。

属性a的基尼指数定义为:

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

选择使得划分后基尼指数最小的属性作为最优化分属性,即:
a=argaAminGini_index(D,a)

剪枝处理

+对付“过拟合”的手段
+过拟合:在决策树学习中,为了尽可能的将损失函数降到最小,结点划分过程不断重复,造成决策树分支过多,以至于把训练集自身的一些特点当做所有数据的一般特点而导致过拟合。
+预剪枝:对每个结点划分前进行估计,若当前结点的划分不能带来决策树的泛化性能的提升,则停止划分并将当前结点标记为叶节点;
+后剪枝:从训练集生成一颗完整的决策树,然后自底向上对非叶节点进行考察,若将该结点对应的子树替换为叶结点能带来决策树的提升,则将该子树替换为叶结点。
(西瓜书里面的例子用验证集精度来对决策树进行评估,统计学习方法里面用损失函数值来进行评估,窃以为后者更加严格规范一些)

连续值与缺失值处理

连续值处理

+策略:连续属性离散化,采用二分法对连续属性进行处理。
+具体描述:
给定样本集D和连续属性a,假定a在D上出现了n个不同的取值,将这些值从小到大进行排序,记为 {a1,a2,...,an} 。基于划分点t可将D分为子集 Dt (取值不大于t的样本)和 D+t (取值大于t的样本)。划分点集合:

Ta={ai+ai+12|1in1},ai+ai+12

信息增益:
Gain(D,a)=maxtTaGain(D,a,t)=maxtTaEnt(D)λ{,+}|Dλt|DEnt(Dλt),t

:若当前结点为连续属性,则还可以作为其后代的划分属性。

缺失值处理

需要解决的两个问题:属性值缺失的情况下进行划分属性选择;样本在该属性上的值缺失,对样本进行划分。
具体描述:
问题一:
定义:

ρ=xD^wxxDwx;p^k=xD^kwxxDwx;r^v=xD^vwxxDwx

wx 为每个样本赋予的权重; D^ 表示D中在属性a上没有缺失值的样本子集;
D^k 表示在属性a上属于类别k的个数; D^v 表示属性a取值为v的样本个数;
ρ :在属性a上没有缺失值的比例; p^k :在属性a上属于类别k的比例;
r^v :在属性a上取值为v的个数所占的比例。
基于上述定义,我们将信息增益的计算式推广为:
Gain(D,a)=ρGain(D^,a)=ρ(Ent(D^)v=1Vr^vEnt(D^v))

其中: Ent(D^)=|y|k=1p^klog2p^k

问题二:
+若样本x在划分属性a上的取值已知:x划入与其取值对应的子节点,且样本权值保持为 wx
+若样本x在划分属性a上的取值未知:x同时划入所有子节点,且样本权值在子节点中调整为: r^vwx (让同一个样本以不同的概率划分到不同的子节点当中)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值