上一章:机器篇——集成学习(一) 细说 Bagging 算法
下一章:机器篇——集成学习(三) 细说 提升(Boosting) 算法
本小节,细说 随机森林(Rondoom Forest) 算法,下一小节细说 提升(Boosting) 算法
二. 具体算法
2. 随机森林(Rondoom Forest, RF)
Rondom Forest 是 Bagging 算法的进化版
(1). Rondom Forest 顾名思义,就是用随机的方式建立一个森林,森林里面由很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为哪一类。
(2). 在建立每一棵决策树的过程中,有两点需要注意的:采样和完全分裂。
一般很多的决策树算法都有一个重要的步骤:剪枝。但是在随机森林里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现 over-fitting。按这种算法得到的随机森林的每一棵都是很弱的,但是,全部组合起来就很厉害了。
(3). 随机森林基本原理
随机森林通过自助法(bootstrap)重采样技术,从原始训练样本集 中有放回地重复随机抽样 个样本生成新的训练样本集合,然后根据自助样本集生成 个分类树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于一个独立抽取的样品,森林中的每棵树具有相同的分布,分类误差取决于每一棵树的分类能力和它们的相关性。特征选择采用随机的方法去分裂每一个节点,然后比较不同情况下产生的误差。能够检测到的内在估计误差、分类能力和相关性决定选择特征的数目。单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样本可以通过每一棵树的分类结果经统计后选择最可能的分类。
(4). 随机森林的三个主要超参数调整:
①. 节点规模
随机森林不像决策树,每一棵树叶子节点所包含的观察样本数量可能十分少。该超参数的目标是生成树的时候尽可能保持小偏差
②. 树的数量
在实践中选择数百棵树一般是比较好的选择
③. 预测器采样的数量
一般来说,如果一共有 个预测器,那么可以在回归任务中使用 个预测器作为采样数,在分类任务中使用 个预测器作为抽样。
(5). 随机森林的实现
①. 随机森林中的每一棵分类树为二叉树,其生成遵循自顶向下的递归分裂原则,即从根节点开始依次对训练集进行划分:在二叉树中,根节点包含全部训练数据,按照节点纯度最小原则,分裂为左节点和右节点。它们分别包含训练数据的一个子集,按照同样的规则节点继续分裂,直到满足分支停止规则而停止生长。若节点 上的分类树全部来自于同一类别,则此节点的纯度 。
②. 纯度度量方法:
a. 分类树为 Gini 准则
b. 回归树为方差计算准则
③. 具体实现过程
a. 原始训练集为