关于模型介绍,网上已经有许多,这里不再复制。不过目前来看,使用XGB算法,足够得到相当出色的模型效果了,因此也推荐大家直接学习xgb,然后是lightboost和catboost。
这一部分代码主要是对lgb进行调参,以获得模型效果最佳。
- 随缘调参
说好听点也是靠经验,可以通过训练集、验证集的结果对比,了解特定参数的效果,然后心中默默祈祷奇迹,不行就换一组参数。工作中使用xgb比较多,一般都是调整gamma参数和采样率,控制模型不过拟合。 - 贝叶斯调参
贝叶斯调参有一定理论依据,效果也常常比手动调参好一些,比较推荐这个方法,也需要消耗一定时间。网格调参并不是很推荐,主要太费时间,最终效果也不一定好。
附上LGB的参数相关说明,详细信息可以见:https://lightgbm.apachecn.org/#/docs/6,以下是常用到的几个,必须清楚含义和调参原理。
- objective: default=regression(回归),binary(二分类),根据任务自行选择
- num_iterations:最大迭代次数(树的个数),前期可以先选小一点,一般树过深也没什么必要。
- learning_rate, default=0.1,学习率,0.01~0.1之间
- num_leaves, default=31
- max_depth 树深
- min_data_in_leaf, default=20 ,一个叶子上数据的最小数量.,用来控制过拟合
- feature_fraction, default=1.0,每棵树的特征采样率
- bagging_fraction, default=1.0,每棵树的样本采样率
- bagging_freq, bagging 的频率, 0 意味着禁用 bagging. k 意味着每 k 次迭代执行bagging
- early_stopping_round 早停控制
- lambda_l1, default=0 重要的参数,用于控制过拟合
- lambda_l2, default=0 重要的参数,用于控制过拟合
- min_split_gain, default=0 重要的参数,用于控制过拟合
下面是简单的调参结果(特征工程没做好,效果不如baseline,太尴尬了)
一、未调参之前
参数设置如下:
验证集结果如下:
二、贝叶斯调参
跑2个小时得到的参数:
效果确实好不少,这2个小时是值得的!!