正文
随机森林是由决策树通过Bagging策略训练而成的,即:
Bagging+DecisionTree=RandomForest
随机森林的算法执行过程:
设有训练数据集S={(x1,y1),(x2,y2),...,(xN,yN)}S={(x1,y1),(x2,y2),...,(xN,yN)}
其中xi∈X⊆Rnxi∈X⊆Rn
弱学习器迭代次数TT
输出强学习器F(x)
1、在第t,t=1,2,...,Tt,t=1,2,...,T次随机取样中,采NN次样,得到包含NN个样本的采样集DtDt
2、将采样集DtDt使用CART方法训练第tt个弱学习器Gt(x)Gt(x)
3、如果是分类算法预测,则<script type="math/tex" id="MathJax-Element-585">T</script>个弱学习器投出最多票数的类别或者类别之一为最终类别;如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终模型输出。
随机森林算法的优缺点:
优点:
训练可以高度并行化,对于大样本训练有速度优势;
由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的进行模型训练;
在训练后,可以给出各个特征对于输出的重要性;
由于采用了随机采样,训练出的模型的方差小,泛化能力强;
相对于Boosting系列的Adaboost和GBDT, RandomForest实现比较简单;
对部分特征缺失不敏感。
缺点:
在某些噪音比较大的样本集上,RF模型容易陷入过拟合;
取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果;
相对于基于决策树的Boosting的GBDT算法来说,想要达到一个比较好的效果,弱分类器的个数远高于GBDT,也就是说RandomForest模型在高维大数据集上训练出的模型太大。