决策树模型(ID3、C4.5、CART)与集成学习(bagging、boosting)

一、决策树

  • 特征选择与划分(离散、连续特征)
  • 决策树生成(可以看做if-else 或者 概率模型)
  • 剪枝(将过于详细的叶节点划分合并到父节点,构成新的更简单的叶节点,对生成的决策树使用损失函数 C α ( T ) = C ( T ) + α ∣ T ∣ C_\alpha(T)=C(T) + \alpha|T| Cα(T)=C(T)+αT,其中第二项是决策树叶节点数量的惩罚项(正则)

1.0 属性选择评价指标相关概念

  • 熵:描述某种状态,自然界中的熵都趋向于自发增大。(热力学中熵表示混乱程度,信息论中表示不确定性)
  • 信息熵: H ( X ) = − ∑ i = 1 n 个 取 值 p i log ⁡ p i H(X) = -\sum_{i=1}^{n个取值}p_i\log p_i H(X)=i=1npilogpi,描述随机事件的不确定性,当每个取值概率相等时,不确定性(熵)最大。
  • 条件熵:已知随机变量X的条件下,随机变量Y的熵。
  • 信息熵增益:即互信息, g ( Y , A ) = H ( Y ) − H ( Y ∣ A ) g(Y, A) = H(Y) - H(Y|A) g(Y,A)=H(Y)H(YA)
  • 信息熵增益比: g R ( Y , A ) = g ( Y , A ) H ( A ) ) g_R(Y, A) = \frac{g(Y, A)}{H(A))} gR(Y,A)=H(A))g(Y,A) ,消除特征取值数量的影响。
  • 基尼指数:一个节点集合中分类误差率

1.1 ID3算法(多叉树)

  • 属性选择:信息增益
  • 用途:多分类任务

1.2 C4.5算法(多叉树)

  • 属性选择:信息增益比
  • 用途:多分类
  • 优点:避免优先选择使数据过于分散的属性(一个属性有很多不同的属性值,每个样本对应的属性值都不同,这样的属性不具有泛化性)。

1.3 CART算法(二叉树)

  • 属性选择:基尼指数
  • 用途:分类及回归
  • 属性 j j j选择以及切点 s s s划分的选择:
    min ⁡ j , s [ min ⁡ c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x 1 ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \min _{j, s}\left[\min _{c_{1}} \sum_{x_{i} \in R_{1}(j, s)}\left(y_{i}-c_{1}\right)^{2}+\min _{c_{2}} \sum_{x_{1} \in R_{2}(j, s)}\left(y_{i}-c_{2}\right)^{2}\right] j,sminc1minxiR1(j,s)(yic1)2+c2minx1R2(j,s)(yic2)2
    其中 j j j为各个属性下标, s s s为选择的切点,将当前划分单元再次划分为两个新单元 R 1 ( j , s ) R_1(j,s) R1(j,s) R 2 ( j , s ) R_2(j,s) R2(j,s),各个单元的预测值为单元内包含所有样本的均值 c i c_i ci

二、集成学习

集成方法分为bagging, boosting, 特征选择与组合

2.1 Bagging

  • 思想:通过对数据集进行独立的随机抽样,训练多个相互独立的学习器(有放回的采样)

2.1.1 随机森林

  • 多个弱学习器之间相互独立,最终通过投票/平均的方式结合。
  • 为什么叫随机:
      1. 每个子学习器对数据都是右放回的从整个数据集中随机采样(数据选择的随机性
      1. 每个子学习器,只选择所有属性中的一部分属性作为属性子集(属性选择的随机性

2.2 Boosting

  • 弱学习器之间有先后依赖关系,学习第t个模型时要用到前t-1个模型的输出。

2.2.1 xgBoost

2.2.1.1 与GBDT的关系
  • xgboost是GBDT的一个实现,他们都是同一个模型
  • 这个实现有以下特殊点:
    1. 优化过程中使用了目标函数的二阶泰勒展开,而不是经典gbdt的一阶展开(直接使用残差作为负梯度)
    2. 由于使用新的目标函数,可以加入对弱学习器的正则项(叶节点数目)
    3. 缺失值自动处理策略:尝试将缺失值样本分别划分到左子树和右子树看哪种更优,而无需对缺失值进行预填充。
2.2.1.2 原理
  • 添加第t棵树的优化目标:
    O b j ( t ) = ∑ i = 1.. n l ( y i , y ^ i ( t ) ) + ∑ k = 1.. K Ω ( f t ) = ∑ i = 1.. n ( y i − ( f ( t ) + y ^ i ( t − 1 ) ) ) 2 + ∑ k = 1.. K Ω ( f t ) = ∑ i = 1.. n l ( y i − y ^ i ( t − 1 ) , f ( t ) ) + ∑ k = 1.. K Ω ( f t ) \begin{aligned}Obj^{(t)} &= \sum_{i=1..n}l(y_i, \hat y_i^{(t)}) + \sum_{k=1..K}\Omega(f_t)\\ &= \sum_{i=1..n}(y_i - (f^{(t)} + \hat y_i^{(t-1)}))^2 + \sum_{k=1..K}\Omega(f_t)\\ &=\sum_{i=1..n}l(y_i - \hat y_i^{(t-1)}, f^{(t)}) + \sum_{k=1..K}\Omega(f_t) \end{aligned} Obj(t)=i=1..nl(yi,y^i(t))+k=1..KΩ(ft)=i=1..n(yi(f(t)+y^i(t1)))2+k=1..KΩ(ft)=i=1..nl(yiy^i(t1),f(t))+k=1..KΩ(ft)
  • 训练时,使用二阶泰勒展开对上式做近似变换,这样做的目的:1. 由于正则项有w的平方,使用泰勒二阶展开后两个可以结合成一个漂亮的形式,而且即使其他损失函数也能有统一个一阶+二阶导数的形式
  • 使用二阶导数后拟合会更快。(类似Adam?)
    在这里插入图片描述

2.2.2 adaBoost

  • 每一个模型,根据其输出的错误率对样本重新分配权重。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值