随机森林实际上就是决策树的Bagging版本。
当明白如何构造决策树后,就比较容易构造随机森林了。下面是随机森林的构造过程:
1. 假如训练集合中共有N个样本,则有放回的随机选择N个样本。之后用选择好了的N个样本来训练决策树。
2. 当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件m << M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。
3. 决策树的形成过程中每个节点都按照步骤2进行分裂。一直到不能够再分裂为止。注意整个决策树的形成过程中没有进行剪枝。
4. 按照步骤1~3构造大量决策树,这样就构成随机森林了。
从上面的步骤可以看出,随机森林的随机性体现在每棵树的训练样本是随机的,树中每个节点的分类属性也是随机选择的。有了这2个随机的保证,随机森林就不会产生过拟合的现象了。
随机森林有2个参数需要人为控制,一个是森林中树的数量,一般建议取很大。一个是m的大小,m要远小于M。