我是靠谱客的博主 喜悦手套,最近开发中收集的这篇文章主要介绍DataWhale-202110 树模型与集成学习(第一次)信息论的基础分类树的节点分裂CART树决策树剪枝知识回顾,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DataWhale-202110 树模型与集成学习

  • 信息论的基础
    • 节点纯度
      • 不确定性函数 H ( P ) H(P) H(P)
    • 决策树分裂
    • 信息增益
  • 分类树的节点分裂
    • 深度优先增长于最佳增益增长
  • CART树
    • 均方误差(熵)平均绝对误差(条件熵)
  • 决策树剪枝
  • 知识回顾
    • 第一题
    • 第二题
    • 第三题
    • 第四题
      • 处理连续值(转发)
      • 处理缺失值
    • 第五题
    • 第六题

信息论的基础

正如文档里面所说的一样,树具有一定的天然分支结构,在机器学习中有分类与回归两大问题,而分类问题中,树的分支结构起到一定的关键作用,首先引入的是节点纯度的概念

节点纯度

节点纯度反映的是节点样本标签的不确定性,当一个节点纯度较低的时候,说明分类的不确定性较高,而节点纯度较高的时候,代表着我们能够把握这个节点的具体信息,确定性较高

不确定性函数 H ( P ) H(P) H(P)

H ( p 1 , . . . , p n ) = − C ∑ i = 1 n p i log ⁡ p i H(p_1,...,p_n)=-Csum_{i=1}^np_ilog p_i H(p1,...,pn)=Ci=1npilogpi
其中满足信息熵条件是:

  1. H H H关于 p i p_i pi是连续函数。
  2. p 1 = . . . = p n p_1=...=p_n p1=...=pn,则 H H H关于 n n n单调递增。
  3. 若将某一个 p i p_i pi拆分为 p i 1 p_{i1} pi1 p i 2 p_{i2} pi2,即 p i 1 + p i 2 = p i p_{i1}+p_{i2}=p_i pi1+pi2=pi,则
    H ( p 1 , . . . , p i − 1 , p i + 1 , . . . , p n , p i 1 , p i 2 ) = H ( p 1 , . . . , p n ) + p i H ( p i 1 p i , p i 2 p i ) H(p_1,...,p_{i-1},p_{i+1},...,p_n,p_{i1},p_{i2})=H(p_1,...,p_n)+p_iH(frac{p_{i1}}{p_i}, frac{p_{i2}}{p_i}) H(p1,...,pi1,pi+1,...,pn,pi1,pi2)=H(p1,...,pn)+piH(pipi1,pipi2)

对于定义在有限状态集合 { y 1 , . . . , y K } {y_1,...,y_K} {y1,...,yK}上的离散变量而言,对应信息熵的最大值在离散均匀分布时取到,最小值在单点分布时取到。此时,离散信息熵为
H ( Y ) = − ∑ k = 1 K p ( y k ) log ⁡ 2 p ( y k ) H(Y)=-sum_{k=1}^K p(y_k)log_2p(y_k) H(Y)=k=1Kp(yk)log2p(yk)

决策树分裂

在决策树的分裂过程中,我们不但需要考察本节点的不确定性或纯度,而且还要考察子节点的平均不确定性或平均纯度来决定是否进行分裂。自然定义出条件熵 H ( Y ∣ X ) H(Y|X) H(YX)
E X [ E Y ∣ X [ − log ⁡ 2 p ( Y ∣ X ) ] ] mathbb{E}_{X}[mathbb{E}_{Yvert X}[-log_2p(Yvert X)]] EX[EYX[log2p(YX)]]
设随机变量 X X X所有可能的取值为 { x 1 , . . . , x M } {x_1,...,x_M} {x1,...,xM},上式可展开为
− ∑ m = 1 M p ( x m ) ∑ k = 1 K p ( y k ∣ X = x m ) log ⁡ 2 p ( y k ∣ X = x m ) -sum_{m=1}^Mp(x_m)sum_{k=1}^K p(y_kvert X=x_m)log_2p(y_kvert X=x_m) m=1Mp(xm)k=1Kp(ykX=xm)log2p(ykX=xm)

