- Random Forest,顾名思义 Random 就是随机抽取; Forest 就是说这里不止一棵树,而由 一群决策树组成的一片森林 ,连起来就是用随机抽取的方法训练出一群决策树来完成分类任务。
- RF用了两次随机抽取, 一次是对训练样本的随机抽取; 另一次是对变量 (特征) 的随机抽取。这主要是为了解决样本数量有限的问题
- RF的核心是由弱变强思想的运用。每棵决策树由于只用了部分变量、部分样本训练而成, 可能单个的分类准确率并不是很高。 但是当一群这样的决策树组合起来分别对输入数据作出判断时, 可以带来较高的准确率。有点类似于俗语三个㚖皮匠顶个诸葛亮。
- 随机森林有两个重要参数:树节点预选的变量个数;随机森林中树的个数
随机森林思想来源
PAC → Bootstrap → Bagging → Random Forest ← CART \text { PAC } \rightarrow \text { Bootstrap } \rightarrow \text { Bagging } \rightarrow \text { Random Forest } \leftarrow \text { CART } PAC → Bootstrap → Bagging → Random Forest ← CART
PAC(Probably Approximately Correct)
- 在该模型中, 若存在一个多项式级的学习算法来识别一组概念, 并且识别正确率很高, 那么这组概念是强学习算法; 而如果学习算法识别一组概念的正确率仅比随机猜测略好, 那么这组概念是弱学习算法。
- 如果可以将弱学习算法提升成强学习算法, 那么我们就只要找到一个弱学习算法, 然后把它提升成强学习算法, 而不必去找通常情况下很难获得的强学习算法。
Bootstrap
- 根据PAC由弱得到强的思想, 统计学著名学者Bradley Efron在 1979年提出了Bootstraps算法, 这个名字来自于成语 “pull up by your own bootstraps”, 意思是依靠自己的资源, 称为自助法。
- 它的思想就是当样本数量不大, 分布情况未知时, 可以从原始样本中随机抽取的多个样本情况 (弱学习) 来估计原样本真实的分布情况。它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。
- 其基本步骤如下:
– (1) 从原始数据集中, 有放回地抽样一定数量的样本
– (2)根据抽出的样本计算给定的统计量 T \mathrm{T} T
– (3)重复上述N次 (一般大于1000), 得到 N N N 个统计量 T \mathrm{T} T
– (4)计算上述 N \mathrm{N} N 个统计量 T \mathrm{T} T 的样本方差, 得到统计量的方差 - 0.632自助法
假设给定的数据集包含 d \mathrm{d} d 个样本。该数据集有放回地抽样 d \mathrm{d} d 次, 产生 d \mathrm{d} d 个样本的训练集。原数据中的某些样本很可能在该样本集中出现多次。显然每个样本被选中的概率是 1 / d 1 / \mathrm{d} 1/d,因此未被选中的概率就是 ( 1 − 1 / d ) (1-1/d) (1−1/d),这样一个样本在训练集中没出现的概率就是 d \mathrm{d} d 次都未被选中的概率, 即 ( 1 − 1 / d ) d (1-1/d) ^d (1−1/d)d。当 d d d 趋于无穷大时, 这一概率就将趋近于 e − 1 = 0.368 e^{-1}=0.368 e−1=0.368,所以留在训练集中的样本大概就占原来数据集的 63.2 % 63.2 \% 63.2% 。
Bagging
- Bagging 又叫bootstrap aggregation, 是Breiman在1993 年提出的方法, 第一步就是根据Bootstrap进行抽样。
- 基本的步骤:
– (1)从样本集中用Bootstrap采样选出 n \mathrm{n} n 个样本
– (2)在所有属性上, 对这 n \mathrm{n} n 个样本建立分类器 (CART or SVM or …)
– (3)重复以上两步m次, i.e. 建立 m m m 个分类器 (CART or SVM or … )
– (4)将数据放在这m个分类器上跑, 最后vote看到底分到哪一类 - 这种方法可以大大降低每个分类器的不稳定性, 从而带来较高的预测准确率。从这个方法再往下发展就是随机森林了
随机森林
- 随机森林是以决策树为基本分类器的一个集成学习模型, 它包含多个由Bagging集成学习技术训练得到的决策树。
- Random Forests不同的是: 在Bagging的基础上, 使用一种改进的树学习算法, 在每个候选分裂的学习过程中, 选择特征值的一个随机子集。有时被称为 “feature bagging”。
- 该算法用随机的方式建立起一棵棵决策树, 然后由这些决策树组成一个森林, 其中每棵决策树之间没有关联, 当有一个新的样本输入时, 就让每棵树独立的做出判断, 按照多数原则决定该样本的分类结果。
构建随机森林
(1) 从样本集中用bagging采样选出 n \mathrm{n} n 个样本, 预建立CART
(2) 在树的每个节点上, 从所有属性中随机选择 k \mathrm{k} k 个属性, 选择出一个最佳分割属性作为节点(RI 和 RC )
(3) 重复以上两步m次, i.e. 构建m棵CART (不剪枝)
(4) 这 m \mathrm{m} m 个CART形成Random Forest
利用随机森林预测
(1) 向建立好的随机森林中输入一个新样本
(2) 随机森林中的每棵决策树都独立的做出判断
(3) 将得到票数最多的分类结果作为该样本最终的类别
影响性能的因素
- 森林中单棵树的分类强度(Strength):每棵树的分类强度越大, 则随机森林的分类性能越好
- 森林中树之间的相关度(Correlation):树之间的相关度越大,则随机森林的分类性能越差。