GBM算法在预测任务中的对比分析

2025-01-09来源:EPS数据

1         引言

目前,对于中等数据集来说,与人工神经网络 ( Artificial Neural Network,ANN) 相比,梯度提升方法(Gradient Boosting Model,GBM)方法则有着较为明显优势。相对来说,boosting的训练时间会更短,参数调整时也不会耗费太多时间。Boosting 是一种集成学习策略,致力于从各种弱分类器中生成准确的分类器。通过划分训练数据,并使用每个部分来训练不同的模型或用一个具有不同设置的模型来实现,最后再用多数票将结果组合在一起。AdaBoost是 Freund 等人提出的第一个用于二元分类的有效boosting方法。当 AdaBoost 进行第一次迭代时,所有记录的权重相同,但在下一次迭代中,却会为错误分类的记录赋予更高的权重,模型迭代将继续、直到构造出有效的分类器。AdaBoost 发布后不久,就有研究发现,即使迭代次数增加,模型误差也不会变大。因此,AdaBoost 模型十分适用于解决过拟合问题。近些年来,学者们基于梯度提升决策树(Gradient Boosting Decision Tree,GBDT)提出了3 种基于决策树的有效梯度方法,分别是:XGBoost、CatBoost 和 LightGBM。这些方法均已成功应用于工业界、学术界和竞争性机器学习的研究中。我们基于EPS数据平台对数据进行研究,对比分析三种机器学习模型的性能。

2         相关算法介绍

2.1   GBDT(梯度提升决策树)

梯度提升树是一种利用加法模型与前向分歩算法实现学习的优化过程。当损失函数为平方误差损失函数和指数损失函数时,每一步的优化较为简单。但对一般损失函数而言,往往每一步优化并不容易。针对这一问题,Freidman提出了梯度提升(Gradient Boosting) 算法。Gradient Boosting 是Boosting中的一类算法,设计思想参考自梯度下降法,基本原理是根据当前模型损失函数的负梯度信息,来训练新加入的弱分类器,并将训练好的弱分类器以累加的形式结合到现有模型中。采用决策树作为弱分类器的Gradient Boosting算法被称为GBDT,有时也称为MART(Multiple Additive Regression Tree)。梯度提升方法以分段方式构造解,并通过优化损失函数来解决过拟合问题。例如:假设有一个定制的基学习器 image.png(如决策树)和一个损失函数image.png。若直接估计参数会十分困难,因此在每次迭代时使用迭代模型。每次迭代模型都将被更新、并重选一个新的基学习器image.png,其中增量可表示为:

image.png

这样就可以将难解的优化问题转化为常用的最小二乘优化问题,即:

image.png

这里,对梯度提升算法的实现步骤可做阐释表述如下。

步骤1:令 image.png为常数;

步骤2对于m=1到M有:

1:利用式(1)计算spacer.gifimage.png;

2:训练函数image.png;

3:利用式(2)寻找最优image.png;

4:更新函数image.png

步骤3结束。

该算法从一片叶子开始,接着将针对每个节点和每个样本优化学习速率。

2.2   XGBoost(极限梯度提升树)

XGBoost( eXtreme Gradient Boosting)是一种高度可扩展、灵活且通用的梯度提升工具,其设计目的在于正确使用资源,并克服以往梯度提升算法的局限性。XGBoost和其它梯度提升算法的主要区别是,XGBoost使用了一种新的正则化技术,控制过拟合现象的产生。因此,在模型调整期间,XGBoost会更快、更健壮。正则化技术是通过在损失函数中 添加一个新项来实现的,此处的数学公式可写为:

image.png

其中,image.png; image.png为树枝的数量; image.png为每片叶子的值;image.png为正则化函数。XGBoost使用了新的增益函数,相应的函数形式具体如下:

image.png

其中,image.pngimage.png是右子节点的分数;H是左子节点的分数;Gain是在没有新子节点情况下的信息增益。

对XGBoost基本核心算法流程拟做阐释如下:(1)不断地添加树,并不断地进行特征分裂来生长一棵树。每次添加一个树,其实是学习一个新函数image.png,去拟合上次预测的残差。(2)当训练完成得到k棵树,需要预测一个样本的分数,即根据这个样本特征,在每棵树中会求得对应的一个叶子节点,每个叶子节点就对应一个分数。(3)基于此,只需将每棵树对应的分数加起来,就得到了该样本的预测值。

2.3   LightGBM(高效梯度提升算法)

为了提高GBDT算法效率、避免XGBoost的缺陷、并且能够在不损害准确率的条件下加快GBDT 模型的训练速度,微软研究团队于2017年4月开发了LightGBM。该算法在传统GBDT算法上进行了如下优化:

(1)基于Histogram的决策树算法。一个叶子的直方图可以由其父亲节点直方图与其兄弟直方图做差得到,在速度上可以提升一倍。

