随机森林算法是Bagging集成框架下的一种算法,它同时对训练数据和特征采用随机抽样的方法来构建更加多样化的模型。随机森林具体的算法步骤如下:
1, 假设有N个样本,则有放回的随机选择N个样本(每次随机选择一个样本,然后将该样本放回并继续选择)。采用选择好的N个样本用来训练一个决策树,作为决策树根节点处的样本。
2. 假设每个样本有M个属性,在决策树做节点分裂时,随机从这M个属性中选取m个属性,满足条件 m <3. 决策树形成过程中重复步骤2来计算和分裂节点。一直到节点不能够再分裂,或者达到设置好的阈值(比如树的深度,叶子节点的数量等)为止。注意整个决策树形成过程中没有进行剪枝。
4. 重复步骤1~3建立大量的决策树,这样就构成了随机森林。
随机森林的随机性体现在每棵树的训练样本是随机的,树中每个节点的分裂属性集合也是随机选择确定的,如下:
(1)随机采样:随机森林在计算每棵树时,从全部训练样本(样本数为N)中选取一个可能有重复的、大小同样为N的数据集进行训练(即Booststrap采样)。
(2)特征选取的随机性:在节点分裂计算时,随机地选取所有特征的一个子集,用来计算最佳的分割方式。