Kaggle-Titanic

概述

  很早之前就已经听说过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了,所以可以参考原文章。

总结

  这篇文章中,我觉得最重要的是相关特征的选取过程,其次是模型融合的思路。因为在这组数据中,缺失的属性并不多,因此对于缺失属性的填充操作并不是很多,重点还是放在特种工程上。
  在跑过一遍作者的解题流程之后,还是感觉有许多收获的。