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