利用XGboost简单粗暴zillow竞赛25%

Zillow Prize是一个拥有巨额百万美元奖金的比赛。竞赛共有两轮,只有在预赛中进入前100名的参赛选手才有资格参加第二轮比赛,因此我们的目标是进入前100。在这篇文章中,我用XGBOOSt得到Score约0.0645左右的成绩。

一、简介

第一轮预选赛2017年5月24日开始,在预选赛中,你将建立模型用于提高Zestimate的残留误差,帮助Zestimate进一步提高预测的精准度。因此,在这个百万美元的竞赛中,我们需要开发一个用于预测房子未出售价格的模型,对美国110㎡左右的房子的价值进行估计。

二、数据读取和预处理

1.导入依赖包

Pandas 是数据处理的大杀器,结合Numpy可以完成绝大多数的数据预处理任务。

2.读取数据

有三个文件需要读取:train_2016.csv、propertie_2016.csv和sample_submission.csv。利用pandas 的read_csv()将数据读取为dataframe。

文件描述 
Properties_2016.csv:包含2016年房屋特征的所有内容。
Train_2016.csv:2016年1月到2016年12月的训练数据集
Sample_submission.csv:正确提交文件的实例

3.创建训练集

将Properties_2016和Train_2016的数据根据parcelid字段进行组合,得到训练数据集。

4.将数据类型转换为float32

我们将训练集df_train中的float64数据类型的数据转换为分float32,用以节约我们的训练资源,加快模型的训练速度。

三、特征工程

参加了几次kaggle比赛,我比较认同kaggle是以特征工程和调参为主的说法。做特征工程这一步需要我们对数据集进行深入探索,这一步在Kernerls上有很多很优秀的Kernel可以进行参考。

训练集的数据量是比较大的,因此,通过学习大神们的kenerls,可以对数据集有一个比较详细的了解。在特征工程这一步我们主要做的就是特征预处理和特征选择。

第一步:样本选取

logerror是残留误差,通过下图的数据探索我们可以看到主要分布在[-0.4.0.4]这个范围内,因此将超出这个范围的的数据从训练集中删除。

第二步:特征选择

[‘parcelid’,’logerror’, ‘transactiondate’, ‘propertyzoningdesc’,’propertycountylandusecode’]与我们的训练无关,从训练集的参数中删除。
注:数据和特征决定机器学习的上限,而模型和调参是逼近这个上限。特征工程是kaggle竞赛中极为重要的一步,在后期我们需要花更多的时间来做Feature Engeneering。

四、模型选择和调参

在Zillow比赛中,我们的需要预测的是连续型的数值,可以算是一个回归问题。针对回归问题,我们有很多模型可以选择,在zillow竞赛中我选择了最近比较火的XGBOOST模型。

1.XGBOOST简介

XGBoost :eXtreme Gradient Boosting
XGBoost是由 Tianqi Chen(homes.cs.washington.edu)最初开发的实现可扩展,便携,分布式 gradient boosting (GBDT, GBRT or GBM) 算法的一个库,可以下载安装并应用于 C++,Python,R,Julia,Java,Scala,Hadoop,现在有很多协作者共同开发维护。

XGBoost 所应用的算法就是 gradient boosting decision tree,既可以用于分类也可以用于回归问题中。

2.XGBOOST的特点

我选XGBoost最重要的原因就是它的计算速度快,模型表现好。
一般来说,Gradient Boosting 的实现是比较慢的,因为每次都要先构造出一个树并添加到整个模型序列中。而XGBoost训练时可以用所有的CPU内核进行并行化建树,大大加快了训练的速度。同时,XGBoost在预测问题中模型表现非常好,在kaggle比赛中,很多冠军在赛后的分享中都提及使用XGBoost。

3.XGBoost训练和调参

调参这个步骤花了我挺多时间。在进行了简单的特征工程后,我的大部分时间都花在了调参上,XGBoost的调参是比较重要的,过后我会专门写一篇文章来介绍XGBoost调参部分。

这里比较笨的思路就是不断尝试参数。比如max_depth开始设置为一个比较常规的值10,然后下一次设置为8,模型有提高就用6再尝试,否则尝试12。依次对其他参数进行调试。

五、预测并提交Kaggle平台

最后一步就是将我们的训练模型在预测集上进行预测,并提交预测结果到Kaggle平台。

目前的排名在25%,还需要不断的优化来提高成绩。

完整代码我放到了百度云,关注微信公众号:kaggle数据分析 ,后台回复

zillow会有完整的代码打包下载。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值