RandomForest的优点

Posted ybdesire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RandomForest的优点相关的知识,希望对你有一定的参考价值。

1. 引入

最近需要做表格数据(特征可读,特征多300+个,每个特征只有0/1两种值)分类,就尝试了比较适合表格数据的模型,比如RandomForest(后面缩写为RF), XGBoost(后面缩写为XGB), LightGBM, CatBoost。

按理来说,1995年贝尔实验室提出的RandomForest是最老的模型;XGBoost是后来2014年出现的;2017年微软提出的LightGBM进一步提升了XGB的训练效率降低了内存消耗;2017年,俄罗斯最大的搜索引擎 Yandex也开发了CatBoost,在参考1中也给出了CatBoost与其他模型的对比,结果也是CatBoost最好。

但在笔者的数据上,最后确意外的发现,RandomForest的准确率最高(当然其他模型也都是97%的准确率,大家相差不到1%)。但是RandomForest的训练时间比XGB快4倍,比LightGBM快2倍,比CatBoost快30倍。

这当然跟参数设置也有关系,但综合准确率、训练性能、调优所好精力来看,根据笔者多年的炼丹经验,对于表格数据,RF现在还是很有效的模型。

对RF进一步研究,笔者找到了RF鼻祖之一Breiman写的一些关于RF的comments(见参考2),本文就对comments中提到的RF的特点、优点,做一个总结。

2. RandomForest的特点

关于RF基分类器决策树模型的原理,可以看笔者写过的参考4。

参考2中总结了Breiman对RandomForest的很多看法,笔者理解RandomForest最大的优点是:可以用最脏的数据,来训练最好的模型。具体来说:

  1. 他可以对大规模数据进行高效率的模型训练,数据量大时训练时间也很快
  2. 他可以直接应对几千个输入特征值,不需要降低特征数量,特征很多时模型准确率也很不错
  3. 他能告诉我们在分类过程中,哪些变量的重要性更高(即feature importance)
  4. 他能很好的应对缺失值的情况(比如C4.5就根据缺失值定义了样本权重来计算有缺失值的信息增益)
  5. 他能应对不平衡数据集,哪怕是不平衡数据他也能处理好
  6. 他还能用在无监督学习中,比如聚类(参考3)、异常检测

3. 总结

本文总结了RF的优点,在这些现实数据建模中的难点上,它都能自动的处理好:大规模数据,高效率,多特征值,缺失值,不平衡数据。

参考

  1. https://cloud.tencent.com/developer/article/1049817
  2. https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm
  3. https://zhuanlan.zhihu.com/p/179286622
  4. https://blog.csdn.net/ybdesire/article/details/52234758

以上是关于RandomForest的优点的主要内容,如果未能解决你的问题,请参考以下文章

Python实现随机森林(Random Forest)

在 scikit-learn 中运行 Randomforest 的 MemoryError

R语言使用ranger包的ranger函数构建随机森林模型(random forest)

Scikit learn + Random Forest - 单棵树的特征

randomForest 包的功能重要性

10.机器学习技法--Random Forest