10.机器学习技法--Random Forest

Lecture 10:Random Forest

10.1 Random Forest Algorithm

                    图  10-1

      在上一节中我们学习了 C&RT 树,Full Grown 的 C&RT 的树能做到 in-sample 很小但是 out-sample error 很大。

记得《西瓜书》中有关于误差的讨论,即 out-sample error = bias error + varicace error + noise 组成。对 C&RT 树而言,bias error 很小。

现在的问题就是能不能减少 variance error? Actually  we can。

                                           图  10-2

 我们可以用专杀 Variance 的 BAGging 算法来聚合 C&RT 树。因为我们用的 Bootstrap 方法 random sample data,所以这种算法又被称为 RF。

                                           图  10-3

     我相信图 10-3 的 RF 算法会比某个单一的 RF 树性能要好,但是 RF 树可以做的更好。回忆一下 BAGging 算法的特性,它要求的每个 base algorithm 足够的 diversity !那么该如何让 C&RT 树 Diversity 呢?一个 full grown 的 C&RT 是很难 diversity 的。现在常用的方法是用让每个 C&RT 树在部分树部分特征上运算,这种的  C&RT 就不是 full grown 树,而且每个 C&RT 都不相同!这样的计算出的 RF 就是常规意义上的 RF。如图 10-4 所示

                             图 10-4 

10.2 Out-of-Bag Estimate

    RF 还有个有点,就是它只会用到部分样本。这样没有用到的样本就可以用做验证集Q1

现在来看一下,BAGging 算法下验证集的特性。

                                      图 10-5

     从图 10-5 中可以看出, $g_{t}$ 的验证集约有 0.3 个训练集合大小。

这样每个 $g_{t}$ 的验证集都很大(因为一般而言,验证集和训练集的比例是 1:5 左右,RF 中每个子树中的比例是 1:3 )。但是我们一般不会求每个 $g_{t}$ 的验证误差,因为

bagging 不要求 $g$ 多么的强,只要 $g$ 比随借乱猜来的好就行(可能有失偏颇)。那我们会这么使用这些没有用到的样本呢?如图 10-6 所示。

                                       图 10-6 

    如图 10-6 所示,我们该如使用未用于 "训练" 的资料呢? 比如对样本 $x_{n}, y_{n}$ 而言,它可以作为除 $g_{1}$ 以外资料的验证集。这样就用 $x_{n}, y_{n} $ 作为 $G^-$Q2 的验证集数据。这样表明 RF 在训练时会自动生成 “验证集”!

  OOB Error 有什么意义呢?除了让我们知道训练出的 G 的泛化误差大概是多少,所以可以用于 Model Selection 。此外不需要像常规的机器学习一样训练 2 次(一次是获得参数,另外一次是将验证集和测试集合到一起再训练一次)

                                                图 10-7

 

10.3 Feature Selection

       feature selection 这个话题为什么要放到本章来讨论?这个问题先放一下,我们先看下另外一个问题,即 Feature Selection 的有哪些意义。

                    图 10-8   Feature Selection 的意义

       从图 10-8 中可以看出, Feature Selection 有益有弊。就是不知道 Feature Selection 和 PCA,LDA(feature representation, feature classification)的区别和联系。

那我们该如何知道特征的重要性呢? 根据 feature 的信息增益熵 或者是 信息的基尼系数 抑或者是 将该 feature 加入噪声后看训练出模型的表现。本小节讨论的是将 feature 加入噪声前后训练出模型的性能表现。

      常规的将人造的噪声加入 feature 会改变 feature 的分布,这不是一个很好的方法。我们采用的是将原先的 feature 随机排序后放回。

                           图  10-9  Permutaion Test !

       现在有个问题,图 10-9 的 Permutation Test 固然可以求出每个 feature 的重要性。

但是这个方法为什么要放到 RF 中来讨论?难道用 SVM, LR 这些算法都不行?当然任何的算法都可以用图 10-9 描述的算法来计算出 feature importance。

       回答上面的问题需要用到 OOB来讨论,先看图 10-10

                                     图  10-10

      图 10-10 中的公式也可以写成 $ E_{OOB}(\mathcal{D}) - E_{OOB}(\mathcal{D}^p )$ 。用 OOB Error 计算 feature importance 可以 validataion 的计算量,但是还是需要 re-training。其实 re-training 这一步也很省去,我们对 validataion set 中相关 feature 做 Permutation, 这样可以求得图 10-10 公式的近似解(为什么是近似解,训练集相关 feature 没有 permutation !只是将 OOB 中 feature Permutation !)。我们计算 feature importance 的代价就很小!

                            图  10-11

10.4 Random Forest in Action

      在开始本小节话题讨论前,先看下图 10-12 和图 10-13(均截自《西瓜书》第四章)。

             图  10-12 决策树分类边界

   图 10-13  多特征叶的决策树分类边界(叶节点是多个特征线性组合)

      DT 树的分类边界是由水平线和垂直线组成的,如图 10-12 所示。这条结论对第 10 节中学习到的 C&RT 和 Adaboost Stump 也同样成立。

如果,叶节点不是单一的特征而是多个特征的线性组合,则分类边界就变成斜线!如图 10-13 所示。在有了这些直观印象后,我们开始讨论本小节话题。

                                          图 10-14 

                       图  10-15 RF 可以减小噪声的影响

      RF 是个 uniform blending tree, 还有优化的空间!!

最后贴图结束本节

                        图 10-16 本章小结

题外话:

T1:Tree ! Tree ! Treeeeeee ! 始于 DT,兴于 RF, 终于 GBDT !!!!!!!!!!!!!!!!!!!!!!!!!!

T2:有没有基于 C4.5 的 RF ?

Q1: adaboost 和 C&RT 都不需要验证集(据我所了解)。

Q2: 以前以为 OOB ERROR 指的是每个 $g_{t}$ 的 Error ! 如何用 OOB 来 minized G 呢? 通过删除某些 g (应该只有这种操作吧)?

关键词: feature selection and Permutation Test, OOB 

总结: 介绍了 RF 和 OOB

 

posted @ 2018-01-12 19:50  tmortred  阅读(228)  评论(0)    收藏  举报