【机器学习】集成学习(四)----随机森林

从前面的提升树,到 GBDT G B D T ,再到 RF R F ,我们可以发现在集成学习中,基分类器选择决策树往往能有很不错的效果,这是因为它们通常具有较低的偏差和较高的方差(分类误差小,但容易过拟合),这样的特性使其在平均过程中更有利。这一篇我们就来了解一下随机森林这个算法的方法。
随机森林( RandomForest R a n d o m F o r e s t ),是在以决策树为基分类器构建 Bagging B a g g i n g 集成的基础上进一步在 cart c a r t 决策树的训练过程引入了随机属性选择。关于随机森林这一算法,书上对其的描述都比较少,因此去看了一些论文和文章。

【算法思想】

总的来看,其实就是用 bootstrap b o o t s t r a p 自助采样得到的 T T 个数据集,以分类决策树作为基分类器进行学习,得到T棵分类决策树,用投票法的方式将它们结合起来变为森林(将测试样本输入,每棵决策树会给出相应的分类,森林的最终分类,选择这些分类中出现最多的类别作为输出)。
随机体现在哪?
那么,随机森林的“随机”是体现在哪呢?其实就是体现在,对自助采样得到的数据集学习分类器这一学习过程中。
回忆前面的决策树生成算法,我们通常会根据每个节点上的所有特征,选择最优划分特征来进行划分节点。而在随机森林的每棵决策树生成中,我们对最优划分特征的选取集合并不是每个节点上的所有特征,而是会通过对所有特征这一集合随机选取一个子集来作为我们的选取范围,然后再在这个子集集合内选择最优划分特征。

算法过程:

输入:原始训练数据集 D D (m个样本),特征集 A A (有K个特征),参数 k k
输出:最终分类器(随机森林)

(1)对原始训练数据集D采用 bootstrap b o o t s t r a p 方法,得到 T T 个样本集(每个样本集有m个样本);
使63.2%36.8% 由 于 自 助 采 样 只 使 用 了 原 始 训 练 数 据 集 的 约 63.2 % 的 样 本 , 剩 下 的 36.8 % 的 未 抽
(The out-of-bag(oob) error estimate) 到 样 本 可 用 于 包 外 错 误 估 计 (The out-of-bag(oob) error estimate)
因 此 在 随 机 森 林 中 , 不 需 要 交 叉 验 证 或 单 独 的 测 试 集 来 做 错 误 估 计

(2) t=1,2,...,T t = 1 , 2 , . . . , T ,对样本集 t t 进行学习,得到基分类器t(基决策树 t t );
t:
tk ① 对 基 决 策 树 t 的 每 个 节 点 , 先 从 该 节 点 的 所 有 特 征 集 合 中 随 机 选 择 k 个 特 征 作 为 子 集 ,
然 后 再 从 这 个 子 集 中 选 择 最 优 属 性 进 行 划 分 。
t ② 对 基 决 策 树 t 进 行 完 全 划 分 , 即 决 策 树 的 某 一 叶 节 点 要 么 无 法 继 续 划 分 , 要 么 里
面 的 所 有 样 本 都 是 同 一 个 分 类

(3)用这 T T 棵基决策树(基分类器)组成随机森林(最终分类器)。
(
) 作 为 结 合 策 略 , 票 数 最 多 的 为 最 终 结 果 )

从 上 面 的 算 法 我 们 可 以 看 出 , 随 机 森 林 中 只 有 决 策 树 的 生 成 , 并 没 有 剪 枝 , 回 忆
决 策 树 剪 枝 的 意 义 , 实 际 上 是 为 了 减 小 过 拟 合 , 由 于 随 机 森 林 生 成 决 策 树 过 程 中
样 本 集 随 机 , 特 征 集 也 随 机 , 因 此 很 难 出 现 过 拟 合 现 象 , 但 是 对 于 每 一 棵 决 策 树
而 言 , 它 们 的 性 能 其 实 是 很 弱 的 , 但 通 过 结 合 策 略 集 成 为 森 林 后 , 性 能 得 到 了 很
广() 大 的 提 升 , 这 可 能 就 是 所 谓 的 集 思 广 益 、 众 志 成 城 吧 ( 笑 )

