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最大的优点是:可以用最脏的数据,来训练最好的模型。具体来说:
- 他可以对大规模数据进行高效率的模型训练,数据量大时训练时间也很快
- 他可以直接应对几千个输入特征值,不需要降低特征数量,特征很多时模型准确率也很不错
- 他能告诉我们在分类过程中,哪些变量的重要性更高(即feature importance)
- 他能很好的应对缺失值的情况(比如C4.5就根据缺失值定义了样本权重来计算有缺失值的信息增益)
- 他能应对不平衡数据集,哪怕是不平衡数据他也能处理好
- 他还能用在无监督学习中,比如聚类(参考3)、异常检测
3. 总结
本文总结了RF的优点,在这些现实数据建模中的难点上,它都能自动的处理好:大规模数据,高效率,多特征值,缺失值,不平衡数据。
参考
- https://cloud.tencent.com/developer/article/1049817
- https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm
- https://zhuanlan.zhihu.com/p/179286622
- https://blog.csdn.net/ybdesire/article/details/52234758