机器学习(4)

一 决策树

1 决策树模型

决策树基于“树”结构进行决策

  • 每个“内部结点”对应于某个属性上的“测试”
  • 每个分支对应于该测试的一种可能结果(即该属性的某个取值)
  • 每个“叶节点”对应与一个“预测结果”

在这里插入图片描述
学习过程: 通过对训练样本的分析来确定“划分属性”(即内部结点所对应的属性)。
预测过程: 将测试示例从根结点开始,沿着划分属性所构成的“判定测试序列”下行,直到叶结点。

2 基本流程

策略: “分而治之”(divide-and-conquer)
自根至叶的递归过程
在每个中间结点寻找一个“划分”(split or test)属性

三种停止条件:

  1. 当前结点包含的样本全属于同一类别,无需划分;
  2. 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
  3. 当前结点包含的样本集合为空,不能划分。

3 基本算法

在这里插入图片描述

二 信息增益

1 信息增益(Information Gain)

信息熵(entropy) 是度量样本集合“纯度”最常用的一种指标,假定当前样本集合 D D D 中第 k k k 类样本所占的比例为 p k p_k pk,则 D D D 的信息熵定义为:
Ent ⁡ ( D ) = − ∑ k = 1 ∣ y ∣ p k log ⁡ 2 p k \operatorname { E n t } ( D ) = - \sum _ { k = 1 } ^ { |y| } p _ { k } \log _ { 2 } p _ { k } Ent(D)=k=1ypklog2pk E n t ( D ) Ent(D) Ent(D) 的值越小,则 D D D 的纯度越高
计算信息熵时约定:若 p = 0 p=0 p=0,则 p log ⁡ 2 p = 0 p\log_2p=0 plog2p=0
E n t ( D ) {Ent}(D) Ent(D) 的最小值为0,最大值为 log ⁡ 2 ∣ y ∣ \log_2|y| log2y
信息增益直接以信息熵为基础,计算当前划分对信息熵所造成的变化

离散属性 a a a 的取值: { a 1 , a 2 , ⋯   , a V } \{ a ^ { 1 } , a ^ { 2 } , \cdots , a ^ { V } \} {a1,a2,,aV}
D v : D D ^ { v }:D Dv:D中在 a a a 上取值 = a v =a^v =av 的样本集合
以属性 a a a 对数据集 D D D 进行划分所获得的信息增益为:
Gain ⁡ ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) \operatorname { G a i n } ( D , a ) = { E n t ( D ) }- \sum _ { v = 1 } ^ { V }\frac{|D^v|}{|D|}E n t( D ^ { v } ) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)在这里插入图片描述

2 一个例子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三 其他属性划分准则

1 增益率(Gain Ratio)

信息增益:对可取值数目较多的属性有所偏好
有明显弱点,例如:考虑将“编号”作为一个属性

增益率: ( G a i n _ r a t i o ( D , a ) = ( G a i n ( D ) , a ) Ⅳ ( a ) ( Gain\_ratio ( D , a ) = \frac { ( Gain ( D ) , a ) } { Ⅳ( a ) } (Gain_ratio(D,a)=(a)(Gain(D),a)

其中: Ⅳ ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ Ⅳ ( a ) = - \sum _ { v = 1 } ^ { V } \frac { | D ^ { v } | } { | D | } \log _ { 2 } \frac { | D ^ { v } | } { | D | } (a)=v=1VDDvlog2DDv

属性 a a a 的可能取值数目越多(即 Ⅴ Ⅴ 越大),则 Ⅳ ( a ) Ⅳ(a) (a) 的值通常就越大

启发式: 先从候选划分属性中找出信息增益高于平均水平的,再从中选取增益率最高的(C4.5算法中使用)

2 基尼指数(Gini Index)

G i n i ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ y ∣ p k 2 \begin{align*} G i n i ( D ) &= \sum _ { k = 1 } ^ { | y | } \sum _ { k ^ {'} ≠ k }p_kp_{k^{'}}\\ &=1-\sum _ { k = 1 } ^ { | y | } p _ { k } ^ { 2 } \end{align*} Gini(D)=k=1yk=kpkpk=1k=1ypk2反映了从 D D D 中随机抽取两个样例,其类别标记不一致的概率
Gini(D)越小,数据集D的纯度越高

属性 a a a 的基尼指数: G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ D ∣ G i n i ( D v ) Gini\_index ( D , a ) = \sum _ { v = 1 } ^ { V } | \frac { D ^ { v } } { | D | } Gini ( D ^ { v } ) Gini_index(D,a)=v=1VDDvGini(Dv)

在候选属性集合中,选取那个使划分后基尼指数最小的属性(CART算法中使用)

3 划分选择 vs. 剪枝

研究表明:划分选择的各种准则虽然对决策树的尺寸有较大影响,但对泛化性能的影响很有限
例如: 信息增益与基尼指数产生的结果,仅在约2%的情况下不同
剪枝方法和程度对决策树泛化性能的影响更为显著
在数据带噪时甚至可能将泛化性能提升25%

W h y ? Why? Why 剪枝(pruning)是决策树对付“过拟合”的主要手段
为了尽可能正确分类训练样本,有可能造成分支过多→过拟合
可通过主动去掉一些分支来降低过拟合的风险
基本策略:

  • 预剪枝(pre-pruning)提前终止某些分支的生长
  • 后剪枝(post-pruning)生成一棵完全树,再“回头”剪枝
    剪枝过程中需评估剪枝前后决策树的优劣

四 缺失值的处理

1 缺失值

现实应用中,经常会遇到属性值“缺失”(missing)现象
仅使用无缺失的样例?→对数据的极大浪费
使用带缺失值的样例,需解决:
Q1: 如何进行划分属性选择?
Q2: 给定划分属性,若样本在该属性上的值缺失,如何
进行划分?
基本思路:样本赋权,权重划分

2 一个例子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值