最近不少朋友跟我说,想参加一些机器学习的比赛,不仅可以锻炼自身算法能力,而且在以后找工作的时候成为简历上的亮点。那么新手该如何入门机器学习竞赛呢?
给大家介绍几个常见的比赛平台:kaggle、天池、腾讯广告算法大赛。这些平台提供的竞赛题目基本来自真实业务,采用脱敏后的数据集,需要你设计算法来解决实际问题。如果你觉得单独学习书本上的理论知识枯燥的话,可以在竞赛中找到乐趣,每天提交代码,刷新排行榜成绩,更能将理论学以致用,融会贯通。
下面就带领大家看一下机器学习实战案例——二手车价格预测
主要分为以下几步:数据探查、清洗处理、统计分析、特征工程、模型训练和模型评估
相关数据下载:https://tianchi.aliyun.com/competition/entrance/231784/information
数据探查
- 读取数据
- 数据信息
- 空值查看
- 删除空值
df.dropna(inplace=True)
清洗处理
- 字段提取数字
删除空格后面的字符串
正则表达式提取字段中最大值
通过这样的方法,数据就算清洗完成了
统计分析
- 删除name字段
- object类统计
- float类统计
- 相关性矩阵
可以看出销售价格(selling_price)和最大马力(max_power)强相关,其次是引擎容积(engine)、年份(year)
特征工程
- 类别字段one-hot
- 数值字段标准化
- 构建x和y
模型训练
- 数据集划分
- 随机森林
模型评估
之前训练的随机森林模型与LR对比
- 训练线性回归模型
随后,可以选择将模型存储为dump文件,使用flask搭建一个简单的页面,就能通过在线的方式使用该模型,并返回预测结果了。
最终实现效果见下图,通过传入的参数,返回预估结果。
这里实现的只是最基础的模型,如果想让二手车交易价格预测更准确,还可以考虑以下提分关键:
理论分析:特征差异 + 样本差异 + 模型差异
样本扰动 不同特征组 输出转换 参数调整 loss函数选择
训练过程融合:Bagging + Boosting
训练结果融合:投票法 + 平均法 + Stacking
此外一些竞赛技巧,可以从《机器学习算法竞赛实战》中获取,例如精细化特征工程,了解常见的特征构建方式,对数据字段进行分类然后细致的特征提取;多样化模型融合,构建具有差异性的模型进行融合,降低预测结果的方差,使得最终结果更加稳定。