刚刚开始接触Kaggle,根据官网的推荐先拿titanic竞赛练练手,先撸一个baseline出来再慢慢优化。
前置准备:pandas,seaborn,jupyter
1. 首先来理解一下数据
首先可以了解到一些基本信息,训练集中旅客有891人,超过一半人住在2、3等舱,平均年龄接近30岁,有婴儿存在等等。那么接下来如何从这些基本信息中抽象出有意义的特征,就是我们接下来的工作。
2. 分析一些离散数据特征
2.1 仓位等级与幸存的关系
可以看出仓位等级越高,获救的可能性越大。
2.2 性别与幸存的关系
可以看到女性的获救概率非常高。
2.3 登船口岸与幸存的关系
貌似在某些口岸登船的人幸存概率更低一些,后续可以考虑和票价或者仓位等级组合起来看。
2.4 特征抽取
基于这3个离散属性,我们进行特征离散化构造稀疏特征向量来看看。
如上图所示,我们把3种属性进行one-hot编码,构造稀疏特征向量用于训练。
3. 训练模型,对测试集进行预测
至此,整个流程已经完成。上传预测文件到Kaggle平台,结果如图所示。
准确率在0.74左右,由于只是一个baseline版本,后续还有很大的优化空间。
4. 后续迭代主要有几点可以改进:
4.1 加入连续类型属性作为特征。
4.2 进行特征组合,增加表达能力。
4.3 加入cross_validation。
4.4 模型特征筛选,去掉表达能力不强的特征(更后期这件事可以由random forest或者gbdt来完成,貌似还有grid_search)。
4.5 更换非线性模型,以应对数据线性不可分的问题。