1. 算法
有了上一节的基础,我们现在来学习如何集成所有天气学家的意见,综合输出结果。
顾名思义,随机森林的“森林”,就是指集成许多棵决策树,每一棵树都有一个自己的分类结果,现在这些树聚集在一起“开会”,进行“投票”,比如我们要预测某一个样本点的类别,90%的树认为这个样本点是“0”,剩下10%的树认为这个样本点是“1”。现在你觉得这个样本点的类别是“0”还是“1”呢?
现在我们了解了,那“随机”又是什么意思呢?
我们前面用过一个天气学家的例子,每一个参与投票的天气学家都是不同语言,不同学术背景,不同研究方法,他们每个人的结论虽然可能不相同,但都有一定的道理和可信度。也就是说,虽然是许多棵决策树凑在一起开会,但如何保证不同的树能够得出不同的且具有一定可信度的结果呢?这就是“随机”的含义了,包含以下两点:
1. 随机选择样本(放回抽样);
2. 随机选择特征;
1. 随机有放回抽样
随机抽样就是指,在构建决策树的时候,每棵树的训练样本集都是总训练样本集中随机抽取的一部分。试想如果每颗树都使用同样的训练样本集,那他们得出的结果就有很大的重合度,那么就失去了集成的意义,直接用单个决策树进行分类不就行了?
有放回抽样则是指,当一颗树抽取了一部分训练集的样本后,仍然允许另外的树抽取这部分样本。我们希望每棵树的训练样本是有一些交集的,也就是说我们希望每棵树仍然保持了一定的“相似性”,仍然以天气学家来举例,假设每一位天气学家都只单独研究一个地区,彼此之间毫无交集,亚洲的科学家只有亚洲数据,欧洲的科学家只有欧洲的数据,那么这个时候亚洲的科学家只会知道亚洲地区是否会发生灾难,你问他是否世界末日即将到来,他会告诉你否定的答案,因为他手上只有亚洲的数据,没有其他地区的数据,也自然没有办法确定其他地区是否会发生灾难,也就不能肯定的告诉你会发生世界末日了。
2. 随机选择特征
这一部分的解释其实和上面的都类似,不再赘述。
随机森林分类效果(错误率)与两个因素有关:
森林中任意两棵树的相关性:相关性越大,错误率越大;
森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。
减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。
3. 算法步骤
第一部分:随机生成不同的决策树
1)如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;
2)如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
3)每棵树都尽最大程度的生长,并且没有剪枝过程。
第二部分:不同决策树投票得出结果,或者平均每一棵树的结果
4. 袋外错误率(obb score)
这是其他分类器所没有的,随机森林的非常特别的一个评价标准。
因为随机森林是有放回抽样,因此每一个决策树都可以使用袋外的其他训练样本评估精度,而后平均输出整体精度。
oob误分率是随机森林泛化误差的一个无偏估计,它的结果近似于需要大量计算的k折交叉验证。
2. 优缺点
优点
在数据集上表现良好,相对于其他算法有较大的优势
易于并行化,在大数据集上有很大的优势;
能够处理高维度数据,不用做特征选择。
3. 链接
随机森林算法及其实现(Random Forest)
https://blog.csdn.net/yangyin007/article/details/82385967
【机器学习】决策树(中)——Random Forest、Adaboost、GBDT (非常详细)