Kaggle项目实战2—Titanic:Machine learning from disaster—排名Top20%

一、项目思路

这是我在kaggle做的第二个项目,之前做一个是Digit Recognition,感兴趣的同学可以看这里。本文涉及到的python环境和需要的库在上一篇文章中已经详细说过了,这里不再赘述。在Digit Recognition由于feature只有一种特征类型,就是int类型的灰度值,所以不需要什么feature engineering。而Titanic项目最关键的部分可能就在于feature engineering方面,它对于最后的精度有着直接的影响。由于不是计算机视觉方面的问题,可以预期神经网络的分类效果估计不是很理想,我们的思路是采用多种机器学习分类器来分别预测,最后将几个分类器的结果ensemble(我采用的是bagging的方法)。

首先有必要描述一下这个项目的数据结构,项目的地址在这里。train.csv中是带有label的数据,这里的label是"Survived"变量(0代表身亡,1代表幸存)。features包括变量:

1、pclassint类型,旅客的社会等级(分3个等级,1代表高级,2代表中级,3代表低级)

2、namestring类型,旅客的姓名

3、sexstring类型,分为“male”和“female”两类

4、ageint类型,旅客的年龄

5、sibspint类型,旅客海外的旁系亲友

6、parchint类型,旅客海外的直系亲友

7、ticketstring,int混合类型,旅客的船票序列号

8、farefloat类型,旅客的船票价格

9、cabinstring,int混合类型,旅客的房号

10、embarkedstring类型,旅客上船的港口(共三个值“C”,“Q”,“S”)

容易看出,由于feature的类型各不相同,经过feature engineering之后的features必定一些适合于成为标称的类型(pclass,sex等),而有些更适合于成为标量类型(age,fare等),所以features会变成标称类型和标量类型的混合类型。由于随机森林是处理标称类型和标量类型混合features表现最好的方法之一,我们考虑用随机森林作为我们的一个基准classifier。

另外我还构建了其余四个分类器,它们分别只看见一部分的features,这样有两个好处:第一、有一些分类器只在某种类型的features上表现良好,所以我们只feed它们那些features。例如GBDT(Gradient Boosting Decision Tree)适合用标量类型的features,因为它对于稀疏的特征分类效果不好,所以只给GBDT标量类型的features或者把标称类型的features转化为标量类型(进一步转化为二值类型)。第二、这样相当于每个分类器只“记住”了一部分的features这样带来的bias可以trade off掉分类器自身的high variance,我们在构建分类器时都尽量多选参数提高variance,最后通过投票的方式ensemble,这种类似bagging的方法把候选的分类器组合起来。

总的来说我构建了五个分类器,它们以及对应接收的训练features为:

1、Random Forest Classifier(随机森林分类器):接收二值和标量类型

2、Gradient Boosting Decision Tree Classifier(梯度提升树分类器):接收标量类型

3、Support Vector Machine Classifier(支持向量机分类器):接收二值类型

</

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值