正文
今天准备再尝试一个新的算法:GBDT(GBM)
。
训练
经过前两个算法模型的学习再学习新的,会发现基本都差不多了,参数和接口有很多都相同,所以实现起来也很快。
1 | # -*- coding:utf-8 -*- |
调参
参考文章:
迭代次数
不想前两个模型有实现早停
的参数接口,这个模型只提供了一个monitor
回调函数接口,让你自己来实现,如上面训练代码那样。
1 | import pandas as pd |
调参结果为70最优,但是线上提交60更好,等所有参数调好之后再微调一下。
决策树最大深度(max_depth)& 内部节点划分所需最小样本数(min_samples_split)
1 | param_test2 = {'max_depth': range(3, 8, 2), 'min_samples_split': range(100, 801, 200)} |
内部节点再划分所需最小样本数(min_samples_split) & 叶子节点最少样本数(min_samples_leaf)
1 |
|
最大特征数(max_features)
1 | param_test4 = {'max_features': range(7, 20, 2)} |
最后再降低学习率,增大训练轮数,得到的最高得分为:0.7801
1 | gbr = GradientBoostingClassifier( |
然后用循环尝试融合三种模型,最终找到最优的融合比例为 LightGBM x 0.5 + GBDT x 0.5 ,最终得分为 0.7896。