1. 随机森林的概念
Q:什么是随机森林?
A:随机森林是一个包含多个决策树的分类器,由很多决策树构成,不同的决策树之间没有关联。当我们进行分类任务时,森林中的每一棵决策树都会分别对样本进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。 (即,少树服从多树)。
看起来是不是很简单呢?但是这里有一个问题,那就是随机森林中有多个决策树,那么,我们如何用已有的数据集去构建这么多的决策树呢?
首先,要明白,决策树是不同的,那么训练决策树所需要的数据也不同。
那么具体该如何选择呢?
既然是随机森林,那么它肯定是随机的!!!它的随机有两层含义:
- 样本随机:Bagging算法
- 属性随机
1.1. 样本随机
样本随机使用的是Bagging算法(Bootstrap aggregating,引导聚集算法)又称之为装袋算法。算法的流程如下:
给定一个训练集大小为n的训练集D,Bagging算法从中间随机的、有放回的选出m个大小为n′ 的子集Di作为新的训练集。
postscript:通过以上这种取样得到的集合Di中间可能会有重复的元素(因为是有放回的抽取元素)
1.2. 属性随机
若样本有M个属性时,随机从这M个属性中选取出m个属性(无放回),满足条件m<M。
postscript:在这种情况下,m个属性中是没有重复的属性的。
2. 随机森林的优缺点
优点:
- 它可以出来很高维度(特征很多)的数据,并且不用降维,无需做特征选择
- 它可以判断特征的重要程度(可以用来做特征选择)
- 可以判断出不同特征之间的相互影响
- 不容易过拟合
- 训练速度比较快,容易做成并行方法
- 实现起来比较简单
- 对于不平衡的数据集来说,它可以平衡误差。
- 如果有很大一部分的特征遗失,仍可以维持准确度。
缺点:
- 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
- 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。