尽管近年来神经网络复兴并大为流行,但是 boosting 算法在训练样本量有限、所需训练时间较短、缺乏调参知识等场景依然有其不可或缺的优势。本文从算法结构差异、每个算法的分类变量时的处理、算法在数据集上的实现等多个方面对 3 种代表性的 boosting 算法 CatBoost、Light GBM 和 XGBoost 进行了对比;虽然本文结论依据于特定的数据集,但通常情况下,XGBoost 都比另外两个算法慢。
历史
- 2014 年 3 月,XGBOOST 最早作为研究项目,由陈天奇提出
- 2017 年 1 月,微软发布首个稳定版 LightGBM
- 2017 年 4 月,俄罗斯顶尖技术公司 Yandex 开源 CatBoost
介绍
由于 XGBoost(通常被称为 GBM 杀手)已经在机器学习领域出现了很久,如今有非常多详细论述它的文章,所以本文将重点讨论 CatBoost 和 LGBM,在下文我们将谈到:
- 算法结构差异
- 每个算法的分类变量时的处理
- 如何理解参数
- 算法在数据集上的实现
- 每个算法的表现
结构差异
在过滤数据样例寻找分割值时,LightGBM 使用的是全新的技术:基于梯度的单边采样(GOSS);而 XGBoost 则通过预分类算法和直方图算法来确定最优分割。
每个模型是如何处理属性分类变量的?
- CatBoost
CatBoost 可赋予分类变量指标,进而通过独热最大