《机器学习西瓜书》学习笔记——第四章_决策树

本文深入解析决策树这一常见机器学习算法,阐述其基本概念、划分选择准则如信息增益、增益率及基尼指数,并探讨剪枝处理、连续与缺失值的处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 基本概念

决策树是一类常见的机器学习算法,是一种简单但是广泛使用的分类器。顾名思义,决策树基于树结构进行决策。一般的,一颗决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集。从根结点到每个叶结点的路径对应一个判定测试序列。
决策树学习的目的是为了产生一颗泛化能力强,即处理未见示例能力强的决策树。

  • 决策数有两大优点:
    1)决策树模型可以读性好,具有描述性,有助于人工分析;
    2)效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。

2. 划分选择

决策树学习的关键是如何选择最优划分属性,一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能的属于同一类别,即结点的"纯度"越来越高。这里介绍三个划分准则:

2.1 信息增益

“信息熵”是度量样本集合纯度最常用的一种指标。假定当前样本集合DDD中第kkk类样本所占的比例为pk(k=1,2,3,...∣Y∣)p_k(k=1,2,3,...|\mathcal{Y}|)pk(k=1,2,3,...Y),z则DDD的信息熵定义为

Ent(D)=−∑k=1∣Y∣pklog2pkEnt(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_k log_2^{p_k}Ent(D)=k=1Ypklog2pk

约定:若p=0p=0p=0,则plog2p=0plog_2^p=0plog2p=0

Ent(D)Ent(D)Ent(D)的值越小,则DDD的纯度越高。

假定离散属性aaa有V个可能的取值{a1,a2,...aV}\{a^1,a^2,...a^V\}{a1,a2,...aV},若使用a来对样本集DDD进行划分,则会产生VVV个分支结点,其中第vvv个分支结点包含了DDD中所有在属性aaa上取值为ava^vav的样本,记为DvD^vDv.根据上式计算出DvD^vDv的信息熵,考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重∣Dv∣/∣D∣|D^v|/|D|Dv/D,即样本数越多的分支结点的影响越大,于是可计算出用属性aaa对样本集进行划分所获得的“信息增益”。

Gain(D,a)=Ent(D)−∑v=1V∣Dv∣∣D∣Ent(Dv)Gain(D,a)=Ent(D)-{\sum_{v=1}^V{|D^v|\over|D|} Ent(D^v)}Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

一般而言,信息增益越大,意味着使用属性aaa来进行划分所获得的“纯度提升”越大,因此,可用信息增益来进行决策树的划分属性选择,即选用a∗=arg⁡a_*=\arga=arg maxGain(D,a), ID3决策树学习算法就是用此准则来选择划分属性。

2.2 增益率

信息增益准则对可取数值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,著名的C4.5决策树算法不直接使用信息熵,而是使用“增益率”来选择最优划分属性。增益率定义为:
Gain_ratio(D,a)Gain\_ratio(D,a)Gain_ratio(D,a)=Gain(D,a)IV(a)Gain(D,a)\over IV(a)IV(a)Gain(D,a)
其中
IV(a)=−∑v=1V∣Dv∣∣D∣log2∣Dv∣∣D∣IV(a)= - {\sum_{v=1}^V{|D^v|\over|D|} log_2 ^{|D^v|\over|D|}}IV(a)=v=1VDDvlog2DDv
称为属性aaa的固有值,属性aaa的可能取值数目越大(V越大),IV(a)IV(a)IV(a)的值通常会越大。

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

2.3 基尼指数

CART决策树使用“基尼指数”来选择划分属性,数据集DDD的纯度可用基尼指指来度量:
Gini(D)=∑k=1∣Y∣∑k′≠kpkpk′Gini(D)=\sum_{k=1}^{|\mathcal{Y}|}\sum_{k'\neq k} p_kp_{k'}Gini(D)=k=1Yk̸=kpkpk =1-∑k=1∣Y∣pk2\sum_{k=1}^{|\mathcal{Y}|}p_k^2k=1Ypk2
直观上,Gini(D)Gini(D)Gini(D)反应了从数据集DDD中随机抽取两个样本,其类别标记不一致的概率,因此Gini(D)Gini(D)Gini(D)越小,数据集DDD的纯度越高。

属性aaa的基尼指数定义为

Gini_index(D,a)(D,a)(D,a)=∑v=1V∣Dv∣∣D∣Gini(Dv)\sum_{v=1}^V {|D^v|\over|D|}Gini(D^v)v=1VDDvGini(Dv)

于是,我们在候选属性集合A中,选择使得划分后基尼指数最小的属性作为最优划分属性,即a∗=arg⁡a_*=\arga=arg min Gini_index(D,a)Gini\_index(D,a)Gini_index(D,a).

3. 剪枝处理

剪枝是决策树学习算法针对“过拟合”的主要手段。决策树学习中,为了尽可能正确的分类样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时需要“剪枝”来降低过拟合的风险。剪枝方法和程度对决策树泛化性能影响显著。
决策树剪枝的基本策略有“预剪枝”和“后剪枝”
预剪枝是指在决策过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前结点标记为叶节点;
后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来泛化性能提升,则将该子树替换为叶结点。

预剪枝

后剪枝

4.连续与缺失值

连续值处理

采用连续属性离散化技术
简单策略,二分法(C4.5采用的机制)

缺失值处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值