认识随机森林
随机森林
随机森林(random forest,RF),本质上是一种集成学习。 所谓集成学习,就是使用一组训练数据,训练多个决策模型,并让他们共同参与决策的方法。说白了就是“三个臭皮匠顶个诸葛亮”的意思。集成学习主要是分为两类:
- 个体学习器之间存在强的依赖关系,必须串行生成的序列方法。
这个可以理解为,下一个臭皮匠主要处理的问题和上一个臭皮匠的表现有关,所以下一个决策模型需要在上一个决策模型生成之后才可以进行生成。 - 个体学习器之间不存在强依赖关系,可以同时生成的并行方法。
各个样本学习器之间相互独立。
这两类的典型就是Boosting 和 Bagging 。
而随机森林就属于第二种,是一种bagging的变种。那么什么是bagging呢?
bagging
参考周志华老师的西瓜书。bagging 就是通过使用有放回的自助采样,从原始数据集合中获取m个采样数据集合,然后基于这些数据集合训练处m个学习器,再讲这些学习器进行结合。这就是bagging的基本思想。算法流程表示为:
*输入: 训练集D, 学习算法alg(),模型个数T
过程:
- 从训练数据集合中获取T个采样数据集合
- 使用学习算法alg,和T个数据集合训练T个算法模型
输出:
将待决策的样本使用T个模型进行决策,投票表决最后的结果。*
随机森林
随机森林是bagging的一个变种。描述起来非常简单,只是基于bagging的基础上引入了随机的属性。对比与前面所说的决策树是在所有的属性(假设为d个)选择一个最优的属性作为分类节点。而在随机森林中,是在所有属性集合中随机选择K个属性集合,在这被随机选择的k个属性集合中选择最优的属性作为分类的结点。明显,如果k=d,则和传统决策树生成是一样的。推荐的k是log2(d)
*输入: 训练集D,学习算法alg(), 模型个数T,随机扰动k(k<d)
过程:
- 从训练数据集合中获取T个采样数据集合
- 对T个采样集合,对每个集合随机选择不同的k个属性,对每个集合对应的k个属性通过学习算法alg生成T个算法模型
输出:
将待决策的样本使用T个模型进行决策,投票表决最后的结果。*
随机森林就是如此简单,容易实现,开销小,但是却非常有效。
随机森林的训练效率常优于Bagging,因为在个体决策树的构建过程中, Bagging使用的是" 确定型" 决策树?在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的" 随机型"决策树则只需考察-个属性子集
周志华 著. 机器学习, 北京: 清华大学出版社, 2016年1月.