决策树理解和复习

本文深入探讨了决策树的学习过程,包括ID3、C4.5和C&RT树在特征处理和选择上的差异。讨论了熵、信息增益、信息增益率和基尼指数在决策树构建中的作用。此外,还详细阐述了决策树在分类和回归任务中的预测值计算,以及损失函数和剪枝方法,特别是后剪枝和C&RT树的剪枝策略。
摘要由CSDN通过智能技术生成

本文主要是对决策树的复习,把决策树知识结构化,温故而知新~

1、决策树在结点分裂时针对特征的处理

1、ID3、C4.5:

  • 针对数值特征的处理:

    • ID3不支持

    • C4.5:

      • 将连续值离散化,具体方法是将这些值从小到大排序,记为 a 1 , a 2 , . . . , a n {a^1, a^2, ..., a^n} a1,a2,...,an, 每次取 a i + a i + 1 2 \frac{a^i+a^{i+1}}{2} 2ai+ai+1 作为划分点,计算信息增益率

      • 假如总共有 m m m 个数值特征值,那么会有 m − 1 m-1 m1 个切分点

  • 针对类别特征的处理:因为是多叉树,每个类别值对应一个分支

2、C&RT树(二叉树):

  • 针对数值特征的处理:同C4.5针对数值特征的处理

  • 针对类别特征的处理:

    • 如果类别特征有三个值{A1, A2, A3},会有三种分类结点的情况,针对每种情况分别建立二叉树,计算Gini系数,取Gini系数最小值
    • 如果类别特征值有 m m m 个,那么总共尝试 2 n − 1 − 1 2^{n-1}-1 2n11 种分类情况

2、决策树在结点分裂后的特征选择

选取最优分裂特征的方法

ID3(信息增益)

1、熵:表示信息的混乱程度,熵越大,信息越混乱
H ( x ) = − ∑ i = 1 n p i l o g p i = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g ∣ C k ∣ ∣ D ∣ H(x) = -\sum_{i=1}^np_ilogp_i = -\sum_{k=1}^K\frac{|C_k|}{|D|}log\frac{|C_k|}{|D|} H(x)=i=1npilogpi=k=1KDCklogDCk

2、信息增益:树做branch后的熵 - 树做branch前的熵(含义:当根据特征X进行分裂后,类别Y不确定性减少的程度)

C4.5(信息增益率)

1、思考:为什么需要信息增益率

当使用信息增益来进行特征选择时,存在以下问题:

如果有一个特征是用户id,根据用户id进行branch,同时以信息增益为结果作评估,那么id肯定是最好的特征,但是这样是过拟合的

所以为了解决信息增益偏向于选择取值较多的特征这个问题,有了信息增益率

信 息 增 益 率 = 信 息 增 益 H A ( D ) 其 中 H A ( D ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ l o g ∣ D i ∣ ∣ D ∣ , n 是 特 征 A 取 值 的 个 数 信息增益率 = \frac{信息增益}{H_A(D)} \\ 其中H_A(D) = -\sum_{i=1}^{n}\frac{|D_i|}{|D|}log\frac{|D_i|}{|D|}, n是特征A取值的个数 =HA(D)HA(D)=i=1nDDilogDDi,nA

2、信息增益率理解:

H A ( D ) H_A(D) HA(D) 相当于特征A的熵,特征A的取值越多,熵越大,那么信息增益率越小,可以避免取到id这一类特征

C&RT树(Gini系数)
C&RT树用于分类的特征评估

1、在分类问题中,假如有K个类,样本点属于第k类的概率为 p k p_k pk

G i n i ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D) = 1 - \sum_{k=1}^{K}(\frac{|C_k|}{|D|})^2 Gini(D)=1k=1K(DCk)2

在做branch后,整体数据的Gini系数为:

G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D, A) = \frac{|D_1|}{|D|}Gini(D1) + \frac{|D_2|}{|D|}Gini(D_2) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)

2、思考:为什么需要Gini系数

  • 实际运行中,信息增益率要计算对数,而Gini系数只需要平方求和,整体运行速度比信息增益率快。
C&RT树用于回归的特征评估

1、在回归问题中,选择变量 x j x^j xj 和它的切分点取值s,定义两个分支区域:

R 1 ( j , s ) = { x ∣ x j < = s } 和 R 2 ( j , s ) = { x ∣ x j > s } R_1(j,s) = \{x|x^j <=s\} 和 R_2(j,s) = \{x|x^j>s\} R1(j,s)={xxj<=s}R2(j,s)={xxj>s}