信息增益

有了信息熵与条件熵的基础,我们便可以定义出信息增益这一个概念,即通俗理解为节点分裂后带来了多少的不确定性的降低或纯度的提高,即公式如下所示,
G ( Y , X ) = H ( Y ) − H ( Y ∣ X ) G(Y,X)=H(Y)-H(Yvert X) G(Y,X)=H(Y)H(YX)

分类树的节点分裂

对于每个节点进行分裂决策时,我们会抽出max_features个特征进行遍历以比较信息增益的大小。特征的类别可以分为三种情况讨论:类别特征、数值特征和含缺失值的特征。

  • 类别特征
  • 数值特征
  • 含缺失值特征

深度优先增长于最佳增益增长

深度优先生长采用深度优先搜索的方法:若当前节点存在未搜索过的子节点,则当前节点跳转到子节点进行分裂决策;若当前节点为叶节点,则调转到上一层节点,直到根节点不存在未搜索过的子节点为止。对上图而言,当前节点为2号,它的两个子节点4号和5号都没有被搜索过,因此下一步则选择两个节点中的一个进行跳转。当决策树使用最佳增益生长时,每次总是选择会带来最大相对信息增益的节点进行分裂,直到叶节点的最大数量达到max_left_nodes。

CART树

CART(Classification And Regression Tree)是一棵二叉树,它既能处理分类问题,又能够处理回归问题。,对于回归问题来说,每一个叶节点输出的是样本标签的均值,而在每次回归树分裂过程中,我们希望不同的子节点之间差异变大,而每个子节点内部的差异较小,因此我们将熵与条件熵使用新的概念进行替换

均方误差(熵)平均绝对误差(条件熵)

设节点 N N N的样本标签为 y 1 ( D ) , . . . , y N ( D ) y^{(D)}_1,...,y^{(D)}_N y1(D),...,yN(D),左右子节点的样本个数分别为 y 1 ( L ) , . . . , y N R ( L ) y^{(L)}_1,...,y^{(L)}_{N_R} y1(L),...,yNR(L) y 1 ( R ) , . . . , y N R ( R ) y^{(R)}_1,...,y^{(R)}_{N_R} y1(R),...,yNR(R),记 y ˉ ( D ) = 1 N ∑ i = 1 N y i ( D ) bar{y}^{(D)}=frac{1}{N}sum_{i=1}^{N}y^{(D)}_i yˉ(D)=N1i=1Nyi(D) y ˉ ( L ) = 1 N L ∑ i = 1 N L y i ( L ) bar{y}^{(L)}=frac{1}{N_L}sum_{i=1}^{N_L}y^{(L)}_i yˉ(L)=NL1i=1NLyi(L) y ˉ ( R ) = 1 N R ∑ i = 1 N R y i ( R ) bar{y}^{(R)}=frac{1}{N_R}sum_{i=1}^{N_R}y^{(R)}_i yˉ(R)=NR1i=1NRyi(R)分别为节点 N N N的样本标签均值、左子节点的样本标签均值和右子节点的样本标签均值,再记 y ~ ( D ) tilde{y}^{(D)} y~(D) y ~ ( L ) tilde{y}^{(L)} y~(L) y ~ ( R ) tilde{y}^{(R)} y~(R)分别为节点 N N N的样本标签中位数、左子节点的样本标签中位数和右子节点的样本标签中位数。
G M S E ( Y , X ) = 1 N ∑ i = 1 N ( y i ( D ) − y ˉ ( D ) ) 2 − N L N 1 N L ∑ i = 1 N L ( y i ( L ) − y ˉ ( L ) ) 2 − N R N 1 N R ∑ i = 1 N R ( y i ( R ) − y ˉ ( R ) ) 2 G^{MSE}(Y,X)=frac{1}{N}sum_{i=1}^{N}(y^{(D)}_i-bar{y}^{(D)})^2-frac{N_L}{N}frac{1}{N_L}sum_{i=1}^{N_L}(y^{(L)}_i-bar{y}^{(L)})^2-frac{N_R}{N}frac{1}{N_R}sum_{i=1}^{N_R}(y^{(R)}_i-bar{y}^{(R)})^2 GMSE(Y,X)=N1i=1N(yi(D)yˉ(D))2NNLNL1i=1NL(yi(L)yˉ(L))2NNRNR1i=1NR(yi(R)yˉ(R))2
G M A E ( Y , X ) = 1 N ∑ i = 1 N ∣ y i ( D ) − y ~ ( D ) ∣ − N L N 1 N L ∑ i = 1 N L ∣ y i ( L ) − y ~ ( L ) ∣ − N R N ∑ i = 1 N R 1 N R ∣ y i ( R ) − y ~ ( R ) ∣ G^{MAE}(Y,X)=frac{1}{N}sum_{i=1}^{N}vert y^{(D)}_i-tilde{y}^{(D)}vert-frac{N_L}{N}frac{1}{N_L}sum_{i=1}^{N_L}vert y^{(L)}_i-tilde{y}^{(L)}vert-frac{N_R}{N}sum_{i=1}^{N_R}frac{1}{N_R}vert y^{(R)}_i-tilde{y}^{(R)}vert GMAE(Y,X)=N1i=1Nyi(D)y~(D)NNLNL1i=1NLyi(L)y~(L)NNRi=1NRNR1yi(R)y~(R)
而CART树中将熵采用一阶泰勒展开,用熵的线性近似定义基尼系数(Gini)
G i n i ( Y ) = E Y [ 1 − p ( Y ) ] = ∑ k = 1 K p ~ ( y k ) ( 1 − p ~ ( y k ) ) = 1 − ∑ k = 1 K p ~ 2 ( y k ) begin{aligned} {rm Gini}(Y)&=mathbb{E}_Y[1-p(Y)]\ &=sum_{k=1}^K tilde{p}(y_k)(1-tilde{p}(y_k))\ &=1-sum_{k=1}^Ktilde{p}^2(y_k) end{aligned} Gini(Y)=EY[1p(Y)]=k=1Kp~(yk)(1p~(yk))=1k=1Kp~2(yk)
条件基尼系数
G i n i ( Y ∣ X ) = E X [ E Y ∣ X 1 − p ( Y ∣ X ) ] = ∑ m = 1 M p ~ ( x m ) ∑ k = 1 K [ p ~ ( y k ∣ x m ) ( 1 − p ~ ( y k ∣ x m ) ) ] = ∑ m = 1 M p ~ ( x m ) [ 1 − ∑ k = 1 K p ~ 2 ( y k ∣ x m ) ] begin{aligned} {rm Gini}(Yvert X)&=mathbb{E}_X[mathbb{E}_{Yvert X}1-p(Yvert X)]\ &=sum_{m=1}^M tilde{p}(x_m)sum_{k=1}^K[tilde{p}(y_kvert x_m)(1-tilde{p}(y_kvert x_m))]\ &=sum_{m=1}^M tilde{p}(x_m)[1-sum_{k=1}^Ktilde{p}^2(y_kvert x_m)] end{aligned} Gini(YX)=EX[EYX1p(YX)]=m=1Mp~(xm)k=1K[p~(ykxm)(1p~(ykxm))]=m=1Mp~(xm)[1k=1Kp~2(ykxm)]
自然而然的定义一个关于基尼系数的信息增益为
G ( Y , X ) = G i n i ( Y ) − G i n i ( Y ∣ X ) G(Y,X)={rm Gini}(Y)-{rm Gini}(Yvert X) G(Y,X)=Gini(Y)Gini(YX)

