【阿里云-天池数据分析竞赛】工业蒸汽量预测项目总结
参赛情况 | |
---|---|
参赛时间 | 2020-4-1 |
结果提交时间 | 2020-4-6 |
最终结果(均方误差MSE) | 0.1153 |
竞赛排名 | 前3% |
1. 项目概述
- 项目背景:影响火力发电的核心因素是锅炉所产生的蒸汽量。锅炉产生的蒸汽量受到燃料供给量、供水量、锅炉的床温、锅炉的压力等诸多因素的影响。
- 项目要求:利用锅炉传感器采集到的锅炉工况数据,对锅炉所产生的蒸汽量进行预测。
- 项目数据:数据为锅炉传感器采集的关于锅炉工况的脱敏数据。数据分成训练数据(train.txt)和测试数据(test.txt),其中字段”V0”-“V37”,这38个字段是特征变量,”target”字段是目标变量。
- 评估指标:本项目结果评估指标为均方误差(Mean Squared Error, MSE)。
2. 项目思路
该项目的基本思路如下图所示。项目所有流程均基于Python实现。
3. 问题定义
该项目要求利用给定的数据(共包括38个特征,数值型)来对蒸汽量进行预测,因此考虑采用回归方法进行预测。同时,为了提高预测的准确率(尽量降低MSE),考虑基于集成学习思想的多个回归模型集成方法。
4. 数据观察
- 利用Python第三方库pandas_profiling对训练集生成描述性统计报告。发现该数据均为数值型数据,无缺失值。
- 合并训练集与测试集,对数据在每个特征上的分布进行可视化,观察训练集与测试集在每个特征上的分布情况。通过观察发现:V5、V9、V11、V17、V22、V28特征上训练集与测试集分布差异较大,如下图所示。
- 通过数据分布可视化,除了发现存在训练集与测试集分布不均的情况外,还发现数据在许多特征上存在偏态性。
5. 数据预处理
- 异常值处理:给定数据经过脱敏,无法了解每个特征的具体含义,所以异常值的界定较为模糊,所以在项目中没有进行异常值处理。经过多次实验发现该项目异常值处理与否对最终结果影响不大。
- 缺失值处理:经过数据观察,该脱敏数据数据完整,不存在缺失值。
- 数据偏态处理:通过观察每个特征的数据分布,对右偏数据采用对数化处理;对左偏数据采用指数化处理。
6. 特征工程
- 通过比较训练集与测试集在每个特征上的分布,删除训练集与测试集分布差异较大的特征:V5、V9、V11、V17、V22、V28。
- 对特征进行方差分析,判断特征所包含的信息量。指定一个方差阈值,删除低于该阈值的特征。
- 单变量选择:对于该回归问题,基于方差分析中的f_regression,根据相关性由大到小对特征进行排序,选择前18个特征。
7. 多模型训练
对于该回归问题,本项目选择的模型有:
模型名称 |
---|
以linear为核函数的支持向量回归机(SVR) |
线性回归(Linear Regression)模型 |
Lasso回归模型 |
ElasticNet回归模型 |
岭回归模型1(以polynominal为核函数) |
岭回归模型2(以linear为核函数) |
XGBregreressor模型 |
LGBMRegressor模型 |
深度学习KreasRegressor模型 |
通过K折交叉验证计算上述模型的MSE的均值和标准差。
8. 集成学习
对训练好的多模型进行简单的集成融合,生成最终的模型Average_model
9. 预测
使用Average_model对测试集进行蒸汽量预测,得到最终结果:
最终均方误差 |
---|
0.1153 |