2、寻找最优切分变量 j j j 和切分点 s s s,求解公式为:

min ⁡ j , s ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 \min\limits_{j,s}{\sum_{x_i\in R_1(j,s)}(y_i - c_1)^2 + \sum_{x_i\in R_2(j,s)}(y_i-c_2)^2} j,sminxiR1(j,s)(yic1)2+xiR2(j,s)(yic2)2

3、其中, c1和c2为结点对应数据的label的平均值:

c 1 = a v e r a g e ( y i ∣ x i ∈ R 1 ( j , s ) ) c 2 = a v e r a g e ( y i ∣ x i ∈ R 2 ( j , s ) ) c_1 = average(y_i|x_i\in R_1(j,s))\\ c_2 = average(y_i|x_i\in R_2(j,s)) c1=average(yixiR1(j,s))c2=average(yixiR2(j,s))

3、决策树做分类时的预测值

当决策树终止时,选择叶子结点的数据集中类别最多的那一类,作为该叶子结点的类别

4、决策树做回归时的预测值

1、当决策树终止时,选择叶子结点的数据集中所有数据的值的平均数,作为该叶子结点的预测值

2、缺点:

  • 因为对回归值进行了平均,当train和test回归值分布不一致的时候,会过拟合
  • 同理,当真实环境线上部署时。线上label分布跟线下预测label不一致,可能会引起线上指标比线下指标低很多的情况

5、决策树的损失函数

C a ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_a(T) = \sum_{t=1}^{|T|}N_tH_t(T) + \alpha|T| Ca(T)=t=1TNtHt(T)+αT

针对损失函数的理解:

  • 左边 N t H t ( T ) N_tH_t(T) NtHt(T) 为树结点的两个属性, N t N_t Nt代表决策树在该结点的样本数, H t ( T ) H_t(T) Ht(T) 代表该结点样本的信息熵
  • 右边 |T| 是模型复杂度
  • α \alpha α 是控制两者之间的影响

6、决策树的剪枝

决策树的剪枝通过极小化决策树的损失函数来实现。

前剪枝

1、树结构:

  • 树深
  • 叶子结点的数量、叶子的数量
  • 叶子结点的最小样本数

2、评估指标的变化

  • 整体样本集的Gini index小于预定阈值(样本基本属于同一类)
  • 特征继续做branch后,Gini index的变化小于预定阈值(再继续进行分裂对预测结果影响不大)

后剪枝(通过交叉验证)

1、先生成一棵完整的决策树,递归地从叶子结点向上进行回缩

2、叶结点对应的分类样本中,最大的类替换该叶结点,该叶结点两个分支回缩,叶结点变为叶子结点

3、计算回缩前后的损失函数值,如果回缩后损失函数变小,那么确认回缩

4、最终,得到损失函数最小的树

C&RT树剪枝的策略(后剪枝)

剪枝

1、自下而上的对每个内部结点 t t t计算:

g ( t ) = C ( t ) − C ( T t ) ∣ T t ∣ − 1 g(t) = \frac{C(t) - C(T_t)}{|T_t|-1} g(t)=Tt1C(t)C(Tt)

2、理解:如果收缩之后满足:

收 缩 后 损 失 函 数 < = 收 缩 前 损 失 函 数 收缩后损失函数 <= 收缩前损失函数 <=

那么:

C ( t ) + α < = C ( T t ) + α ∣ T ∣ C(t) + \alpha <= C(T_t)+\alpha|T| C(t)+α<=C(Tt)+αT

所以:

α > = C ( t ) − C ( T t ) ∣ T t ∣ − 1 \alpha >= \frac{C(t)-C(T_t)}{|T_t|-1} α>=Tt1C(t)C(Tt)

3、所以,之后判断 α \alpha α 是否大于等于 g ( t ) g(t) g(t),如果大于等于,那么针对叶结点 t t t 回缩,采用最多数的类作为叶结点的类。

4、终止条件:如果 t t t 是根结点,令这个 α \alpha α 对应的最优树为当前树

根据剪枝得到的子树序列,通过交叉验证选出最优子树T

在子树序列中,每个子树对应一个 α \alpha α,通过交叉验证选出最优的 α \alpha α和最优的决策树

参考资料

1、统计学习方法

2、C4.5连续特征离散化:https://blog.csdn.net/u012328159/article/details/79396893

3、https://zhuanlan.zhihu.com/p/38591766

4、C&RT树剪枝算法理解:https://www.zhihu.com/question/22697086

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值