基于Kaggle入门项目预测Titanic乘客的获救的数据进行的模型探究(三)

一日三省

又是拖沓的一天,今天只是重新训练了xgb模型
之前文章的链接:

基于Kaggle入门项目预测Titanic乘客的获救的数据进行的模型探究(一)
基于Kaggle入门项目预测Titanic乘客的获救的数据进行的模型探究(二)



一、哑变量与One-hot

昨晚本来是立了flag,准备通过哑变量重新对离散变量编码。但是突然反应过来,哑变量和one-hot的关系很近呀,以至于在pd.get_dummies()的这个函数中,只要删除首个变量就是从one-hot变成了哑变量。所以今天也就没有做这个,或者说做了也没有使用。
不过在这个过程中,我出现了一个困惑。sklearn里面有OnehotEncoder, pandas里面有get_dummies()。那这两个的区别是什么?又该怎么样去选择呢?
对于这个问题,我求助了谷哥,在Stack overflow上面有人提出了这个疑惑。而我觉得比较不错的答案如下:
简单的翻译一下
我简单的翻译下:
这两个区别主要在两个方面:

  1. OneHotEncoder除了给变量转码外,它还会储存转码对应的字典,这样就可以再次给新的数据转码。而get_dummies的话,还需要通过调取属性的方式,存储对应关系。相对处理新的数据的话要麻烦一些。
  2. OneHotEncoder可以在接收到新的分类后,自动划分到全是0元素的类别,这样以免在模型上线后遇到新的分类的时候出现报错。

二、重新训练XGB模型

昨天说了要重新训练xgb和lightgbm两个模型。但现实给我了一个大巴掌,我并没有时间重新对lightgbm重新训练,只是重新对xgb进行了训练。
基于xgb的重新训练,我认为其实本质更多的就是对超参数的调优。而对于超参数的调优,避不开的就是网格搜索。我使用的是sklearn.model_selection.GridSearchCV,这个也是常用的方法。
至于其中的各个参数大家可以问问度娘,解释的还都挺清楚的。

class sklearn.model_selection.GridSearchCV(estimator, 
param_grid, scoring=None, fit_params=None, n_jobs=1, 
iid=True, refit=True, cv=None, verbose=0, pre_dispatch=2*n_jobs’, 
error_score=raise, return_train_score=’warn’)

这里我也碰到了一丝丝疑惑的地方,就是scoring的值应该是什么。我之前比较多的是风控项目,在项目中的评价指标也多以ROC_AUC为主。这也导致了我在模型训练后更多的关注这个指标。但是在分类里面还有其他的评价指标,我这里用到是F1_score. 这个也是评价模型的准确率的指标。这是问题就来了,在我们这个题当中应该以哪个指标为主呢?而这两个指标的区别又是什么呢?

AUC与 F1

为此我双问了度娘,度娘给我了一个博客,对于他的答案我还是有一些认可的。链接如下:
深入理解实际场景下 AUC vs F1 的区别——不说废话
博客里面提到了一个观点:

“auc希望训练一个尽量不误报的模型,也就是知识外推的时候倾向保守估计,而f1希望训练一个不放过任何可能的模型,即知识外推的时候倾向激进,这就是这两个指标的核心区别。”

基于这个观点我分别以这两个指标为评价指标进行了网格搜索,结果是:下节更精彩。

三、模型预测

经过了网格搜索,对几个比较重要的参数都进行了调整,中间的过程就不再粘贴代码了,直接说重点,今日模型最终的结果是:

  1. 以F1为评价指标的模型,过拟合比较严重。如果这时直接跑结果提交,得到的分数只有76+。后续手动重新调整了一些参数后,使得过拟合下降。最后分数有了一定的提升,超过了之前的目标,达到了78+。以图为证

  2. 以AUC为评价指标的模型,也存在一些过拟合,但是相对好一些。直接跑结果提交,可以得到77分+。在此基础上手动调整参数,得到最终的分数还是77+在这里插入图片描述

总结

今天主要是在评价指标上的选择出现了比较大的分叉。虽然对比两个结果来看,以f1为评价指标的参数最终优于以auc为评价指标的模型。但这两个的评分相差并没有太大。从结果上我更偏向于f1,但是在一些其他场景下,还是要基于实际情况来选择评价指标。今天的flag只完成了1个,明天的flag应该是要完成其余的:

  • 完成对lightgbm的模型调优
  • 建立rf模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值