近年来,Xgboost[1-3]机器学习算法作为一种新兴的高效算法,能够自动利用CPU的多线程进行并行,同时在算法上加以改进,提高了精度,已经引起了越来越多人的关注. 机器学习过程中会涉及到参数的调整[4-7],比如控制学习率或者子模型的学习能力等,但是这些参数往往会让机器学习变得难以入门. 针对这个问题学术界认为对参数进行自动化选择势在必行,有学者开始着手设计一个“黑盒子”函数来对模型参数进行自动选择. 贝叶斯最优化算法[8-10]是近年来进化算法领域兴起的一种新兴算法,用贝叶斯网格概率模型来显式反映变量之间的依赖关系及可行解的分布,更符合实际问题的本质,在众多领域获得应用. 针对连续性函数,贝叶斯优化利用先验知识逼近未知函数的后验分布从而调节超参数. 贝叶斯优化充分利用前一个采样点的信息,其优化方式为通过对目标函数的学习,并找到使结果向全局最大提升的参数,在每一次使用新的采样来测试目标函数时,使用该信息来更新目标函数的先验分布.最后,算法测试由后验分布给出的最值可能点.
针对以上存在的问题,很多人提出了新的改进办法,例如Hutter等[11]提出了Grid Search,该算法采用网格搜索的方式对机器学习算法的参数进行寻优,但是Bergstra等[12]最新研究表明,网格搜索的效果要弱于随机搜索,同时他们提出了Tree Parzen算法[13-15].
本文为了简单处理和分析方便,研究的数据集都是二分类数据集. 针对以上问题,本文提出了一种基于贝叶斯最优化改进的Xgboost算法,该改进算法主要是针对组合参数寻优的过程,引用贝叶斯最优化算法寻找Xgboost的全局最优解,下文中用GP_Xgboost表示基于贝叶斯最优化改进的Xgboost.
1 预备知识 1.1 Xgboost算法其主要思想为:Xgboost是在Gradient Boosting Decision Tree基础上发展起来的,全名是eXreme Gradient Bosoting,由Tianqi Chen[16-17]于2015年提出的. 它比传统的GBDT算法,更进步的地方在于[18-19]:传统的GBDT只利用一阶的导数信息,而Xgboost对损失函数进行二阶的泰勒展开,求得到的最优解的效率更高. 以目标函数为logloss为例进行理论介绍.
(1) 将目标函数进行泰勒二阶展开:
$\begin{array}{l}{\rm{Ob}}{{\rm{j}}^{\left( t \right)}} = \displaystyle\sum\limits_{i = 1}^n {w\left( {{y_i},{y_i}^{(t - 1)} + {f_t}({x_i})} \right)} + \varOmega \left( {{f_t}} \right) + C \approx \\[15pt]\displaystyle\sum\limits_{i = 1}^n {\Biggr[ {w\Biggr( {{y_i},{y_i}^{(t - 1)} + {\partial _{{y_i}^{\left( {t - 1} \right)}}}w\Biggr( {{y_i},{y_i}^{(t - 1)}} )\Biggr.{f_t}({x_i}) + } \Biggr.} \Biggr.} \\[15pt]\Biggr. {\Biggr. {\Biggr. {\displaystyle\frac{1}{2}{\partial _{{y_i}^{\left( {t - 1} \right)}}}w\left( {{y_i},{y_i}^{(t - 1)}){f_t}^2({x_i})} \right)} \Biggr)} \Biggr)} \Biggr] + \varOmega \left( {{f_t}} \right) + C,\end{array}$ |
其中,
(2) 由于目标函数为logloss,所以有
$\begin{array}{l}\displaystyle{\partial _{{y_i}^{\left( {t - 1} \right)}}}w\left( {{y_i},{y_i}^{(t - 1)}} \right) = - {y_i}\left( {1 - \displaystyle\frac{1}{{1 + {e^{ - {y_i}(t - 1)}}}}} \right) +\\[15pt]\left( {1 + {y_i}} \right)\displaystyle\frac{1}{{1 + {e^{ - {y_i}(t - 1)}}}},\\[10pt]{\partial _{{y_i}^{\left( {t - 1} \right)}}}^2w\left( {{y_i},{y_i}^{(t - 1)}} \right) = \displaystyle\frac{{{e^{^{ - {y_i}(t - 1)}}}}}{{{{\left( {1 + {e^{ - {y_i}(t - 1)}}} \right)}^2}}}.\end{array}$ |
其主要思想为:在贝叶斯优化算法中,初始种群是根据均匀分布随机产生的,然后从当前种群中选择候选解,选择可以采用进化算法的各种选择方法,然后对选择后的种群建立贝叶斯网络概率模型,新的候选解就从模型的采样中获取,最后,将采样得到的解重新加入到原来的种群中,甚至可以用新的解代替原来的所有的解,重复这个过程,直到满足终止条件. 算法的主要流程如下:
第一步:设t=0,随机产生初始种群p(0);
第二步:从p(t)中选择候选解S(t);
第三步:在一定的选择规则和限制条件下构建符合要求的贝叶斯网格B;
第四步:根据贝叶斯网络B的联合分布函数产生新的解O(t);
第五步:用O(t)取代p(t)中的部分解,形成新的种群p(t+1);
第六步:如果不满足终止条件,转向第二步.
2 基于贝叶斯最优化改进的Xgboost算法 2.1 算法原理针对Xgboost算法存在的问题,本文提出一种改进的Xgboost算法,该算法的基本描述是:根据贝叶斯最优化算法的思想,先设定将要选择的参数组合区间,基于Xgboost算法,在参数寻优的过程中,结合贝叶斯最优化算法的思想,不断地训练模型,通过评价函数对每个参数组合得到的分类结果进行评价,最终得到最优参数组合,最后将最优参数组合代入Xgboost算法,从而分类性能得到提升.
2.2 算法步骤第一步:设t=0,设置参数组合的初始种群p(0).
第二步:从p(t)中选择候选解S(t).
第三步:根据公式
${x_t} = \mathop {\arg \max }\limits_{x \in D} {\mu _{t - 1}}(x) + {\beta _t}{}^{1/2}{\sigma _{t - 1}}(x)$ |
构建符合要求的贝叶斯网格B. 其中,下一次采样的位置
第四步:根据贝叶斯网络B的联合分布函数产生新的解O(t).
第五步:用O(t)取代p(t)中的部分解,形成新的种群p(t+1).
第六步:如果不满足终止条件,转向第二步.
3 实验结果与讨论 3.1 机器学习算法的评价标准传统的分类学习方法中,一般采用分类精度(正确分类的样本个数占总样本个数的比例)作为评价指标,但是如果用分类精度来评价不平衡数据集,是不合理的. 对于不平衡问题,新的评价标准,如F-value,G-mean,Recall等方法,都是建立在混淆矩阵(见表1)的基础上[10].
![]() |
表 1 二分类问题的混淆矩阵 Table 1 Confusion matrix of classification problems |
表1中TP和TN表示正确分类的正类和负类的样本数量;FN和FP分别表示错误分类的正类和负类的样本数量.
定义1 分类精度Accuracy
${\rm{Accuracy}} = \frac{{{\rm{TP}} + {\rm{TN}}}}{{{\rm{TP}} + {\rm{TN}} + {\rm{FP}} + {\rm{FN}}}}.$ | (1) |
Accuracy用来衡量分类的总体精度,精度越高,分类效果越好.
定义2 查全率
${\rm{Recall}} = \frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FN}}}}.$ | (2) |
Recall用来反映被正确判定的正例占总的正例的比重.
定义3 F-value
$\rm{F} {\text{-}} {\rm{value}} = \frac{{\left( {1 + {\beta ^2}} \right) \times {\rm{Precision \times Recall}}}}{{{\beta ^2} \times {\rm{Precision + Recall}}}} \times 100\%. $ | (3) |
F-value指标是一种综合考虑查全率和查准率的分类评价指标,其中precision为查准率,Recall为查全率,
${\rm{Precision}} = {\rm{TP}}/\left( {{\rm{TP}} + {\rm{FP}}} \right).$ |
本实验用的数据集:Heart,German,Pima和Wilt,均来自UCI(http://archive.ics.uci.edu/ml/)机器学习数据库;Titanic,train_modified来自Kaggle(https:// www.kaggle.com/competitions). 表2描述了实验所使用的初始不平衡数据集的特征.
![]() |
表 2 实验数据集样本分布信息 Table 2 Sample distribution information of experimental data |
使用Python语言和Pycharm软件来实现,分别用到了Python中的sklearn、pandas、numpy等包.
算法参数设置:
(1) RandomForest、GBDT、Adaboost和Bagging算法用的都是sklearn里面模型,其中RandomForest算法中n_esitmators取值为10,min_samples_split取值为2,max_depth取值为8;GBDT算法中n_esitmators取值取100,min_samples_split取值为2,max_depth取值为8;Adaboost算法中n_esitmators取值取50;Bagging算法中n_esitmators取值取50;Xgboost算法中算法中n_esitmators取值取50,max_depth取值为8.
(2) GP_Xgboost算法参数设置:learning_rate取值为0.1;subsample取值为0.8,seed取值为27;eta取值为0.1, ;eval_metric设置为mae. 将要寻优的组合参数设置:min_child_weight:(1, 20)、max_depth:(5, 15)、n_estimators:(10, 100)、col_sample_bytree:(0.1, 1)、gamma:(0, 1)、alpha:(0, 1).
3.4 五大集成机器学习算法结果比较(1) 数据预处理,同时设置好集成机器学习算法的参数,这里为了比较算法的公平性,统一设置成一样的参数组合.
(2) 获取分类结果. 用python语言编写代码,设置好模型参数,将经过预处理的数据分别代入到RandomForest、GBDT、Adaboost和Bagging算法中得到分类结果.
(3) 计算F-value、Accuracy和Recall. 将各种算法的分类结果代入式(1)~(3)中得到相应结果.
3.5 GP_Xgboost和五大集成机器学习算法结果比较(1) 组合参数设置. 对Xgboost算法设置不同组合的学习参数和子模型参数,通常这里设置的是某个参数的范围. 例如: n_esitmators的参数范围为[10,100].
(2) 训练GP_Xgboost. 将组合参数代入GP-Xgboost算法中训练,通过评价函数来评判每个组合参数的结果,用贝叶斯最优化来找到组合参数的全局最优解.
(3) 获取分类结果. 用Python语言编写代码,设置好模型参数,将经过预处理的数据分别代入到GP_Xgboost算法中得到分类结果.
(4) 计算F-value、Accuracy和Recall. 将各种算法的分类结果代入式(1)~(3)中得到相应结果.
3.6 实验结果根据实验数据和实验方法,对6种算法在实验数据下进行了Accuracy和F1的测试,结果见表3~5.
![]() |
表 3 GP_Xgboost算法在数据集Pima上的Accuracy对比 Table 3 The accuracy comparison of GP_Xgboost algorithm in data set Pima |
![]() |
表 4 6种算法在8个数据集上的Accuracy对比 Table 4 Accuracy comparison of six algorithms in 8 data sets |
![]() |
表 5 6种算法在8个数据集上的F1对比 Table 5 Formula 1 comparison of six algorithms in 8 data sets |
通过表3发现,针对在数据集Pima上,当组合参数是[8.820 1|0.624 0|2.403 6|6.282 9|1.193 2|45.362 8]时,GP_Xgboost算法的分类精度是最高的82.58%. 另外7种数据集的实验,同Pima数据实验一样.
从表4中发现,同样的默认参数情况下,Accuracy衡量总体分类性能,一般情况下Xgboost在总体分类性能要优于其他4种集成机器学习算法,同时从表4中发现,Accuracy是一个综合评价标准,一般情况下Xgboost在总体分类性能也要优于其他四种集成机器学习算法.
通过表4~5,不难发现同样模型参数的情况下,同一数据集和同一算法,随着样本的增加,算法的分类性能也随之增加,同时在分类性能上Xgboost都要优于其他4类算法, 因此下文中着重研究基于Xgboost算法的改进GP_Xgboost算法.
通过表4~5实验结果不难发现,在多组实验数据的情况下,Accuracy和F1两个评价指标GP_Xgboost都明显高于通过穷举法得到的分类精度,证明了本文算法的有效性和稳定性.
3.7 算法的有效性、鲁棒性和完整性分析GP_Xgboost算法是基于集成机器学习算法和贝叶斯最优化算法,本质上是机器学习算法进行参数寻优,由于贝叶斯最优化算法是一种求解全局最优解的算法,在理论上等价于求函数的最大值. 而当有多组参数的时候,就等价于多目标优化问题,即在函数的限制内对多组数据进行多目标求解. 由此可知,GP_Xgboost是满足完整性的. 为了验证贝叶斯最优化对Xgboost参数寻优的鲁棒性,本文设置了多组不同的参数,实验结果表明,在数据集变化或者存在噪声的情况下,该算法的性能是稳定的. 另外,由各组实验的对比结果可知,GP_Xgboost取得的优化效果均好于原有的凭经验或随机的参数寻优方法,从而论证了本文提出的参数寻优算法是有效的.
4 结论针对Xgboost算法在组合参数寻优中存在的问题,本文引入了贝叶斯最优化算法,通过寻找组合参数的全局最优解的方法得到一个强分类器,提出了GP_Xgboost算法. 通过多组实验发现,针对某一个数据集可以准确地找到组合参数的最优解,同时GP_Xgboost在多组数据上的分类性能,都要优于原有凭经验或随机的参数寻优的Xgboost算法,因此该算法是可行的、满足现实需要的、行之有效的. 虽然分类性能得到了提高,但是在实验过程中发现,改进的算法运行时间要更长,如何顺应大数据环境,降低算法运行时间是接下来的工作.
[1] |
张昊, 纪宏超, 张红宇. XGBoost算法在电子商务商品推荐中的应用[J].
物联网技术, 2017, 2: 102-104.
ZHANG H, JI H C, ZHANG H Y. Application of XGBoost algorithm in E-commerce commodity recommendation[J]. Internet of Things Technology, 2017, 2: 102-104. |
[2] | 江明諺. 大数据下的糖尿病医疗管理-以D診所為例[D]. 高雄: 国立中山大學企業管理學系研究所, 2016: 1-70. |
[3] | GÓMEZ-RÍOS A, LUENGO J, HERRERA F. A study on the noise label influence in boosting algorithms: AdaBoost, GBM and XGBoost[C]//International Conference on Hybrid Artificial Intelligence Systems.[S.l.]: Springer, 2017: 268-280. |
[4] |
方匡南, 吴见彬, 朱建平. 随机森林方法研究综述[J].
统计与信息论坛, 2011, 26(3): 32-38.
FANG K N, WU J B, ZHU J P, et al. Study on the research on random forest method[J]. Journal of Statistics and Information, 2011, 26(3): 32-38. |
[5] |
孙克雷, 邓仙荣. 一种改进的基于梯度提升回归算法的O2O电子商务推荐模型[J].
安徽建筑大学学报, 2016, 24(2): 87-91.
SUN K L, DENG X R. An improved O2O E-commerce recommendation model based on gradient lifting regression algorithm[J]. Journal of Anhui University of Architecture, 2016, 24(2): 87-91. DOI: 10.11921/j.issn.2095-8382.20160217. |
[6] | 袁浩杰. Adaboost算法的并行化及其在目标分类中的应用[D]. 广州: 华南理工大学软件学院, 2015. |
[7] |
何清, 李宁, 罗文娟, 等. 大数据下的机器学习算法综述[J].
模式识别与人工智能, 2014, 27(4): 327-336.
HE Q, LI N, LUO W J, et al. Overview of machine learning algorithms under large data[J]. Pattern Recognition and Artificial Intelligence, 2014, 27(4): 327-336. |
[8] |
王中锋, 王志海. 基于条件对数似然函数导数的贝叶斯网络分类器优化算法[J].
计算机学报, 2012, 35(2): 364-374.
WANG Z F, WANG Z H. Optimization algorithm of Bayesian network classifier based on derivative of conditional log likelihood function[J]. Journal of Computers, 2012, 35(2): 364-374. |
[9] |
胡玉胜, 涂序彦, 崔晓瑜, 等. 基于贝叶斯网络的不确定性知识的推理方法[J].
计算机集成制造系统, 2001, 7(12): 65-68.
HU Y S, TU X Y, CUI X Y, et al. Reasoning method of uncertainty knowledge based on Bayesian network[J]. Computer Integrated Manufacturing System, 2001, 7(12): 65-68. DOI: 10.3969/j.issn.1006-5911.2001.12.014. |
[10] |
王双成, 杜瑞杰, 刘颖. 连续属性完全贝叶斯分类器的学习与优化[J].
计算机学报, 2012, 35(10): 2129-2138.
WANG S C, DU R J, LIU Y. Study and optimization of continuous Bayesian classifier with continuous attributes[J]. Journal of Computers, 2012, 35(10): 2129-2138. |
[11] | HUTTER F, HOOS H H, LEYTONBROWN K. Sequential model-based optimization for general algorithm configuration[C]//International Conference on Learning and Intelligent Optimization.[S.l.]: Springer, 2011. |
[12] | BERGSTRA J, BARDENET R, BENGIO Y, et al. Algorithms for hyperparameter optimization[C]//NIPS'11 Proceedings of the 24th International Conference on Neural Information Processing Systems. Granada, Spain: ACM, 2011. |
[13] | ILIEVSKI I, AKHTAR T, FENG J, et al. Efficient hyperparameter optimization for deep learning algorithms using deterministic RBF surrogates[J]. AAAI, 2017: 822-829. |
[14] | FRANCESCHI L, DONINI M, FRASCONI P, et al. Forward and Reverse Gradient-Based Hyperparameter Optimization[J]. arXiv preprint arXiv, 2017: 1703.01785. |
[15] | XIA Y, LIU C, LI Y Y, et al. A boosted decision tree approach using Bayesian hyper-parameter optimization for credit scoring[J]. Expert Systems with Applications, 2017, 78: 225-241. DOI: 10.1016/j.eswa.2017.02.017. |
[16] | CHEN T, GUESTRIN C. Xgboost: A scalable tree boosting system[C]//Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining.[S.l.]: ACM, 2016: 785-794. |
[17] | TIANQI C, GUESTRIN C. XGBoost: A Scalable Tree Boosting System[C]//KDD '16 Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. USA, California San Francisco: AMC, 2016. |
[18] | TORLAY L, PERRONE-BERTOLOTTI M, THOMAS E, et al. Machine learning-XGBoost analysis of language networks to classify patients with epilepsy[J]. Brain Informatics, 2017: 1-11. |
[19] | KEJELA G, RONG C. Cross-device consumer identification[C]//Data Mining Workshop (ICDMW), 2015 IEEE International Conference on. USA, Atlantic City: IEEE, 2015: 1687-1689. |