概述
很早之前就已经听说过Kaggle了,但是一直没有进行实践。作为线上的机器学习竞赛平台,Kaggle为提升机器学习的实际应用提供了很好的条件,之前做的工作主要以理论为主,自己的实践较少。因此后面一段实践应该多利用Kaggle来进行学习。
这次先从一个二分类题目Titanic入手,解题思路学习自寒小阳的博客。这篇的目的是为了尽快熟悉Kaggle的常见解题流程。
思路
题目回顾
这个题目的背景是Titanic的事故。在这次事故中,有一部分乘客获救,有一部分乘客没有获救。题目给了我们乘客的一些信息,要求我们判断一组条件信息的乘客是否获救。
解题思路
从题目可以看出这道题是一道典型的二分类题目,接下来我来梳理一下原作者的解题思路:
1.载入数据+初探
利用pandas载入CSV数据
利用pandas的info(),和describe()方法来统计数据的缺失值,以及各项属性的均值和方差
2.初步关联分析
这一步原作者先将分别实现了各个属性与乘客是否获救的可视化,根据可视化的结果进行了初步的筛选,选择出了作为分类依据的属性
3.数据预处理
有些属性没有完整的数据,因此对于缺失的属性进行的填充,采用的方法是skl包中的randomForest方法
有些属性的动态范围过大,因此原作者对部分数据进行了归一化(我觉得对于全部属性进行归一化可能效果会好一些,避免特征权重不对等,但是我还没有进行测试,先记录下想法)
需要特别注意的是,数据预处理不仅是对于训练数据集进行的,对于测试集应进行同样的预处理过程。
4.回归建模
利用skl的库进行logistic回归,并进行第一次提交,之后进行的是模型的进一步优化
5.系数关联分析
利用回归的各属性前的系数,对于数据进行更加严格的关联分析,并有了新的建模思路
6.进行交叉验证
利用交叉验证来筛选效果更好的模型
7.观察badcase
通过观察在交叉验证集上错误的样本,来寻找优化的思路
8.处理过拟合和欠拟合问题
对于过拟合,考虑减少分类特征的数目,对于欠拟合,则投入更多的数据
9.模型融合,并再一次进行提交
解题流程总结如下:
代码实现
代码的实现在原文中写的很详细,一些小的错误少改下就OK了,所以可以参考原文章。
总结
这篇文章中,我觉得最重要的是相关特征的选取过程,其次是模型融合的思路。因为在这组数据中,缺失的属性并不多,因此对于缺失属性的填充操作并不是很多,重点还是放在特种工程上。
在跑过一遍作者的解题流程之后,还是感觉有许多收获的。