算法层面比较: GBDT vs Random Forests (RF)
1) GBDT一次只训练一棵树,而RF一次可以并行地训练多棵树,所以GBDT的训练时间更长。所以,GBDT通常会使用更小的树,同时也减少训练一棵树的时间。
2)RF更不容易过拟合,训练更多的树能够降低RF过拟合的可能性,却增加GBDT过拟合的可能性。 (因为在统计学角度,RF通过训练更多的树降低方差,而GBDT通过训练更多的树来降低偏差.)
3) RF更易于调整,因为其性能随树的个数单调递增。而对于GBDT来说,当树的个数太大时,其性能可能会随着树的个数增加而降低。
随机森林
支持二分类,多分类,回归。训练的每棵树的分类结果都会有所不同,将所有树结合在一起可以降低方差,从而提高性能。
1.训练
每一次迭代中从原始数据集采样得到子数据集,在子数据集上应用决策树模型。对于不同的子数据集,使用不同的特征子集作为决策树上的分类节点。
2.预测
1)分类模型:多数投票制。每一棵树的预测结果代表对对应类的一个选票,最终将选票最多的类作为最终预测结果。
2)回归模型:平均。将每棵树的结果做平均得到最终预测结果。
3.提升模型性能常考虑的参数
1)numTrees: 增加树的数目能够降低模型的方差,提高在测试集上的性能,但是同时也会线性增加训练时间。
2)maxDepth:增加每棵树的深度能够增加树的可表示性,但也会增加训练时间并且可能会过拟合(增加了每棵树中的特征个数)。但是相比于单棵决策树,增加树的深度对于随机森林来说是可以接受的。

本文对比分析了Spark中的GBDT、随机森林(RF)和xgboost。GBDT训练时间长,易过拟合,但通过调整参数可优化;RF并行训练多棵树,不易过拟合,参数调整简单;xgboost利用泰勒展开快速学习,防止过拟合。关键在于理解各类模型的优缺点及参数调优。

1万+

被折叠的 条评论
为什么被折叠?



