1. 随机森林的基本思想
在随机森林中将生成很多的决策树,并不像在CART模型里一样只生成唯一的树。当在基于某些属性对一个新的对象进行分类判别时,随机森林中的每一棵树都会给出自己的分类选择,并由此进行“投票”,森林整体的输出结果将会是票数最多的分类选项;而在回归问题中,随机森林的输出将会是所有决策树输出的平均值。
2. 随机森林的构造过程:
2.1 若训练集中的样本个数为N,则有放回的随机选择N个样本用来训练一个决策树,作为决策树根节点处的样本。
2.2 若每个样本有M个属性,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性(m << M),然后从这m个属性中采用某种策略(如信息增益)来选择1个属性作为该节点的分裂属性。
2.3. 决策树形成过程中每个节点都要按照步骤2来分裂,一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。
2.4. 按照步骤1~3建立大量的决策树,这样就构成随机森林了。
在每一棵决策树的构建过程中有两点需要注意:随机采样与完全分裂。
- 首先是两个随机采样的过程:random forest对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式(即bootstrap抽样),可能存在的重复样本使得每一棵树的输入样本都不一定是全部样本。然后进行列采样,从M个feature中,选择m个(m << M)。由于两个随机采样的过程保证了随机性,所以就算不剪枝也相对不容易出现over-fitting。
- 对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。
3. 随机森林的优点与缺点
3.1 优点:
3.1.1 两个随机采样的过程使得随机森林不容易陷入过拟合,同时具有具有很好的抗噪声能力
3.1.2 可以处理很高纬度的数据,并且不用做特征选择,既能处理离散型数据,也能处理连续型数据,数据集无需规范化,对数据集的适应能力强
3.1.3 在对缺失数据进行估计时,随机森林是一个十分有效的方法。就算存在大量的数据缺失,随机森林也能较好地保持精确性;
3.1.4 可生成一个Proximities=(pij)矩阵,用于度量样本之间的相似性;并确定最重要的变量,能够输出变量的重要性程度。
3.1.5 在创建随机森林的时候,对generlization error使用的是无偏估计;
3.1.6 实现比较简单,训练速度快,容易做成并行化方法,可以得到变量重要性排序(两种:基于OOB误分率的增加量和基于分裂时的GINI下降量
3.1.7 随机森林算法能解决分类与回归两种类型的问题,并在这两个方面都有相当好的估计表现;
3.2 缺点:
3.2.1 随机森林在解决回归问题时表现不如分类问题好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
3.2.2 随机森林像是一个无法控制模型内部的运行的黑盒子,只能在不同的参数和随机种子之间进行尝试。