kaggle-Porto Seguro's Safe Driver Prediction

Porto Seguro’s Safe Driver Prediction是一道回归预测题,参赛者需要根据数据给出某个保险实例是否会出发赔款的概率。该题有5000+人参加,近期也结赛了。最终我的排名1000+,离前20%只差一点点,有些可惜。不过这一次比赛中还是学到了很多东西。列出参考的notebook链接:

EDA:
Interactive Porto Insights - A Plot.ly Tutorial | Kaggle

该kaggler使用了stacking的方法。第一层模型使用了调参过的三个lgb(lightGBM)模型,第二层使用了logisticRegression进行拟合:
Simple Stacker LB 0.284 | Kaggle
Kaggle机器学习之模型融合(stacking)心得

本次比赛采用了gini系数作为评测指标。事实证明,在比赛中理解评测指标的原理是十分重要的,它能作为模型优化方向的重要参考。gini系数的详细解释:
Gini Coefficient - An Intuitive Explanation | Kaggle
基尼系数如何计算? - 知乎

本次我主要使用的是xgboost模型,也是第一次使用。该模型是GBDT的高效实现。
XGBoost Parameters — xgboost 0.6 documentation
机器学习系列(12)_XGBoost参数调优完全指南(附Python代码) - CSDN博客
Tune and compare XGB, LightGBM, RF with Hyperopt | Kaggle

本次比赛中存在严重的类别不平衡问题,主要有:上采样、下采样和重采样三种方法。解决方式参考如下:
Resampling strategies for imbalanced datasets | Kaggle


补充部分…

比赛结束后,排名靠前的kaggler都放出了自己的解决方案,列举链接如下:

1st place with representation learning

三个臭皮匠’s approach(s)

3rd place solution

Taylor-made NN for 0.285 PLB (part of solution of 8º)


本次比赛算是自己第一次较为完整地参加的kaggle比赛。抱着学习的目的,多看讨论区的kernel。最开始实现了别人的EDA,对数据有了基本的了解。然后开始实现以xgb模型为主的ensemble,顺便学习了gbdt与xgb的相关知识。自己很多时间都花在了xgb的调参上,通过官网的评测来试错,没有好好地利用本地cv。导致每天在比赛上花费了一定量的时间,但是收获和提高却不大。比赛后期也是ensemble了一下0.28x的各类模型,导致学到的东西不是很多。

赛后看别人的解决方案,学到了很多:

  • 使用神经网络作为ensemble的重要基模型。
  • 使用神经网络作为EDA的工具
  • 丢弃不重要属性(树模型评估),onehot类别属性,count类别属性
  • 好好利用本地的cv来调参!!!
  • 保存记录每一次运行的有价值的模型的参数、各类结果
  • 使用不同seed(random_state)训练,最后ensemble
  • ……

一定要相信自己的cv,private LB分数和LB分数并不一定是一致的,注意过拟合的问题。

注意比赛的timeline,合理分配时间。

希望以后的比赛能学到更多,取得更好的成绩。

你可能感兴趣的:(MasterWork-UCAS,科研,算法,论文,kaggle,机器学习相关,长篇)