一周前开始接触Lightgbm,关于它的原理和主要思想很多地方都有,这里就不再赘述。这篇博文是我在参加天池数据挖掘比赛时的Lightgbm调参经验总结,希望对后续的工作有帮助。
1. 数据特征选择
除了数据集中的基本数据特征外,很多时候还需要从基本数据特征中通过统计或组合获得新的特征,这时候获得的新特征与原来的基本数据特征之间存在着相关性。新特征可能作为基本特征的补充更好地划分数据集,可能与原特征划分数据集的能力差不多,也可能较原特征的划分能力强,这时候我们应该根据实验结果考虑是否选择特征。
当新特征可以作为原特征的补充更好地划分数据集时,这个特征是应该保留的。其他情况则需要进行进一步的实验才能确定。
2. Lightgbm参数设置
Lightgbm是基于决策树的分布式梯度提升框架,以选取最大信息增益作为特征选择的目标。
它最主要的参数有:
objective='binary' #目标为二分类
num_leaves = 16 # 决策树叶子节点数
(Lightgbm用决策树叶子节点数来确定树的复杂度,而XGboost用max_depth确定树的复杂度)
num_threads=8 #最大线程数
learning_rate=0.05 #学习率
subsample=0.9 # 样本子集比例
n_estimators=1000 #最大迭代数
其中,num_leaves的设置与数据集特征总数有关,num_leaves尽量小于完全二叉树的叶子节点数,否则容易过拟合。
最大迭代数不必设置过大,可以在进行一次迭代后,根据最佳迭代数设置。
3.后续的目标
学习集成方法与深度神经网络,设计求两个类别之间距离的函数。
这里发现一篇写得不错的博文可以参考(分分钟带你杀入Kaggle Top 1%)