阿里云-天池数据分析竞赛:工业蒸汽量预测官网链接

参赛情况

参赛时间

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实现。

工业蒸汽量数据集分别运用LinearRegression逐步回归LASSO回归SGDRegressor 工业蒸汽量预测摘要_MSE

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