为什么 sklearn 中的 HistGradientBoostingRegressor 速度如此之快且内存不足?

数据挖掘 scikit-学习 监督学习 lightgbm 记忆 梯度提升决策树
2022-02-22 01:03:53

我为我的问题训练了多个模型,大多数集成算法导致了长时间的拟合和训练时间以及磁盘上的巨大模型大小(对于 RandomForest 大约 10GB)但是当我从 sklearn 尝试 HistGradientBoostingRegressor 时,拟合和训练时间大约是 10 秒,模型大小也很低(大约 1MB),预测相当准确。当我遇到这种基于直方图的方法时,我正在尝试 GradientBoostRegressors。它在时间和内存复杂度上优于其他算法。我知道它基于微软的 LightGBM,它针对时间和内存进行了梯度提升优化,但我想知道为什么它更快(用比文档中解释的更简单的英语)和内存不足?如果您可以发布一些可以更好地解释这一点的资源,也会有所帮助。

1个回答

如果您没有看到此方法的用户指南部分,那里的解释非常好:

这些快速估计器首先将输入样本X分箱为整数值箱(通常为 256 个箱),这极大地减少了要考虑的分裂点的数量,并允许算法利用基于整数的数据结构(直方图)而不是依赖于排序的连续值在建造树木时。

在通常的树构建算法中,对于连续特征,考虑连续数据值之间的每个分割点。通过分箱,拆分候选的数量大大减少(对于具有连续特征的大型数据集)。内存需求也减少了,因为并不总是需要实际的特征值,只需要在 bin 中进行计数(和其他统计数据?)。