(2)单边梯度采样(Gradient-basedOne-Side Sampling,GOSS)。使用GOSS可以减少大量只具有小梯度的数据实例,使其在计算信息增益时只利用余下的具有高梯度的数据即可。相比XGBoost而言,既遍历所有特征值,也节省了不少时间和空间上的开销。GOSS算法从减少样本的角度出发,排除大部分小梯度的样本,仅用剩下的样本计算信息增益,这样做的好处是在减少数据量和保证精度上取得平衡。

(3)互斥特征捆绑(Exclusive Feature Bundling,EFB)。使用EFB可以将许多互斥的特征绑定为一个特征,这样达到了降维的目的。

(4)带深度限制的Leaf-wise叶子生长策略。大多数GBDT工具使用低效的按层生长( Level-wise)的决策树生长策略,且由于不加区分地对待同一层的叶子,带来了很多额外开销。实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。LightGBM使用了带有深度限制的按叶子生长( Leaf-wise)算法,在分裂次数相同的情况下,Leaf-wise可以降低误差,得到更好的精度。并且还能做到:i)直接支持类别特征(Categorical Feature);ii)支持高效并行;iii)Cache命中率优化。

上述优化使得LightGBM具有更好的准确性、更快的训练速度、以及大规模处理数据能力,同时还能支持GPU学习的优点。按层生长与按叶子生长的设计示意如下图所示。

4-1.png

图1 LightGBM算法叶子生长

2.4   CatBoost

CatBoost是Yandex在2017年提出的开源的机器学习库,同前面介绍的XGBoost和LightGBM类似,依然是在GBDT算法框架下的一种改进算法, 是一种基于对称决策树(Oblivious trees)算法的GBDT框架,不仅参数少、准确性高,还能支持类别型变量,高效合理地处理类别型特征(Categorical features)也是其主要亮点及优势。由其名称就可以看出,CatBoost是由categorical和boost组成,并改善了梯度偏差(Gradient bias)及预测偏移(Prediction shift)问题,提高了算法准确性和泛化能力。

CatBoost可以利用各种统计上的分类特征和数值特征的组合,将分类值编码成数字,并通过在当前树的新拆分处,使用贪婪方法解决特征组合的指数增长问题。同均值编码类似,重点是通过以下步骤防止过拟合:

(1)将记录随机划分为子集。

(2)将标签转换为整数的同时,将分类特征转化为数字特征,研究求得的数学公式为:

image.png

其中,CountinClass是给定分类特征在目标中的个数;TotalCount是之前对象的个数;prior由初始参数指定。

与XGBoost、LightGBM相比,CatBoost的创新点体现在如下方面:

(1)嵌入了将类别型特征自动处理为数值型特征的创新算法。先对categorical features做一些统计,计算某个类别特征( category)出现的频率,此后 加上超参数,生成新的数值型特征( numerical features)。

(2)Catboost使用了组合类别特征,可以用到特征之间的联系,极大地丰富了特征维度。

(3)采用排序提升的方法对抗训练集中的噪声点,这就避免了梯度估计的偏差,进而解决预测偏移的问题。

(4)采用完全对称树作为基模型。

3         实验

3.1   数据集准备

我们选择基于EPS数据平台的宏观数据库以及人均地区生产总值、居民消费价格指数、财政一般预算收入(亿元)、建成区面积(平方公里)、财政一般预算支出(亿元)、城镇居民人均可支配收入(元)、国家财政性教育经费(万元)、年末参加生育保险人数(万人)、人口出生率(‰)等指标,这些与就业人数相关的特征变量作为3种模型对比实验的数据集,以此来对比3种算法的性能。特征变量数目为9,目标特征为就业人员数。我们首先对数据进行预处理,使用归一化的预处理方法:

image.png

最终,将经过预处理和特征工程加工的数据集按照8∶2的比例划分为训练集和测试集。

3.2   实验设计

为了从性能表现、效率等方面对比最具代表性的3种基于GBDT的研发算法在回归应用中的情况,文中将按照以下步骤进行实验:

(1)使用相同的初始参数训练XGBoost CatBoostLightGBM算法的基准模型。

(2)使用超参数自动搜索模块GridSearchCV 训练XGBoostCatBoostLightGBM算法的调整模型。

(3)从训练和预测时间、预测得分两方面比较算法性能的表现情况。

3.3   评价指标

在实验中,为了全面评估不同算法在就业人数预测中的表现,从误差、相对误差以及运行时间等多个角度选择评价指标,包括均方误差(MSE)平均绝对误差(MAE)均方根误差 (RMSE)时间复杂度

(1)    MSE

用于评估预测结果与实际观察结果一致性的指标,计算公式为:

image.png

(2)    MAE

是用来衡量预测值与实际观测值之间偏离程度的一种指标,其计算公式为:

image.png

(3)    MAPE

均方根误差(RMSE)是衡量预测值与真实值之间差异的常用指标。它对预测误差的大小敏感,并且与目标变量的量纲相同,计算公式为:

image.png

(4)    时间复杂度

衡量模型在训练和预测过程中的耗时,反映算法的效率,单位为秒 (s)。记录以下两种时间:i)训练时间:模型完成训练所需时间。ii)预测时间:模型在测试集上生成预测结果所需时间。

4         结果分析

3种模型回归预测的MSE、RMSE、MAE、TIME四种评价指标在下表中展示,XGBoost、LightGBM、CatBoost代表建立的基准模型,XGBoost_CV、LightGBM_CV、CatBoost_CV代表在基准模型基础上,经过网格搜索和交叉验证后的优化模型。

表1 三种模型各类评价指标的表现

评价指标

XGBoost

LightGBM

CatBoost

MSE

0.0128

0.0476

0.0081

MAE

0.0608

0.1803

0.0688

RMSE

0.1135

0.2181

0.0904

TIME

0.0160

0.0060

0.5577

从表1可以看出,XGBoost、LightGBM、CatBoost三种基准模型在不同评价指标上的表现各有特点。其中,CatBoost模型在MSE、RMSE指标上优于XGBoost和LightGBM,但训练时间较长;而LightGBM虽然在误差指标上相对较差,但训练时间最短,显示出较好的效率优势。为进一步提升模型性能,对三种基准模型进行了参数调优和交叉验证,优化后的结果如表2所示。

表2 三种模型设置交叉验证后的表现

评价指标

XGBoost_CV

LightGBM_CV

CatBoost_CV

MSE

0.0182

0.0561

0.0147

MAE

0.0771

0.1937

0.0879

RMSE

0.1329

0.2322

0.1192

TIME

0.0154

0.0073

0.4792

表2展示了三种模型(XGBoost、LightGBM、CatBoost)经过交叉验证和参数调优后的表现。与基准模型相比,优化后的模型在误差指标上出现了一定的提升,具体如下:

1XGBoost_CV的MSE、MAE和RMSE略有增加,说明优化后的模型虽然提升了稳定性,但相较于基准模型,可能在某些数据切分上无法获得明显的提升。优化后的模型的时间表现保持较为稳定,计算时间非常接近基准模型。

2)LightGBM_CV的MSEMAERMSE均有所增加,尤其是MAERMSE的增幅较大。这可能表明在进行交叉验证和调参时,LightGBM的参数未能充分适应当前数据集的特点,导致其预测精度下降,但是交叉验证有助于提升模型的泛化能力。

3)CatBoost_CV的误差增加幅度相对较小,且所有评价指标(MSEMAERMSE)的变化较为平稳。虽然它的表现依然优于其他两个模型,但在经过交叉验证和调参之后,误差略有上升,这表明即使进行了优化,CatBoost在该数据集上的表现也有所波动。

这里特别说明一下,增加交叉验证之后误差提升的原因:

(1)过拟合与偏差的平衡:交叉验证帮助降低了过拟合的风险,可能导致在某些数据集上的预测误差有所增加。模型在优化过程中尽管能更好地泛化,但对于特定的训练数据,精确度有所下降。

(2)参数调优与数据适配:在进行交叉验证和参数调优时,可能并未找到最优的参数配置,导致误差增大。特别是对于LightGBM,参数调整可能没有完全适应数据特征,造成了表现的不如预期。

(3)交叉验证的特性:交叉验证的过程中,数据被分割成不同的训练和验证集,这可能导致模型在不同的数据子集上表现出不同的误差。对于某些数据集,这可能会增加训练的难度,导致整体误差增大。

5         结论

本研究基于 EPS 数据平台,选取了与就业人数相关的特征变量,构建数据集,对 XGBoost、LightGBM 和 CatBoost 三种基于 GBDT 的机器学习算法在回归任务中的性能进行了对比分析。

通过实验发现,在基准模型阶段,CatBoost 在 MSE、MAE 和 RMSE 等误差指标上表现出色,展现出较高的预测准确性,但训练时间较长。LightGBM 则在训练效率方面具有明显优势,训练时间最短,不过其误差指标相对较差。XGBoost 在各项指标上表现较为平衡。

在对基准模型进行参数调优和交叉验证后,结果显示优化后的模型在误差指标上出现了不同程度的变化。XGBoost_CV 稳定性有所提升,但在数据切分上未获得显著优势;LightGBM_CV 的预测精度下降,表明其参数调整未充分适配数据集;CatBoost_CV 误差虽有小幅度下降,但整体表现仍优于其他两个模型,且波动相对较小。

总体而言,在实际应用中,若对预测准确性要求较高且计算资源充足,CatBoost 是较为合适的选择;若注重训练效率,LightGBM 则更具优势;而 XGBoost 在准确性和效率之间提供了一种平衡的解决方案。未来研究可进一步探索更有效的参数调整策略,以提高模型在特定数据集上的性能,同时也可考虑将这些算法应用于其他领域的回归问题,拓展其适用范围