随机森林 VS 梯度提升机——模型融合之我见-36大数据
博主信息:Xavier Amatriain, 前机器学习领域研究员,如今就职于Quora。
随机森林相比于梯度提升决策树,主要有以下两个优点:
- 随机森林比梯度提升机更容易训练
- 随机森林比梯度提升机更难过拟合
对于第一点来说,随机森林通常只需要设置一个超参数即可:每个节点上随机选取的特征数量。在大多数情况下,将该参数设置为特征总数的平方根,模型足以取得不错的效果。而梯度提升机的超参数则包括提升树的数量和深度、学习率等等。
对于第二点,尽管我们称随机森林不会过拟合是不准确的,但是,随机森林的抗干扰性强,更不容易出现过拟合的情况。
在某种意义上讲,随机森林是一棵比梯度提升机更加灵活的集成树。但在一般情况下,经过良好训练的梯度提升机的性能往往优于随机森林。
此外,正如陈天奇(第二位博主)所提到的,随机森林往往更容易并行化。但是考虑到借助于一些高效方法,梯度提升机同样也能实现并行化训练,这算不上是随机森林的一个优势。
参考资料:
《Influence of Hyperparameters on Random Forest Accuracy》
随机森林——分类描述
博主信息:Tianqi Chen, 大规模机器学习领域博士
实际上,如果你一定要在两种方法中做出选择,参数经过精心调整的提升树的效果通常优于随机森林。主要原因在于训练目标的不同,提升树通过引入新的决策树来完善当前模型。我们往往可以使用较少的决策树就能够取得较高的准确率。
话虽如此,随机森林中二次取样和Bagging的思路同样也很重要。我们可以把这些思想纳入提升树的训练阶段,这有助于模型性能的进一步提升。
之前提到随机森林时,人们都会说随机森林更容易并行化,但是并行化的实现方法对提升树同样适用。提升树完全可以以分布式的形式高效地实现。我们在dmlc/xgboost中做到了这一点,XGBoost的性能非常优秀。
提升树的另一个优势在于模型本身,由于提升树是在最优化目标函数的过程中导出的,从本质上讲,它可以用于解决几乎所有能够求导的优化目标。这包括排名、泊松回归等等,在这一方面,随机森林则很难实现。我们有一个教程讨论了这一观点:提升树导论
博主信息:Waleed Kadous,机器学习与人工智能博士
不同的机器学习场景具有各自不同的特点。Boosting算法对噪声异常敏感,从偏差与方差间的权衡来看,如果数据是嘈杂的,Boosting算法可能会呈现出较高的模型方差。然而在其他情况下,Boosting算法往往能够取得较好的效果。
在另一方面,考虑到随机森林采用的模型融合方法与GBM不同,并不基于模型残差来构建集成模型,随机森林往往能够取得非常低的模型方差。
简而言之,你对两类算法的选择取决于你的应用场景,当你希望降低模型方差时,随机森林会是不错的选择;当你希望降低模型偏差时,GBM是不二之选。
博主信息:Eren Golge,AI研究员
二者的区别主要在于两个方面:算法上的区别以及实际应用时的效果差异。
在算法层面,随机森林通过对数据集进行随机采样来构建训练样本(在有些场景下,甚至还会对数据特征进行随机选择,仅使用部分特征进行训练),其认为随机化有利于模型在测试集上取得更好的泛化性能。
对于梯度提升树来说,假设最终模型是单棵决策树预测值的加权和,梯度提升树算法还会根据训练数据寻找所有决策树最优的线性组合。这种额外的调整或许可以理解为两类算法的差异。但需要注意的是,这些算法都有许多变种算法,在具体设计上可能存在一些相似的地方。
在应用层面,考虑到梯度提升树会根据观测值,对预测结果进行调整,其更容易受到噪声点的影响,进而导致梯度提升树更可能出现过拟合的情况。与此相反,随机森林对过拟合现象则具有更强的抗性。
因此,对这两类算法的选择取决于你当前的应用场景。
博主信息:Tong Zh,统计学博士
这两类算法间存在一个本质的区别,可能会迫使你放弃GBM,转而选择随机森林:由于各棵决策树的训练互不影响,随机森林能够轻松地部署在分布式环境中,而梯度提升树只能以序列化的方式训练。 因此,如果实验资源受数据规模或实验次数的限制,你可能不得不使用随机森林。
如果实验资源不受限,我个人更倾向使用GBM。我的观点和增强学习的思想不谋而合,这就好比你准备考试,完成一门测试之后,你肯定会花一些时间检查自己犯下的错误,而不是匆忙地准备下一场考试。
话虽如此,在真实环境下,我们还是经常会受到数据规模的限制,同样是训练2000棵决策树,随机森林要比GBM容易训练得多。
End.
转载请注明来自36大数据(36dsj.com): 36大数据 » 随机森林 VS 梯度提升机——模型融合之我见