🚢泰坦尼克号 - 灾难中的机器学习(进阶版)
🎯目标描述
泰坦尼克号 的沉没是历史上最臭名昭著的沉船事件之一。
1912 年 4 月 15 日,在她的处女航中,被广泛认为 “永不沉没” 的 泰坦尼克号 在与冰山相撞后沉没。不幸的是,船上的每个人都没有足够的救生艇,导致 1502 名乘客和船员中有 2224 人死亡。虽然生存下来有一些运气因素,但似乎某些群体比其他人更有可能生存下来。
在本次挑战赛中,我们要求您构建一个预测模型,使用乘客数据(即姓名、年龄、性别、社会经济阶层等)回答 “什么样的人更有可能生存” 这个问题。
🏳️🌈数据集
数据被分成两组:
- 训练集(train.csv)
- 测试集(test.csv)
训练集 应该用于构建您的机器学习模型。对于训练集,我们为每个乘客提供结果(也称为 “ground truth” )。你的模型将基于乘客的性别和阶级等 ***“特征”***。您还可以使用特征工程来创建新特性。
测试集 应该用于查看模型在未见过的数据上的表现。对于测试集,我们不提供每个乘客的真实情况。你的工作就是预测这些结果。对于测试集中的每个乘客,使用您训练的模型来预测他们是否在泰坦尼克号沉没时幸存下来。
我们还包括 gender_submission.csv 是一组假设所有且只有女性乘客存活的预测,作为提交文件应该是什么样子的示例。
特征 | 定义 | 其他 | 类型 |
---|---|---|---|
PassengerId | ID | \ | 连续型 |
Survived | 是否幸存 | 0 = No, 1 = Yes | 离散型 |
Pclass | 票类 | 1 = 1st (Upper), 2 = 2nd (Middle), 3 = 3rd (Lower) | 离散型 |
Name | 姓名 | \ | \ |
Sex | 性别 | male 男性, female 女性 | 离散型 |
Age | 年龄 | 如果年龄小于1,则为小数 | 连续型 |
SibSp | 兄弟姐妹/配偶人数 | 兄弟姐妹 = 兄弟 + 姐妹 + 继兄弟 + 继姐妹 配偶 = 丈夫 + 妻子(情妇和未婚夫除外) | 离散型 |
Parch | 父母/孩子 | 父母 = 母亲 + 父亲 孩子 = 女儿 + 儿子 + 继女 + 继子 有些孩子只和保姆一起旅行,因此对他们来说parch=0 | 离散型 |
Ticket | 船票号码 | 用于区分不同的乘客 | 连续型 |
Fare | 票价 | 英镑 | 连续型 |
Cabin | 舱室 | 乘客所住的船舱编号 | \ |
Embarked | 登船港口 | C = Cherbourg, Q = Queenstown, S = Southampton | 离散型 |
🚀模型选择与评估
逻辑回归
–> LogisticRegression
决策树
–> DecisionTreeClassifier
随机森林
–> RandomForestClassifier
AdaBoost
–> AdaBoostClassifier
GBDT
–> GradientBoostingClassifier
硬投票与软投票
–> VotingClassifier
堆叠
–> StackingClassifier
✅学习总结
本次使用全数据进行预处理,并将分类数据进行 One-Hot 编码。
进行了 卡方检验 ,找出了权重前十的特征进行训练。
利用 GridSearchCV 网格搜索 选出分数最高的最佳参数,训练提交。
共建立了 7 个模型,分别是:
- LogisticRegression : 逻辑回归
- DecisionTreeClassifier : 决策树
- RandomForestClassifier : 随机森林
- AdaBoostClassifier : 参数权重
- GradientBoostingClassifier : 梯度提升
- VotingClassifier : 投票
- StackingClassifier : 堆叠
目前来看 随机森林 的效果是最好的,分数从 0.76315 --> 0.79186 🔼 ,排名从只用逻辑回归的 12980 --> 1231 ⏫
排名的上升也是我没有想到的,仅仅提升 2.87% ,上升了 11749 名,这可能也代表了我正式入门了机器学习!
但仍旧有一些问题:
- Boosting、Voting、Stacking 的效益竟然没有 决策树 和 随机森林 高,且使用 Boosting 时有十分严重的过拟合问题,按道理它能够有效防止过拟合的。
- 根据两天的不断尝试,调整了各种参数,也怀疑了各种参数,但最终都没有将 score 提升到 0.80 以上(可能是数据预处理需要更加完善)。
- 随机森林 使用特征选择后的数据比特征选择前更好,但理论上讲 随机森林 应该可以随机特征选择的。
想法:
- Cabin 特征即使空缺较多也是可以使用的
- 是否独自乘船?也可以作为特征之一
- 决策树 和 随机森林 可能需要增加剪枝
- 需要增加更多种的模型,以提供更多因素供 集成算法 的提升
总结来看,这些模型能够熟练掌握,但数据处理和模型实际运用上仍需提高!
虽然总结出这么多不足,但实际上这次相对于第一次提升很大了,也算是又上升一个台阶了。
❤️🔥继续加油!( •̀ ω •́ )✧