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

浙公网安备 33010602011771号