决策树基本要点及方法对比

决策树的生产,基本方法有ID3、C4.5、CART。基于基础决策树学习器,可进一步构建提升树。

ID3

ID3算法的核心在于在决策树各个结点上应用信息增益进行特征选择。从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的分裂特征,由该特征的不同取值分割成子结点。并不断递归地在各结点上进行,直到所有特征的信息增益均小于给定阈值,或没有特征可用为止。
ID3相当于用极大似然法进行概率模型的选择。

训练集D(存在K类),特征集A(非空),阈值e

  • 从根结点开始,计算所有特征A_i\in A对D的信息增益g(D,A)=H(D)-H(D|A),其中
    D的经验熵H(D)=-\sum_{k=1}^K\frac{|D_k|}{|D|}\log_2\frac{|D_k|}{|D|}
    经验条件熵H(D|A_i)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i)
    选择信息增益最大的特征A_g

  • 如果A_g的信息增益小于阈值e,那么不进行结点分割。取结点数据中实例最多的类为结点类标记。

  • 否则,对A_g的每个取值,将D分割为若干个结点D_i,将D_i中实例最多的类作为子结点的类标记。

  • 对第i个子结点,以D_i为训练集,A-{A_g}为特征集,递归地执行上述操作。


C4.5

对于C4.5算法,其使用信息增益比g_r(D,A)=\frac{g(D,A)}{H_A(D)}来选择特征。其中H_A(D)=-\sum_{i=1}^n\frac{|D_i|}{|D|}\log_2 \frac{|D_i|}{|D|}为数据集D关于特征A的值的熵。


CART

CART算法既可以用于分类也可以用于回归。其假设决策树是二叉树,并递归地二分每个特征。每次遍历所有特征以及特征上的值,选择最小化目标准则的特征A_i与分割点a
\min_{A_i,a}[L(y,x|_{x\in(x^{(A_i)}\leq a)})+L(y,x|_{x\in(x^{(A_i)}>a)})]
对于回归树用最小化平方误差的准则,对于分类树则采取最小化基尼系数的准则。


提升树

提升树则是以分类树和回归树为基本学习器的提升方法。最基本的提升树模型可以表示为决策树的加法模型。
f_M(x)=\sum_{m=1}^M T_m(x)
其中T_m(x|\Theta_m)表示各个决策树。这里用\Theta_m表示第m棵树f_m(x)的权重。对于分类和回归问题,不同之处在于经验误差函数L(平方误差、指数损失函数等)。
其基本步骤为:

  • 构建初始树f_0(x)=0

  • 增加第m棵树T_m(x|\Theta_m),最小化经验风险L
    \hat{\Theta}_m=\arg \min_{\Theta_m}\sum_{i-1}^N L(y_i,f_{m-1}+T_m(x_i|\Theta_m))

  • 新的提升树f_m=f_{m-1}+T_m(x_i|\hat{\Theta}_m)

这里因为训练集等权重,故各树也是等权重。一般的AdaBoost算法还要考虑样本数据的权重,计算各子学习器的权重。

例如,对于采用平方误差的回归提升树,最小化经验风险
L(y,f_{m-1}+T_m(x|\Theta_m))=[y-f_{m-1}(x)-T_m(x|\Theta_m)]^2

r表示之前的数与目标输出之间的残差r=y-f_{m-1}(x)。这意味着新树T_m(x)用来拟合残差。

对于无法直接求解来最小化经验误差的复杂误差函数,可采用梯度提升进行优化。残差用一阶导数来反映
r_i=-\left\{ \frac{\partial{L(y_i,f_{m-1}(x_i))}}{\partial{f_{m-1}(x_i)}} \right\}
这种计算方式就是GBDT算法。

XGBoost

XGBoost所使用的基础学习器是CART模型。相比GBDT只是用一阶导数,XGBoost对损失函数的改写增加了二阶泰勒展开。
残差就变为
r_i=-\left\{ \frac{\partial{L(y_i,f_{m-1}(x_i))}}{\partial{f_{m-1}(x_i)}}+\frac{\partial^2{L(y_i,f_{m-1}(x_i))}}{\partial{f_{m-1}(x_i)}} \right\}

此外完整的XGBoost方法还在损失函数中直接集成了正则项。(实际上上述所有方法都可以在损失函数后加入表示树结构复杂度的正则项,用于剪枝)

其定义的正则化项为
\Omega(f)=\gamma |T|+\frac12 \lambda \|\omega\|^2
其中|T|表示树T叶子结点个数,\omega表示叶子结点的输出值向量,\gamma\lambda是相应的超参数。

LightGBM

XGBoost基于CART模型,计算过程中会遍历特征及特征值,这需要对特征值进行预排序。逐个数据样本来计算划分收益,这样的算法能够精确的找到最佳划分值,但是代价比较大同时也没有较好的推广性。

而LightGBM在基础学习器的构建上,是基于直方图的决策树算法。其将这些特征上精确的连续值划分到一系列离散的桶中,简化了数据表示,特减少了内存的使用。同时直方图也带来了一定的正则化效果,提高了可推广性。

基于直方图,LightBGM在构建树的过程上采用按叶生长 leaf-wise 的方法,每次选择能最大化分裂增益的叶子结点,将其分裂为两个叶子结点。这不同于上述算法的按层生长 level-wise 方法。

LightBGM采用GOSS(Gradient-based One-Side Sampling 单边梯度采样)方法对数据采样,排除大部分小梯度的样本,尽量用梯度大的实例。具体到算法上:

  • 指定大梯度数据采样率\alpha,小梯度数据采样率\beta
  • 对当前模型下的数据梯度进行排序,排序后的数据集记为I
  • 采样全部\alpha|I|个大梯度数据topSet = I[1:\alpha|I|]
    抽取\beta |I|个其余小梯度数据randSet = randomPick(I[\alpha|I|:|I|],\beta |I|)
  • topSetrandSet共同构成下一棵树的训练集
  • randSet中数据的权重放大\frac{1-\alpha}{\beta}

这样做主要还是为了提升学习速度,用小部分小梯度数据参与计算,来代替原本所有的小梯度数据(权重放大\frac{1-\alpha}{\beta})。

LightBGM还采取EFB(Exclusive Feature Bundling 独立特征绑定)的方法来降低维度。将相互独立的特征合并为一个,减少了特征维度的同时又不丢失信息。对于不完全互斥的特征,采用冲突比率的指标衡量这种不互斥程度,当这个值较小时,也可以将对应的特征绑定在一起。

LightGBM是结合使用GOSS和EFB的GBDT算法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.前言 决策树是一种基本的分类和回归方法。决策树呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。采用...
    胜利主义章北海阅读 7,555评论 0 0
  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 11,197评论 0 25
  • 1 概述 决策树(decision tree)是一种基本的分类与回归方法。在分类问题中,表示基于特征对实例进行分类...
    豪_34bf阅读 4,580评论 0 0
  • 1.引子 XGBoost在机器学习领域可谓风光无限,作为从学术界来的模范生,帮助工业界解决了许多实际问题,真可...
    散落一地的蓝阅读 9,054评论 1 28
  • 工作无小事,任何一个小细节都要注意,谨慎细心,用所有的办法让事情变得简单易操作,分类整理很重要,回顾也很重要,...
    snowing1阅读 1,283评论 0 0

友情链接更多精彩内容