用机器学习训练了一个热网负荷预测的模型,并和基于人工调校的自动预测法进行了比较

2023-03-10 18:40:00
pjd
原创 462
摘要:根据热网的天气和历史数据,进行负荷预测

使用机器学习进行训练、预测和评分后发现:很容易将预测的相对误差控制在10%以内,较人工调校的自动预测法效果好一些。

首先进行了文献的调研。

发现有些技术方案和初步 设计的方案类似,当然也有一些方案采用了更为先进的建模技术,做到了在线训练模型,等后续慢慢研究,先用机器学习的方案进行一下初探,看看预测效果。

列出一个特征清单进行数据采集

选择一个供暖季共118天的供暖数据,包括天气信息、动态数据和静态数据等,其中缺了几天,人工补齐。

采集后的数据进行了分析和处理

采用热力图可视化分析数字特征,去掉开通率等完全不相关或相关接近为0的特征,增加上一天实际热值等相关性大的特征。

数据集如下:


第一次预测结果得到的结果如下:


以上的评分直接怀疑人生,不过看了一下相对误差率还是能接受的值,仔细分析发现还有救。

第二次预测

经过分析实际相差比较大的点,发现有些天的数据存在异常,与实际不符,于是删除了最大的几个噪点,结果测试集评分仍然不好。

第三次预测

又进行数据集问题查找发现,周六这天有时上班有时不上班,不上班的实际值都为0,而数据集中没有是否上班的特征,决定去除这些点先试一下,发现评分正常了:

再使用线性回归模型进行交叉验证,评分如下:

我发现虽然评分稳定在0.8以上,但是相对误差的平均值比实始方案差一些。

可以继续采用原来的模型,优化数据集后进行下一些训练。



第四次预测

平均相对误差为9.3%,可以看到预测值和实际值比较接近了。

第五次预测


删除掉手动补齐的点,同步删除依赖这些天数据的样本,评分提高了,平均相对误差也提高到了6%。

生产环境中使用的基于人工调校的自动预测法

截取生产环境中一段相对误差率较小的10条数据(平均相对误差率为10.2),如下图表:


打包上线:

将以上模型打包,用flask或django编制后端服务,利用前端输入请求,从而获得请求结果。也可以定时从数据库获取相关参数, 自动实现预测并存储回数据库。

截取一部分参数的请求界面如下:

提交后获得结果:

至此完成了整个预测在线服务流程的搭建。

经对比发现:

1、基于人工调校的自动预测方法的优点是可以在只有天气预报的情况下立即进行预测,直至参数调整到足够接近到实际值,这些参数可以维持一段时间保持预测的准确度,缺点:随着时间推移,需要人工不断校正相关参数,才能维持好的预测效果,需要有经验的人的持续投入。

2、机器训练的模型比人工调校效率更高,效果更好。通过优化模型、优化数据清洗和分析过程、增加人工干预实现在线训练等方案,都将可能带来更优的预测效果。但是机器学习的缺点是需要至少一个供暖季的实际能耗值和天气等相关信息的数据,数据越准确,样本数据越充分,预测效果越好。