Coursera - 机器学习技法 - 课程笔记 - Week 9

Decision Tree

Decision Tree Hypothesis

  • 条件化融合——决策树
  • 模仿人类做决策的过程

G ( x ) = ∑ t q t ( x ) g t ( x ) G(\bold x) = \sum_t q_t(\bold x) g_t(\bold x) G(x)=tqt(x)gt(x)

  • 其中,
    • g t ( x ) g_t(\bold x) gt(x)为基本的假设,位于路径 t t t的叶子节点,是一个常数
    • q t ( x ) q_t(\bold x) qt(x)为条件,表示 x \bold x x是否在路径 t t t
  • 决策树中包含简单的决策节点
  • 路径的视角的定义:

G ( x ) = ∑ t [ [ x  on path  t ] ] ⋅ leaf ⁡ t ( x ) G(\bold x) = \sum_t [[\bold x \text{ on path } t]] \cdot \operatorname{leaf}_t(\bold x) G(x)=t[[x on path t]]leaft(x)

  • 一种递归的定义:
    • b ( x ) b(\bold x) b(x)表示当前决策下的哪一个分支
    • G c ( x ) G_c(\bold x) Gc(x)表示在当前分支下的子树的决策假设(递归定义)

G ( x ) = ∑ c [ [ b ( x ) = c ] ] ⋅ G c ( x ) G(\bold x) = \sum_c [[b(\bold x) = c]] \cdot G_c(\bold x) G(x)=c[[b(x)=c]]Gc(x)

  • 优势
    • 可解释性强
    • 十分的简单
    • 训练和预测的效率都比较搞
  • 劣势
    • 理论保证比较少
    • 初学者在处理启发式选择时很难
    • 没有代表性的决策树算法

Decision Tree Algorithm

  • 由递归定义得到算法(未指明终止条件,否则返回基本假设 g t ( x ) g_t(\bold x) gt(x)
    1. 学习分支确定 b ( x ) b(\bold x) b(x)(最小分支误差)
    2. 按照分支将数据进行分割,得到 D c \mathcal D_c Dc
    3. 使用 D c \mathcal D_c Dc建立子树
    4. 返回最终模型: G ( x ) = ∑ c [ [ b ( x ) = c ] ] ⋅ G c ( x ) G(\bold x) = \sum_c [[b(\bold x) = c]] \cdot G_c(\bold x) G(x)=c[[b(x)=c]]Gc(x)
  • CART:
    • 二叉树
    • 叶子节点 g t ( x ) g_t(\bold x) gt(x)是一个常数
      • 反应最佳 E i n E_{in} Ein
      • 分类:最多的 y n y_n yn
      • 回归: y n y_n yn的平均
    • 内部决策节点使用决策桩切分
    • 通过纯化程度决定分支
    • 纯度分析(下述为不纯度):
      • 对回归任务,定义误差为 1 N ∑ n ( y n − y ˉ ) 2 \frac 1N \sum_n (y_n - \bar y)^2 N1n(ynyˉ)2,其中 y ˉ \bar y yˉ表示分支内所有 y n y_n yn的平均
      • 对分类任务,定义误差为 1 N ∑ n [ [ y n ≠ y ∗ ] ] \frac 1N \sum_n [[y_n \neq y^\ast]] N1n[[yn=y]],其中 y ∗ y^\ast y表示分支内占多数的 y n y_n yn
    • 对于分类,上述定义的误差(不纯度)只考虑了占多数的类别,应当考虑所有类别,因此定义Gini系数: 1 − ∑ k ( ∑ n [ [ y n = k ] ] N ) 2 1 - \sum_k \left( \frac {\sum_n[[y_n = k]]}{N}\right)^2 1k(Nn[[yn=k]])2
    • 终止条件
      • 不纯度为0——当前分支所有标签都一样
      • 所有的样本特征都一样——无法进行决策桩算法
      • 上述两种均为被迫中止的情形——完全生成树——依据纯度生成的二叉树,其叶子数目为常数

Decision Tree Heuristics in C&RT

  • 易于从二分类扩展为多分类
  • 对于完全生成的CART:如果 x n \bold x_n xn都不同,那么必然有 E i n ( G ) = 0 E_{in}(G) = 0 Ein(G)=0
    • 这样就会有非常大的过拟合风险——低阶子树都是根据一些非常小的 D c \mathcal D_c Dc建立的
  • 需要一个正则化项,比如限制叶子节点的数量 Ω ( G ) \Omega(G) Ω(G)
  • 目标改进: arg ⁡ min ⁡ G E i n ( G ) + λ Ω ( G ) \arg\min_G E_{in}(G) + \lambda \Omega(G) argminGEin(G)+λΩ(G)
    • 被剪枝的决策树
    • λ \lambda λ的选择——Validation
  • G G G很难进行枚举
    • 首先建立一个完全生成树
    • 不断地递归,每一次减去所有可剪去分支中 E i n ( G ) E_in(G) Ein(G)最小的
  • 对于数值特征,我们可以直接使用数值的决策桩算法: b ( x ) = [ [ x i ≤ θ ] ] + 1 b(\bold x) = [[x_i \le \theta]] + 1 b(x)=[[xiθ]]+1
  • 对于类别特征,使用抓门的决策桩算法(子集划分): b ( x ) = [ [ x i ∈ S ] ] + 1 b(\bold x) = [[x_i \in S]] + 1 b(x)=[[xiS]]+1
  • 包括CART在内的决策树可以很好地处理类别特征
  • 如果预测的时候,一些特征值丢失?
    • 替代分支,与丢失特征的切割类似

Decision Tree in Action

  • 与AdaBoost有很大不同:前者对特征的分割是基于既有分割实现的,后者是对整个样本的不同特征分别考虑和分割
  • 优势:
    • 人可解释
    • 可以轻易处理多类别
    • 对类别特征很容易处理
    • 出现特征值残缺时,可以使用替代搜索
    • 有效的非线性徐连
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值