9.机器学习基石--Decision Tree

Lecture 9:Decision Tree

9.1 Decision Tree Hypothesis

     在之前的课程中,我们接触过 BAGging 和 Boosting 算法。在本节将会讨论另外一种 blend 方法——stacking。

                                                      图 9-1

     以前从来没有把 Decision Tree 看成是 stacking 算法!搞笑的是 RF 是 bagging 聚合的 DT 树,DT 树是 stacking 的Tree。那么 RF 就是 bagging on top of stacking Tree ?GBDT 就是 Adaboost on top of stacking Tree(难怪在第 11 节的课程上说 GBDT is best than adaboost stump。可以看成是集 bagging 和 boosting  优点于一身的 Tree)?

                 图  9-2   Decision Treee 

许多人都说 Decsition Tree 的解释性不好,但是我认为在准确率要求不高的场合,DT 就是神器。最关键的是 DT 的亲戚 xgboost,GBDT 都是掉渣天的存在。

                                        图 9-3 The Cons & Pros of DT 

9.2 Decision Tree Algorithm

                  图 9-4 DT 树算法需要回答的问题

   C&RT树生成策略:

  1) 二分枝

  2)每个叶节点的值是常数,对于分类任务是返回 majority point。如图 9-5 所示

  3) 结合策略 2, 如果叶节点能只有一种类型则选择该 stump 方法。即追求最大的 purity ,如图 9-6 所示

  4) 结合策略 3, 如果所有的叶节点都已经是单一类型值或 purity 最大则停止。否则继续,如图 9-7 所示

                                                     图 9-5

 

                                                     图  9-6         

                                                   图 9-7

 总而言之,C&RT 树就是一个 full grown 的常数树

                                     图  9-8

    对于 Classification 和 Regression 下的 不纯度函数的计算如图 9-9 所示。

    图 9-9 中 regression error 和 classification error 表达式很容易理解。

    对于 classification impurity 函数还能写出图 9-10 下方的表达式(因为 C&RT 的 leaf 节点是 majority point)。但是那种算法等于将所有的非 majority point 看成同一类点处理,最重要的只考虑一类。用 gini 系数就能考虑所有的类(但是本人对 gini 系数的这种计算方法保留态度)。图 9-10 两种分类函数的在 2 D 坐标系中曲线应该很接近吧!!

 

        图  9-9  分类和回归不纯度函数

              图 9-10 两种分类不纯度函数 

 

9.3 Decision Tree Heuristics in C&RT

       C&RT 树是个 full grown 树,如果输入的样本都是 unique 的。那么 C&RT 树就会很大,以及很容易 Overfit (很类似手写 if、else 语句)。

这个时候就要控制树的复杂度。怎么控制树的复杂度呢,通过控制树的叶子数(有前剪枝,也有后剪枝)。

                                              图 9-11

 明天继续搞定这个,今天没有搞定。亏我还认为这个很简单!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

9.4 Decision Tree in Action

 

从上图可以看出, C&AT 树在样本数据较少的情况会有很大的误差。当然对于任何算法,在样本数据较少都会误差。C&AT 树可能会更严重,比如对于某个线性可分的数据,采用 C&RT 算法会有很大的误差(这也也是我个人 yy 的)

                    

从上图可以看出 C&AT 的计算速度要比 AdaBoost-Stump 快,C&AT 除了有计算快的优点以外还有下图所示的优点。正是因为 C&AT 具有以下的优点,才能支撑起 RF等其他 tree 算法(也是个人 yy 的,因为 C&RT 计算速度快且效果不差所以能作为其它聚合算法的 base hypothesis!)

                             

最后,贴图总结本章

题外话: 

T1:没有讨论 ID3 和 C4.5 算法,只是泛泛地说有许多 Heuristics 策略(Decision Tree 定性解释易,定量解释难)。Decision Tree 是一种 stacking Aggregation 算法?以前倒是没往这个方向想。DT 树种类很多,一般人比如我将 DT 和 full grown DT 等价起来了。其实还有其它的 DT, 比如  Decision Stump。

T2: Adaptive Boost Stump 要求 Decision Stump Diversity,C&AT 要求 Decision Stump purity !RF 和 GBDT 呢?

T3: 搞笑的是 C&RT 追求的是 full grown 树,同时 DT 都要进行剪枝来提高泛化性能(剪枝的树肯定不是 full grown )(在其它书籍中学习到的,难道对 C&RT 不适用)。

T4: C&RT 有个特点:可以处理 categorical Feature!

T5:不要把正则化 和 L1, L2 这些 famous 正则化方法混作一谈。对 DT 而言, 剪枝是正则化方法。对 Hard-Margin SVM 加上正则化方法,变成了 Soft-Margin SVM!

后记 :

H1: 2018 年 3 月 1 号重新复习本节课程后才知道以前我忽略了很多的内容(比如在 自己动手实现 C&RT 树要考虑 特征的种类——特征可能是 categorical or numberical 等等问题)。看一些论文后才回头复习一下视频教程

 

posted @ 2018-01-11 19:35  tmortred  阅读(186)  评论(0)    收藏  举报