利用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(http://homes.cs.washington.edu/~tqchen)最初开发的实现可扩展,便携,分布式 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会有完整的代码打包下载。
利用XGboost简单粗暴zillow竞赛25%相关推荐
- 11月25日科技资讯|网易回应裁撤生病员工:确实存在简单粗暴不近人情行为
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧.扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Sty ...
- 【DIY】废物利用,最简单粗暴便宜的DIY定时器方法,没有之一
微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 山不在高,有仙则名.水不在深,有龙则灵. 作品不用高端,实用就行. 这次废物利用,做一 ...
- 利用安卓SQLite修改QQ运动步数方法分享 简单粗暴
这个方法简单粗暴,比昨天的安卓用户秒刷QQ运动步数教程+软件下载更简单.亲测百分百成功,根据教程图片的步骤找到文件进行编辑保存即可. 1.自行百度搜索"安卓SQLite汉化版"下载 ...
- 利用XGBoost、Information Value、SHAP寻找“小北极星“指标与分层处理
利用XGBoost.Information Value.SHAP寻找"小北极星"指标与分层处理 前言 "小北极星"指标 Information Value(IV ...
- 谷歌简单粗暴“复制-粘贴”数据增广,刷新COCO目标检测与实例分割新高度
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近日,谷歌.UC伯克利与康奈尔大学的研究人员公布了一篇论文 Sim ...
- 一个简单粗暴的前后端分离方案
项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据 ...
- ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测) 目录 输出结果 ...
- ML之xgboost:利用xgboost算法(sklearn+3Split+调参曲线)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
ML之xgboost:利用xgboost算法(sklearn+3Split+调参曲线)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测) 目录 输出结果 设 ...
- matlab求傅里叶级数展开式_简单粗暴傅里叶级数
简单粗暴傅里叶级数 楠木wnn2000@hust.edu.cn 为什么写本文? 作为笔记. 为什么给文章取这个名字? 前段日子拜读过某pku学霸的<简单粗暴 TensorFlow>.这篇教 ...
最新文章
- 标注工具_语料标注工具(3)
- 【Python】如何学好Python
- ubuntu如何实现双屏显示(转)
- VTK:PolyData之Silhouette
- 数值分箱与one-hot
- 线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数
- linux如何运行多个硬盘,一个硬盘如何装两个Linux
- android so abi适配,Android NDK学习(六): so文件兼容之abiFilters的使用
- web developer tips (65): 快速创建一个挂接SQL表的GridView
- Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.4.4 延迟初始化的bean...
- 多精度数带余除法_算法笔记 (一) 高精度
- JAVA 配置文件 路径_Java配置文件读取和路径设置
- couldn't connect to the device trackpad
- 《C陷阱与缺陷》学习笔记(1):这本书值得看吗?
- python给csv文件添加表头
- 核酸检测系统的潜在性能问题猜想
- [译]关于Android图形系统一些事实真相
- 《大话设计模式 下》
- tushare更新,get_k_data支持分时k线数据,可替代以前的get_hist_data
- [已解决]显示器分屏只能复制无法扩展