背景
Datawhale 是国内很有名的一个开源学习组织。这个组织将渴望改变的学习者以及一群有能力有想法的青年人集结在一起,营造出一种互促高效的学习环境,一起为开源学习付出努力。
Datawhale 近期将推出三门课程的组队学习。我将第三门 数据竞赛(房价预测) 的任务发布出来。如果你愿意跟我们一起来学习这门课程,请留意我们近期公布的 “Datawhale第八期组队学习计划”。
“2019未来杯高校AI挑战赛 > 城市-房产租金预测”
赛题说明
线上比赛要求参赛选手根据给定的数据集,建立模型,预测房屋租金。
数据集中的数据类别包括租赁房源、小区、二手房、配套、新房、土地、人口、客户、真实租金等。
平台提供的数据包括训练集、预测试集(Test A)、正式测试集(Test B),详见数据集说明。
参赛选手需要将预测的结果按照测试集ID顺序输出,以便平台对提交模型的结果进行验证。每天每个参赛者最多可以提交2次。
线上赛数据发放与结果提交
训练数据Train_data和预测试集Test A将在赛事开始时开放,Train_data供参赛选手训练模型;预测试集Test A只供参赛选手熟悉提交流程,Test A的预测结果不计入正式成绩。
正式测试数据Test B在赛事规定的时间开放,仅供模型验证使用,禁止调整测试数据Test B的顺序及任何其他形式的修改。参赛选手需要在赛事结束前提交模型、代码以及预测结果。平台将及时更新结果排名,取最好成绩作为客观成绩,每人每天有2次提交机会。
比赛要求
- 赛选手可以根据模型需求,筛选适当的数据维度。
- 参赛选手可以根据模型需求,自行清洗训练数据。
- 不得使用提供的数据集之外的数据训练模型。
- 不得将自行手工标注的结果运用于训练和测试。
- 参赛选手需要同时提交说明文档、预测结果、训练和预测代码、模型(参数集),详见结果提交要求。
- 参赛选手所提交程序应可在Linux/windows环境顺利运行。建议(不强制)使用Python 2.7或Python3.6作为首选编程环境,使用Anaconda 3 搭建软件环境。不限制第三方软件包使用,但须获得合法授权和软件拷贝,以确保主办方可以复现程序运行过程。
- 参赛选手的提交作品需要可完整复现训练和预测过程,主办方不会做任何代码修改,如无法复现的,视作无效提交。
复赛晋级与综合评审
根据模型有效提交的得分,前10名选手可以晋级复赛。晋级复赛的选手需要通过PPT展示进行线下答辩,PPT展示主要包括数据清洗规则、模型创新、算法实现、结果分析等。
有关这次比赛更多的信息参见:
https://2019ai.futurelab.tv/contest_detail/3#contest_des
学习任务
Task01:赛题分析(2天)
https://github.com/datawhalechina/team-learning/blob/master/数据竞赛(房租预测)/1_赛题分析.ipynb
每一步都要认真完成,附上代码,最终效果截图
认识数据
- 了解比赛的背景
- 分类问题还是回归问题
- 熟悉比赛的评分函数
对比赛数据做EDA
- 缺失值分析
- 特征值分析
- 是否有单调特征列(单调的特征列很大可能是时间)
- 特征nunique分布
- 统计特征值出现频次大于100的特征
- Label分布
- 不同的特征值的样本的label的分布
Task02:数据清洗(2天)
https://github.com/datawhalechina/team-learning/blob/master/数据竞赛(房租预测)/2_数据清洗.ipynb
每一步都要认真完成,附上代码,最终效果截图
缺失值分析及处理
- 缺失值出现的原因分析
- 采取合适的方式对缺失值进行填充
异常值分析及处理
- 根据测试集数据的分布处理训练集的数据分布
- 使用合适的方法找出异常值
- 对异常值进行处理
深度清洗
- 分析每一个communityName、city、region、plate的数据分布并对其进行数据清洗
Task03:特征工程&特征选择(2天)
https://github.com/datawhalechina/team-learning/blob/master/数据竞赛(房租预测)/3_特征工程.ipynb
使用3种以上特征选择的方法,附上代码,最终效果截图
特征工程
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。so,想要获得一个比较好的分数,特征工程是十分重要的。那么数据清洗之后,特征工程该如何下手呢?由于不同的业务特征工程千差万别,在这里,只给一些思路,一些具体的特征工程方法,大家自己摸索。
- 房间总数
- 根据房型信息抽取出更细的信息,然后可以组合
- 每平方均价
- 根据租房信息可以求得每平方的均价
- 根据小区信息groupby
- 同一个小区的租房信息相差不大,可以根据小区
- 聚类特征
- 使用sklearn.mixture.GaussianMixture做聚类特征
- Word2vec特征
- 将类别特征使用w2v构建特征(思路:将每一个样本的类别特征够造成一个句子,然后使用word2vec提取特征之间的相关关系)
- OneHotEncoder、labelencoder
- 过大量级值取log平滑(针对线性模型有效)
特征选择
- Filter
- 相关系数法
- 卡方检验
- Wrapper
- 递归特征消除法(RFE)
- Embedded
- 基于惩罚项的特征选择法
- 基于树模型的特征选择法
- baseline
- 任选一个模型套用,得到baseline。对比任务二使用的模型结果的得分情况。
Task04:模型选择&模型调优(2天)
https://github.com/datawhalechina/team-learning/blob/master/数据竞赛(房租预测)/4_模型选择.ipynb
每一步都要认真完成,附上代码,最终效果截图
模型选择
如果你不熟悉各个算法模型的适用数据,那么就去尝试吧!然后选取效果最好的模型,当然这个是基于你已经做好一套特征工程之后,比赛中常用的模型有GBDT,XGB,LGB,CatBoost等等。
选取两个模型,学习Sklearn包相关参数。
模型调优
使用网格搜索进行模型调参,并记录每个模型的最优参数
结果对比
任选一个模型套用,得到 baseline 对比任务三使用的模型结果的得分情况。
Task05:模型融合(3天)
https://github.com/datawhalechina/team-learning/blob/master/数据竞赛(房租预测)/5_模型融合.ipynb
任选三个模型融合的方法进行融合。附上代码,最终效果截图
模型融合
尝试多种模型融合的方案
- stacking
- 简单加权融合
- blending
- boosting
- bagging
- 将多个模型结果再放入模型中预测
- ……以及你能想到和借鉴的模型融合方法
结果对比
对比任务四使用的模型结果的得分情况。
Task06:比赛整理(1天)
https://github.com/datawhalechina/team-learning/blob/master/数据竞赛(房租预测)/6_竞赛整理.ipynb
以赛方最后给的答辩模板为主线整理比赛思路,模拟比赛答辩环节,进行比赛整理。
Part1:参赛队成员简介
这个由于是模拟比赛所以这个部分可以不写哦
Part2:参赛作品概述
Part3:关键技术阐述
数据清洗、特征工程、模型、模型融合,并强调对比赛提分最有帮助的部分
Part4:探索与创新
写明做的与众不同的创新点
Part5:实施与优化过程
在过程中尝试过的方法都可以提及并总结
Part6:其它
有其他需要补充的可以写在这个部分,因为比赛是和企业合作,并具有实际意义的比赛,所以强调你的代码模型的实际意义,商业价值都会在答辩环节有帮助哦。