西瓜书+实战+吴恩达机器学习(七)监督学习之决策树 Decision Tree

文章目录

  • 0. 前言
  • 1. 划分选择
    • 1.1. ID3决策树
    • 1.2. C4.5决策树
    • 1.3. CART决策树
  • 2. 剪枝
  • 3. 连续值处理
  • 4. 缺失值处理

如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

0. 前言

一颗决策树包含一个根节点、若干个内部节点、若干个叶子节点,叶子节点对应于决策结果,其他每个节点对应于一个属性测试

构建决策树算法如下图所示(图源:机器学习):
西瓜书+实战+吴恩达机器学习(七)监督学习之决策树 Decision Tree_第1张图片
有以下三种情况递归返回:

  • 当前节点的所有样本都属于同一个类别
  • 当前可划分的属性集为空,或者属性集的取值都相同
  • 当前节点的样本集为空

1. 划分选择

1.1. ID3决策树

信息熵(information entropy)越小,则节点纯度越高,其中 p k p_k pk表示第 k k k类样本所占比例:
E n t ( D ) = − ∑ k = 1 ∣ K ∣ p k log ⁡ 2 p k Ent(D)=-\sum_{k=1}^{|K|}p_k\log_2p_k Ent(D)=k=1Kpklog2pk

信息增益(information gain)越大,则意味使用属性 a a a划分获得的纯度提升越大,其中 D v D^v Dv表示为 D D D中在属性 a a a上取值为 a v a^v av的样本:
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

信息增益更偏向于选择取值较多的特征。

ID3决策树每次划分节点时,使用信息增益最大的属性。

1.2. C4.5决策树

增益率(gain ratio)在信息增益的基础上,除以属性 a a a的固有值 I V ( a ) IV(a) IV(a),属性 a a a取值数目越多,固有值 I V ( a ) IV(a) IV(a)越大:
G a i n   r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) = G a i n ( D , a ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ Gain\ ratio(D,a)=\frac{Gain(D,a)}{IV(a)}=\frac{Gain(D,a)}{-\sum_{v=1}^V\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|}} Gain ratio(D,a)=IV(a)Gain(D,a)=v=1VDDvlog2DDvGain(D,a)

增益率更偏向于选择取值较少的特征。

C4.5决策树每次划分节点时,使用增益率最大的属性。

综合以上,可以采用一种启发式算法:先选择信息增益高于平均水平的属性,再选择增益率最高的属性。

1.3. CART决策树

基尼值(gini)反映了从数据集中随机抽取两个样本,类别不一致的概率,因此,基尼值越小,数据集纯度越高:
G i n i ( D ) = ∑ k = 1 ∣ K ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ K ∣ p k 2 Gini(D)=\sum_{k=1}^{|K|}\sum_{k'\neq k}p_kp_{k'}=1-\sum_{k=1}^{|K|}p_k^2 Gini(D)=k=1Kk̸=kpkpk=1k=1Kpk2

基尼指数(gini index)定义为:
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)

方差表示为:
σ 2 ( D , a ) = ∑ v = 1 V σ v 2 \sigma^2(D,a)=\sum_{v=1}^V\sigma_v^2 σ2(D,a)=v=1Vσv2

CART(Classification and Regression Tree)分类回归树是二叉树

当作为分类树时,每次划分选择基尼指数最小的属性,叶子节点表示为样本中最多的类别。

当作为回归树时,每次划分选择方差最小属性,叶子节点表示为样本中的均值。

当CART作为回归树时,可以修改为模型树,此时叶子节点是线性拟合的参数,当数据由分段函数组成的时候,模型树可以更好的发挥它的作用。

2. 剪枝

剪枝是决策树解决过拟合的方法,主要有以下两种:

  • 预剪枝(prepruning):在决策树的生成过程中,对每个节点划分前先进性估计,如果当前节点划分不能带来决策树泛化性能提升,则不进行划分
  • 后剪枝(postpruning):在决策树生成之后,自底向上对非叶子节点考察,如果将该节点对应子树替换为叶子节点能带来泛化性能提升,则替换

预剪枝基于贪心的本质,带来了欠拟合的风险。

后剪枝欠拟合风险小,性能通常优于预剪枝,但是训练时间开销大。

3. 连续值处理

将属性的取值从小到大排序,记为 { a 1 , . . . , a n } \{a^1,...,a^n\} {a1,...,an},基于划分点 t t t可以将 D D D划分为 D t − D_t^- Dt D t + D_t^+ Dt+

候选划分集合为: T a = { a i + a i + 1 2 ∣ 1 ⩽ i ⩽ n − 1 } T_a=\{\frac{a^i+a^{i+1}}{2}|1\leqslant i\leqslant n-1\} Ta={2ai+ai+11in1}

信息增益修改为: E n t ( D ) − ∑ λ ∈ { − , + } ∣ D t λ ∣ ∣ D ∣ E n t ( D t λ ) Ent(D)-\sum_{\lambda \in \{-,+\}}\frac{|D_t^\lambda|}{|D|}Ent(D_t^\lambda) Ent(D)λ{,+}DDtλEnt(Dtλ)

4. 缺失值处理

给定训练集 D D D和属性 a a a,令 D ~ \tilde{D} D~表示在属性 a a a上没有缺失值的样本子集,令 D ~ v \tilde{D}^v D~v表示属性 a a a取值为 a v a^v av的样本子集, D ~ k \tilde{D}_k D~k表示第 k k k类的样本子集,为每个样本赋予权重 w x w_x wx,定义:
ρ = ∑ x ∈ D ~ w x ∑ x ∈ D w x p ~ k = ∑ x ∈ D ~ k w x ∑ x ∈ D w x r ~ v = ∑ x ∈ D ~ v w x ∑ x ∈ D w x \rho=\frac{\sum_{x\in \tilde{D}}w_x}{\sum_{x\in D}w_x}\\ \tilde{p}_k=\frac{\sum_{x\in \tilde{D}_k}w_x}{\sum_{x\in D}w_x}\\ \tilde{r}_v=\frac{\sum_{x\in \tilde{D}^v}w_x}{\sum_{x\in D}w_x}\\ ρ=xDwxxD~wxp~k=xDwxxD~kwxr~v=xDwxxD~vwx
ρ \rho ρ表示无缺失样本所占比例, p ~ k \tilde{p}_k p~k表示无缺失样本中第 k k k类所占比例, r ~ v \tilde{r}_v r~v表示无缺失样本在属性 a a a上取值为 a v a^v av的样本所占比例。

信息增益修改为: ρ × ( E n t ( D ~ ) − ∑ v = 1 V r ~ v E n t ( D ~ v ) ) \rho\times(Ent(\tilde{D})-\sum_{v=1}^V\tilde{r}_vEnt(\tilde{D}^v)) ρ×(Ent(D~)v=1Vr~vEnt(D~v))

若样本 x x x在划分属性 a a a上取值未知,则将 x x x同时划入所有子节点,且样本权值在与属性值 a v a^v av对应的子节点中调整为 r ~ v ⋅ w x \tilde{r}_v\cdot w_x r~vwx,直观看,就是让同一个样本以不同概率划入到不同子节点中。


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

你可能感兴趣的:(机器学习,机器学习,决策树,ID3,C4.5,CART)