机器学习技法(林轩田)学习笔记:Lecture 9 & Lecture 10

Lecture 9: Decision Tree

Decision Tree Hypothesis

之前介绍的uniform blending和linear blending等,\(G\)中每个假设函数\(g_t\)前的权重都是一个常数\(\alpha_t\)(\(G(x)=\sum_{t=1}^T \alpha_t g_t(x)\)),下面介绍的决策树的假设函数G中,每个\(g_t\)前的权重是关于\(x\)的函数\(q_t(x)\)

一个决策树如上图所示,可见决策树其实就是模仿人类做决策的判断过程。每个叶节点是一个假设函数\(g_t(x)\)(图中\(g_t(x)\)的取值就是0/1),对应的权重$q_t(x)=\(1{x在根节点到叶节点(\)g_t(x)$)的路径上},一般决策树的内部结点(非叶结点)都是比较简单的条件

决策树的假设函数\(G(x)\)的形式如下:

从递归的角度看,决策树的假设函数\(G(x)\)还可以定义为:

\[G(x)=\sum_{c\ is\ x's\ son}1\{b(x)=c\}G_c(x)\]

\(1\{b(x)=c\}\)这个权重就是用来根据条件b判断向哪个子树走

决策树的优点:

  • 假设函数G具有可解释性,是人类可以理解的。
  • 容易实现
  • 训练、预测非常高效

决策树的缺点

  • 缺乏足够的理论支持
  • 新手很难选取合适的树结构
  • 没有具有代表性的算法

Decision Tree Algorithm

根据决策树的假设函数\(G(x)\)的递归定义

\[G(x)=\sum_{c\ is\ x's\ son}1\{b(x)=c\}G_c(x)\]

我们可以写出决策树的伪代码:

function DecisionTree(训练集\(\mathcal D=\{(x_n,y_n)\}_{n=1}^N\))

  • 如果\(\mathcal D\)达到终止条件:
  • ____返回基假设函数\(g_t(x)\)
  • 否则:
  • ____学习分枝条件\(b(x)\)
  • ____根据\(b(x)\)\(\mathcal D\)分成C个子集\(\mathcal D_c\)
  • ____对C个子集\(\mathcal D_c\)建立C个子树$G_c\gets \(DecisionTree(\)\mathcal D_c$)
  • 返回\(G(x)=\sum_{c\ is\ x's\ son}1\{b(x)=c\}G_c(x)\)

C&RT决策树

下面介绍一种用于分类和回归的决策树:C&RT(Classification and Regression Tree),其参数:

  • C=2(C&RT是二叉树)
  • 基假设函数\(g_t(x)\)是常数,为了满足\(E_{in}\)尽可能小:
    • 对于二分类/多分类问题,\(g_t(x)=\)该叶节点对应的训练样本中占多数的标签\(y_n\)
    • 对于平方误差的回归问题,\(g_t(x)=\)该叶节点对应的训练样本的\(y_n\)的平均值

C&RT的分枝条件学习

在C&RT中,每个内部结点的条件b(x)就是一个decision stump函数\(h(x)\),它把当前子树对应的训练样本\(\mathcal D\)分成两部分\(\mathcal D_1,\mathcal D_2\),使得这两部分各自的不纯度(impurity)之和最小,即:

根据回归/分类问题的原始的\(E_{in}\),我们可以推出它们对应的impurity函数:

对于分类问题,我们还有两种不同的impurity函数:

在分类问题的C&RT中最常用的impurity是Gini index,而在回归问题的C&RT中最常用的impurity是均方误差

C&RT的递归终止条件

在以下两种情况下,C&RT的递归终止:

  • 1、当前的所有训练样本的\(y_n\)完全相同(impurity=0),此时返回\(g_t=y_n\)
  • 2、当前的所有训练样本的\(x_n\)完全相同(样本点重叠了),decision stump没办法"下刀"

为方便描述,我们称以上构造出的C&RT是fully-grown tree

Decision Tree Heuristics in C&RT

Regularization by Pruning

之前介绍的fully-grown tree的C&RT,当所有\(x_n\)都不同时,可以保证\(E_{in}(G)=0\)

但是由于当递归到很深的层(很深的树结点)时,对应的训练集\(\mathcal D\)会很小,此时\(E_{out},E_{in}\)的gap很大,也就很容易发生过拟合了

为了解决这个问题,我们需要对C&RT引入正则化,正则化项\(\Omega(G)=\)G的叶结点数

那么我们希望得到的决策树G应该是:

加入正则化后的C&RT被称为pruned decision tree(被修剪过的决策树)

显然我们是无法枚举所有的\(G\)的,一种比较好的近似方法是:

  • \(G^{(0)}=\)fully-grown gree
  • \(G^{(i)}=\arg\min_GE_{in}\)(从\(G^{(i-1)}\)移掉一个叶节点后得到的树G)

选取正则化项的系数\(\lambda\)的过程也是模型选择过程,需要采用交叉验证的方法

Branching on Categorical Features

之前我们接触过的输入特征都是数值特征(numerical features),即输入的每一维特征都是实数,那么如果输入的某一维特征是分类特征(categorical feature),如\(x_i\in\) {fever, pain, tired, sweaty},该怎么办呢?

此时C&RT每个内部结点的条件\(b(x)\)相应地变成了:

(即,输入的第i个特征(分类特征)\(\in S\)就走第二个子树,否则走第一个子树)

Missing Features by Surrogate Branch

在实际场景中,往往输入特征中某些维度是缺失的,其他学习算法是无法解决这类缺失特征的问题的,而决策树却可以通过surrogate branch解决这类问题。

surrogate branch就是用其他内部结点的分枝条件代替缺失特征的内部结点的条件,比如当前内部结点的分枝条件是{"体重"<=50kg},我们可以用另一个内部结点的分枝条件:{"身高"<=阈值} 来代替{"体重"<=50kg}

我们在训练决策树时,需要维护与每个条件\(b(x)\)最相似的备用条件\(b'(x)\),当\(b(x)\)作判断时需要的那一维特征缺失时,就用备用条件\(b'(x)\)替换

总结

C&RT有以下优点:

  • 1、假设函数G是人类可以理解的
  • 2、可以轻松实现多分类
  • 3、可以轻松实现输入categorical feature
  • 4、可以轻松解决缺失某些维度特征的情况
  • 5、对非线性问题的训练和预测非常高效

猜你喜欢

转载自www.cnblogs.com/qpswwww/p/9384671.html