算法中重要参数:

1.决策树的数量 T T
树的数量越多,则过拟合越难出现,预测的效果会越好,但是这样会导致模型很大
2.每个节点上特征子集中的特征数k
k=1 k = 1 时,则是随机选择一个特征用于划分,当 k= k = 当前节点中所有特征值数量 K K ′ 时,则与传统的决策树无异。一般情况下,推荐 k=log2K k = l o g 2 K ′

【算法优缺点】

优点:
1、在当前的很多数据集上表现都很不错,相对于其他算法有着很大的优势;
比 如 超 参 数 数 量 不 多 , 且 这 些 超 参 数 易 理 解
BoostingAdaBoostGBDTRF 比 如 相 较 于 B o o s t i n g 系 列 的 A d a B o o s t 和 G B D T 来 说 , R F 实 现 比 较 简 单

2、训练速度很快,能够高度并行化;
BaggingRF B a g g i n g 算 法 的 特 点 , 即 各 个 模 型 之 间 相 互 独 立 , 因 此 对 于 R F 而 言 同 理 ,
训 练 时 树 与 树 之 间 是 相 互 独 立 的

3、它可以估计出每个特征的重要性,并且检测到特征间的关系;
---It gives estimates of what variables are important in the classification. ---It gives estimates of what variables are important in the classification.
---Prototypes are computed that give information about the relation ---Prototypes are computed that give information about the relation
between the variables and the classification. between the variables and the classification.

4、由于随机选择节点的特征子集,因此它能够高效的训练样本特征很多(高维度)的模型;

5、它有一个有效的方法来估计丢失的数据,并在大部分数据丢失时保持准确性;
---It has an effective method for estimating missing data and maintains ---It has an effective method for estimating missing data and maintains
accuracy when a large proportion of the data are missing. accuracy when a large proportion of the data are missing.

6、对于不平衡的数据集来说,它可以平衡误差;
---It has methods for balancing error in class population unbalanced data ---It has methods for balancing error in class population unbalanced data
sets. sets.

7、模型的方差小,抗过拟合能力强,由于对泛化误差使用的是无偏估计模型,因此泛化能力强;

8、不仅可以做分类、回归问题,还可以推广到无标签数据,进而将功能扩展到无监督聚类,数据视图,异常点检测等。还有很多基于 RF R F 的变种算法,如 extra trees extra trees Totally Random Trees Embedding Totally Random Trees Embedding Isolation Forest Isolation Forest ,应用相当广泛(这些算法的大概内容,可以去下面贴出的博客中看一看)。
---The capabilities of the above can be extended to unlabeled data,  ---The capabilities of the above can be extended to unlabeled data, 
leading to unsupervised clustering, data views and outlier detection. leading to unsupervised clustering, data views and outlier detection.

缺点:
1、对于特征较少的样本(低维度),分类效果可能并不理想;
2、在做回归问题时,它的效果并不如在分类问题上的效果,因为它不能给出一个连续的输出(即预测值不会超出训练数据集的范围),现在已有证明表示,在某些噪音较大的数据集上,随机森林会出现过拟合现象。
3、和神经网络相同,随机森林也像一个黑盒子一般。我们难以控制与解释其模型内部的运行,只能通过改变参数和随机种子来不断调试。

【总结】

从上述的特点来看,我们可以发现,随机森林对高维数据,不平衡数据,缺失数据有着很好地训练效果。
对于随机森林的学习暂且没有深入下去了,集成学习也准备告一段落,后面要准备开始进行实践和提升代码能力了。有时间会补充学习EM算法、隐马尔科夫和条件随机场,然后再看看K均值和数据挖掘中其他一些聚类算法。

参考文献:
1.《机器学习》   周志华
2.随机森林   Leo Breiman 、Adele Cutler
https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#ooberr
3.Bagging与随机森林算法原理小结   刘建平Pinard
https://www.cnblogs.com/pinard/p/6156009.html