本篇文章主要对在本次竞赛中排名靠前的同学的优化方法进行总结。
东文,14.835 第47名
冰琪,14.852 第50名
继端,14.871 第57名
可自行点击上述文章详细了解他们的优化过程
一、前言
- 总的来说,三位同学都经历了这三个步骤数据处理,特征处理,调参,但各步骤内所使用详细的方法有所不同。
- 这里我对三位同学的优化过程做了思维导图,帮助大家迅速了解他们的优化过程。
二、相同点分析
优化思路相似
- 都使用了xgboost,并分三步走:数据处理、特征分析与处理、参数调整。(ps:东文同学在得知数据清理的很干净后就不再进行数据处理)
- 其中在特征分析中三位同学都进行了变量之间的相关性分析。
- 在参数调整的阶段,都有根据变量的重要程度和相关度来进行调整,最终确定最优的参数组合
三、差异点分析
3.1 不使用工具 VS 使用工具
- 这里的工具是指gridSearchCV (网格搜索)
- 在本次竞赛中,冰琪和东文都使用了gridSearchCV,而继端没有。
这带来的差异有
(1)冰琪和东文在前面所进行的数据处理和特征处理都成了“无用功”。最后他们两个都发现,不进行任何数据处理和特征处理的原始数据,利用gridsearchCV进行调参的结果最佳,RMSE值最小。(当然,实践出真知,也只有试过了才知如何达到最优,并不是否定冰琪和东文的做法,只是陈述这一事实)
(2)反观继端,他前面的每一步数据处理和特征处理都是有用的,数据和特征的处理的处理使得损失值从18.847降到了14.32。
(3)但最终经过调参后,使用网格搜索的冰琪和东文的排名都优于不使用的继端。
3.1.2 使用工具与不使用工具孰优孰劣?(gridSearchCV)
使用gridSearchCV
- 优点:gridSearchCV将自动调参和交叉验证结合起来,只要把参数输进去,就能给出最优化的结果和参数。
-
缺点:这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。
(tips:搭配坐标下降法调参可以减少这个缺点的影响,后面会有详细论述。)
Q:关于使用gridSearchCV过拟合的风险,我询问了东文。
东文:gridSearchCV本身就是结合了交叉验证的,是使用验证集来计算最佳分数(最佳分数的评判标准可以自己设置),所以过拟合的风险和平时自己划分训练集 、测试集是一样的。
不使用工具
- 优点:优化的过程是完整而有条理的,每一步的是基于前一步的分析处理而来,更容易把握整个优化过程(数据处理和特征分析处理)
- 缺点:相比使用GridSearchCV而言是耗时耗力的,需要自己进行完善的数据处理、和特征分析处理。特别是在调参时,需要自己对影响力大的几个参数进行排列组合调参,最后得到这会占用非常多的时间和运行内存。
3.2 坐标下降调参vs遍历所有参数组合调参
东文和冰琪的选择:
使用一个快速调优的方法——坐标下降。
拿当前对模型影响最大的参数调优,直到最优化;再拿下一个影响最大的参数调优,如此下去,直到所有的参数调整完毕。
- 优点:省时省力、占用运行内存少
- 缺点:可能会调到局部最优而不是全局最优
继端的选择:
固定树的不同深度,同时对其他参数一起调整,遍历所有参数组合,返回损失值最小的参数参合,即最优参数组合。
- 优点:有可能调到全局最优(我认为继端还能继续优化,得到更好的成绩)
- 缺点:复杂度高,占用运行内存多,且耗时耗力
四、总结
首先,三位同学优化的结果是很棒的。
其次,我认为他们使用的方法可以互相结合。
具体来说:
东文和冰琪可以改进的地方有:
- 在数据处理的时候,选择删去重复值。(继端验证了这一步能够使得RMSE进一步下降)
- 在特征分析的时候,在相关性分析的基础上,应该增加对各特征的重要性进行分析,再对重要的、相关性高的特征单个拎出来分析(如继端就进行了时间特征分析、温度特征分析、风速特征分析),这会对后续的调参有非常大的参考帮助。
- 要进行健壮性分析、异常处理。这里东文和冰琪都没有考虑到,然而这是一个重要的点,这一步同样能使得RMSE下降。
继端可以改进的地方有:
- 在数据处理,可以对离群点进行分析和处理,删除离群点,可能对于模型的优化有益。
- 可以试着结合gridSearchCV,帮助节省前面大量的调参工作,达到局部最优后,再继续用你原有的方法进一步调参,努力靠近全局最优,最终得到最优参数组合。
以上都是我个人的拙见,仅供参考,希望对大家有帮助~