GBM、xgboost参数调试学习
主要参考文章:
http://blog.csdn.net/han_xiaoyang/article/details/52663170 (gbm)
http://blog.csdn.net/han_xiaoyang/article/details/52665396(xgboost)
(大神的原文,我只是搬运工)
原文很不错,只是我看晚了,比赛已经被关闭,所以拿不到比赛背景。此处是我个人学习简单记录,后续的会补充之前的学习内容。
这篇文章起先对于我来说,并没有太明白,刚把决策树看完(捂脸)。首先建议手上有本机器学习书,推荐周志华的和李航的,他两风格不一样,可以交叉,恰好符合“把书读厚和读薄”。李航更具有概括性,适合构建知识架构,周志华还给本科生上课会基础些。我看决策树这章节有明显感觉,李航的书中开始就是一段综述,很经典。
以上都是废话,下面这个是重点,请阅读两遍。
1、这些个参数都是个啥呀?
我刚刚读完决策树周志华的,在此装个13,读完之后,看不太懂博文,浅浅的知道以下几点:
1>GBDT是梯度提升决策树,是属于boosting家的,关注于偏差。
2>决策树的基本知识:信息熵、信息增益、信息增益比、基尼指数
(先默写出自己能对决策树和集成学习的认识,故意多写几个显得自己多么博学,握了个大草,说完了,我就知道这些,汗)。
根本看不懂,调参时,为什么要有min_samples_split、min_samples_leaf就这两个参数搞不太懂:
回头再看西瓜书,发现:
a>在你想到决策树时,脑海中每个结点应当对应的是:样本属性+样本个数。
b>这样注意到了,每个结点聚集了一些样本。这样就会有,当这个结点至少包含多少个结点,它才能分裂,还有树生长结束后至少要有多个样本。
(看西瓜书的时候,就应该想到,每个结点=>西瓜的某个特征+符合该特征的西瓜数。如果你比我还愚蠢,还没读懂,请你带着西瓜书,到超市买17个西瓜,把书中的实验做一下吧,这样至少以后可以卖瓜。)
这个必须强调:
结点样本的个数,就是为了结点分裂或者上次分裂的有效性的确认。
不仅在此处,所有的都是这样,训练数据挖掘出来的特征可能就是小范围数据具有的特征,可能不具有一般性。
假设:样本有100000个西瓜,某个结点上有2个西瓜,它自身的存在还有必要吗?这个结点还有接下来分的必要吗?基本上就是把所有的西瓜长得什么样都记住了,还怎么预测未知的呢?不能预测未知的西瓜,就是指模型过拟合了,不具备泛化能力。
2、调参套路是啥?
其实原文主要是以案例的形式来讲解一些sklearn中GBM如何调参,调参的基本套路,而且这个套路经过实践验证是可行的。进而再看下xgboost的调参套路,还是这个案例。xgboost才是重点。
(ps:有人很瞧不上,调参,GG,你先会再说)
明确以下:
i) GBM参数具有三大类:树模型参数、boosting参数、其他参数
ii)调参准则三条:baseline(有个参考标准);控制变量法;调参数的顺序是按照其影响度由高到低;
树模型参数:
主要是来控制生长,目的就是缓解过拟合。(我不展开细说,可以看大神的文章,有啥,什么作用)
调参流程如下: