ML回归性能不佳

数据挖掘 机器学习 Python scikit-学习 回归 监督学习
2021-09-23 21:42:39

我正在试验建筑物的 3 年时间序列电力需求数据 (kW),并尝试从 sci kit 学习回归算法创建回归监督 ML 模型,但我的性能非常差(非常高的均方误差)。我在这里有整个 IPython 笔记本的 GitHub Gist

除了我知道电力咨询行业使用成熟的分析软件(需求预测)之外,我所做的事情并没有太多的智慧(我也没有人可以咨询),而我只是尝试在 Python 中使用自己的实验方法从头开始重新创建。

我正在处理的数据如下所示,都是以 15 分钟的间隔记录的。

            Date_Time    kW
0 2011-03-01 00:15:00 171.36
1 2011-03-01 00:30:00 181.44
2 2011-03-01 00:45:00 175.68
3 2011-03-01 01:00:00 180.00

kW 数据的分布如下图所示,它似乎没有钟形曲线:(这可能是性能不佳的原因吗?)

在此处输入图像描述

编辑滚动平均图

在此处输入图像描述

同样在我的实验中,我添加了额外的 Python Pandas 数据帧来表示时间戳“星期几”、小时、分钟和月份的整数值;从逻辑上讲,我知道电力需求会根据这些变量而波动很大。这些是与 kW 相比的数据下方的一些散点图。(这可能会搞砸一切)例如,下面的第一个散点是一天中的小时,这对于在典型工作日期间电力需求增加的建筑物来说是典型的。异常值很可能是导致高需求的极端天气条件,我在这里没有包含任何天气数据......

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

在 python 中,如果我执行以下操作df.describe

在此处输入图像描述

最终,我希望有人能给我一些提示,说明为什么该模型很糟糕,但可能只是因为没有足够的数据和/或策略......我一直在质疑的另一个人使用聚类无监督学习方法,但这并没有对我有任何意义...

机器学习精通还有一个迷你课程和一本我可以购买的关于时间序列预测的大书。这更像是一种统计方法吗?它是否需要更“正常”的钟形数据分布?

非常感谢任何尝试的提示或前进的途径:)

编辑 GitHub gist 已更新数据的滚动平均值以及 kW 数据的分布柱图

2个回答

我知道您在选择回归模型之前必须进行研究。但我想在这里强调一件事,因为该数据是时间序列一,我们必须在这里更加小心,并使用考虑了移动平均线和其他时间的模型系列因素。此外,时间序列分析的交叉验证也不同。话虽如此,如果您的目标是获得更高的准确性,请为您的时间序列使用 ARIMA 或 SARIMA 等其他模型。

在我看来,您这样做的前提可能存在缺陷。听起来您正在尝试复制电力公司可以生成的一些信息,但他们使用的数据集比您在此处提供的更广泛。反过来,这可能是您的准确性得分如此差的原因。

例如,考虑天气对电力使用的影响。因此,除非您在某个时候与天气数据争论不休,否则您将 (1) 很可能永远无法获得最准确的模型(可能只是“足够”),并且 (2) 很可能永远不会获得与您的电力公司类似的结果可以生成。

所以,我会退后一步,考虑一下您当前的数据点;您很可能只是没有合适的因素来创建您寻求的准确模型。