用机器学习训练了一个热网负荷预测的模型,并和基于人工调校的自动预测法进行了比较
- 2023-03-10 18:40:00
- pjd
- 原创 542
使用机器学习进行训练、预测和评分后发现:很容易将预测的相对误差控制在10%以内,较人工调校的自动预测法效果好一些。
首先进行了文献的调研。
发现有些技术方案和初步 设计的方案类似,当然也有一些方案采用了更为先进的建模技术,做到了在线训练模型,等后续慢慢研究,先用机器学习的方案进行一下初探,看看预测效果。
列出一个特征清单进行数据采集
选择一个供暖季共118天的供暖数据,包括天气信息、动态数据和静态数据等,其中缺了几天,人工补齐。
采集后的数据进行了分析和处理
采用热力图可视化分析数字特征,去掉开通率等完全不相关或相关接近为0的特征,增加上一天实际热值等相关性大的特征。
数据集如下:
第一次预测结果得到的结果如下:
以上的评分直接怀疑人生,不过看了一下相对误差率还是能接受的值,仔细分析发现还有救。
第二次预测
经过分析实际相差比较大的点,发现有些天的数据存在异常,与实际不符,于是删除了最大的几个噪点,结果测试集评分仍然不好。
第三次预测
又进行数据集问题查找发现,周六这天有时上班有时不上班,不上班的实际值都为0,而数据集中没有是否上班的特征,决定去除这些点先试一下,发现评分正常了:
再使用线性回归模型进行交叉验证,评分如下:
我发现虽然评分稳定在0.8以上,但是相对误差的平均值比实始方案差一些。
可以继续采用原来的模型,优化数据集后进行下一些训练。
第四次预测
平均相对误差为9.3%,可以看到预测值和实际值比较接近了。
第五次预测
删除掉手动补齐的点,同步删除依赖这些天数据的样本,评分提高了,平均相对误差也提高到了6%。
生产环境中使用的基于人工调校的自动预测法
截取生产环境中一段相对误差率较小的10条数据(平均相对误差率为10.2),如下图表:
打包上线:
将以上模型打包,用flask或django编制后端服务,利用前端输入请求,从而获得请求结果。也可以定时从数据库获取相关参数, 自动实现预测并存储回数据库。
截取一部分参数的请求界面如下:
提交后获得结果:
至此完成了整个预测在线服务流程的搭建。