决策树剪枝

在sklearn的CART实现中,一共有6个控制预剪枝策略的参数,它们分别是最大树深度max_depth、节点分裂的最小样本数min_samples_split、叶节点最小样本数min_samples_leaf、节点样本权重和与所有样本权重和之比的最小比例min_weight_fraction_leaf、最大叶节点总数max_leaf_nodes以及之前提到的分裂阈值min_impurity_decrease。

知识回顾

第一题

ID3算法,最佳特征根据“最大信息熵增益”来选取,本质上是一种贪心算法,每次进行分叉选取的特征,C4.5算法,在ID3算法下容易过拟合,所以引入C4.5算法,能够作为分裂信息的惩罚项惩罚特征,CART算法在进行分类任务时,采用基尼系数选择最好的特征,当是回归任务,最小方差的分类依据

第二题

信息增益衡量的是节点分裂后,带来了多少的不确定性的降低或纯度的提高,衡量了不确定的增长幅度

第三题

随机的参数,能够限制了训练集和验证集的数据

第四题

处理连续值(转发)

C4.5既可以处理离散型属性,也可以处理连续性属性。在选择某节点上的分枝属性时,对于离散型描述属性,C4.5的处理方法与ID3相同。对于连续分布的特征,其处理方法是:

先把连续属性转换为离散属性再进行处理。虽然本质上属性的取值是连续的,但对于有限的采样数据它是离散的,如果有N条样本,那么我们有N-1种离散化的方法:<=vj的分到左子树,>vj的分到右子树。计算这N-1种情况下最大的信息增益率。另外,对于连续属性先进行排序(升序),只有在决策属性(即分类发生了变化)发生改变的地方才需要切开,这可以显著减少运算量。经证明,在决定连续特征的分界点时采用增益这个指标(因为若采用增益率,splittedinfo影响分裂点信息度量准确性,若某分界点恰好将连续特征分成数目相等的两部分时其抑制作用最大),而选择属性的时候才使用增益率这个指标能选择出最佳分类特征。
在C4.5中,对连续属性的处理如下:

  1.  对特征的取值进行升序排序
    
  2.  两个特征取值之间的中点作为可能的分裂点,将数据集分成两部分,计算每个可能的分裂点的信息增益(InforGain)。优化算法就是只计算分类属性发生改变的那些特征取值。
    
  3.  选择修正后信息增益(InforGain)最大的分裂点作为该特征的最佳分裂点
    
  4.  计算最佳分裂点的信息增益率(Gain Ratio)作为特征的Gain Ratio。注意,此处需对最佳分裂点的信息增益进行修正:减去log2(N-1)/|D|(N是连续特征的取值个数,D是训练数据数目,此修正的原因在于:当离散属性和连续属性并存时,C4.5算法倾向于选择连续特征做最佳树分裂点)
    

处理缺失值

个人觉得可以对缺失值采用随机森林进行填充,或者对缺失的列进行一定的丢弃

第五题

基尼系数用来计算不纯度的大小,在CART中引入是因为计算对数函数log代价较大,因此对log在 p = 1 p=1 p=1处利用泰勒一阶展开式,方便后续计算

第六题

预剪枝:在分裂之前就进行计算,可以有效降低过拟合风险,后剪枝,在分裂后进行计算,减掉过拟合的分裂,但是效果不如预剪枝

【1】处理连续值的文章
【2】处理缺失值文章

最后

以上就是喜悦手套为你收集整理的DataWhale-202110 树模型与集成学习(第一次)信息论的基础分类树的节点分裂CART树决策树剪枝知识回顾的全部内容,希望文章能够帮你解决DataWhale-202110 树模型与集成学习(第一次)信息论的基础分类树的节点分裂CART树决策树剪枝知识回顾所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部