提交结果的RMSE:14.916
排名:72
目录
1. 赛题分析与理解
2.数据分析
2.1 缺失值检查
3.使用的策略及其对应的RMSE
3.1 数据等频分箱
3.2 多维度变换
3.3基于模型的特征选择
3.4dbscan选出异常值
3.5使用stacking
4.总结
1. 赛题分析与理解
预测共享自行车一个共享点应该放多少个自行车数量合适是一个机器学习中的回归问题,赛题指定的评价指标为RMSE,该比赛提供的数据集规模不大,且无缺失值。对数据进行探讨分析,利用xgboost算法,对每一步的分析评价其结果,分析过程中将下载的数据集按照(8:2)划分测试集与验证集。
比赛链接 : http://sofasofa.io/competition.php?id=1
2. 数据分析
2.1缺失值检查
该数据集无缺失值
3.使用的策略及其对应的RMSE
3.1 数据等频分箱
hour特征
由数据的分布观察到,当时间为8点左右的时候,单车使用的次数较多,也许是日常人们上班的时候,另一个高峰是在18点左右,应该与当地的人们下班时间的高峰有关,于是猜想将数据做一个等距分箱,使得每一个箱子是一个类别变量,达到一个聚类的目的。
原始不做变化在测试集的RMSE : 18.815
数据等距风箱在测试集的RMSE : 18.815
3.2 多维度变换
将数据做一个多维变化,即特征之间的交互项和特征的升幂来作为新的特征,使得数据维度增加增加,这里使用sklearn库的PolynomialFeatures方法,设置参数为3,即特征之间最多三项进行交互相乘
原始的特征维度为:7
经过Poly后的特征维度为 : 119
将升维后的数据再进行训练,在测试集上的RMSE为17.436,相比不做任何处理降低了1.379
3.3 基于模型的特征选择
RandomForest模型中除了可以进行回归和分类,其中可以审视每一个特征的重要程度,其工作原理是将每一个特征进行舍弃,对比前后模型损失增加的程度来衡量每一个特征的重要程度。
基于此,使用随机森林模型对进行了多项式处理的数据做一个特征选择赛选掉一半的特征
最终得到的RMSE为:17.619
对比进行了多项式的处理,损失稍微有所上升
3.4dbscan选出异常值
DBSCAN除了可以做聚类之外,其在聚类的过程中能识别离群值。将数据离群值筛选出来,这里使用了DBSNCAN将离群值扔掉,不放进训练集中训练。由于数据维度太高,直接使用密度聚类调参困难,因此先对数据进行一个pca降维,把原始数据7维降到2维,使得数据分布集中。
pca保留的数据数据的内容:0.988
经过dbscan后选出的离群值有115个
将离群值筛选后得到的RMSE:19.146
损失上升了0.33
3.5 使用stacking
stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。
这里使用了四个基模型,分别为岭模型,支持向量机回归模型,决策树模型,xgboost模型,最后经过梯度提升树来组合这四个模型
使用stacking后的得到的RMSE为16.251
损失下降了 2.564
进一步调参后得到的RMSE为:14.506
使用该stacking 方案提交上去的得分为 14.916
4.总结
在该比赛用使用了五种方法进行探讨,其中有作用的两种方法为将数据进行多项式升维再训练,模型的损失下降了1.379,另一种是使用stacking集成模型,使得模型的损失下降2.564,在经过调参过得到的RMSE为14.506,用该方法提交结果上去网站RMSE为14.916,排名72
代码链接:码云