Facebook Prophet2025年3月17日 | 阅读 7 分钟 时间序列预测是许多行业(包括银行、零售、医疗保健等)中决策的重要组成部分。准确预测未来的趋势和模式可以帮助公司优化库存管理、预测需求、有效分配资源并做出明智的战略决策。然而,传统的预测方法通常需要领域专业知识、手动参数调整和复杂的建模过程,这使得非专家难以使用。 为了解决这些问题,Facebook 推出了 Prophet,这是一个开源的预测工具,它提供了一个简单而强大的框架,供分析师、数据科学家和领域专家使用,从而实现了时间序列预测的民主化。 Facebook Prophet 旨在简化时间序列预测的过程,自动化许多传统预测方法所需的手动任务。它基于灵活性、简单性和可伸缩性的理念,让用户能够专注于分析结果,而不是处理复杂的建模方法。 现在,为了更好地理解 Facebook Prophet,我们将使用它来预测每小时的能源消耗。 代码 导入库数据我们将使用 PJM 的每小时电力消耗统计数据。能源消耗具有一些独特的特征。观察 Prophet 如何捕捉它们将会很有趣。 从 2002 年到 2018 年覆盖整个东部地区的 PJM East 提取数据。 输出 ![]() EDA(探索性数据分析)我们将创建几个时间序列特征,以检查趋势如何根据星期几、小时、一年中的时间等而变化。 输出 ![]() 绘制特征图
输出 ![]() ![]() 分割数据集为了将其用作验证集,我们删除了 2015 年之后的数据。我们将使用先前的数据进行训练。 输出 ![]() Facebook 的 Prophet 模型Prophet 模型期望数据集以特定的方式命名。在将数据馈送到模型之前,我们将重命名我们的数据框列。 输出 ![]() 输出 ![]() 输出 ![]() 输出 ![]() 比较输出 ![]() 查看预测的第一个月 输出 ![]() 一周的预测输出 ![]() 误差指标我们的 RMSE 误差为 43761675。 我们的 MAE 误差为 5181.78。 我们的 MAPE 不准确率为 16.5%。 与 XGBoost 模型相比,我们的误差要低得多(MAPE 为 8.9%)。 输出 ![]() 输出 ![]() 输出 ![]() 添加节假日接下来,我们将检查添加节假日标记是否能提高模型的准确性。Prophet 有一个节假日效应参数,可以在训练模型之前传递给模型。 我们将使用内置的 pandas USFederalHolidayCalendar 来获取节假日列表。 输出 ![]() 添加节假日进行预测绘制节假日效应图输出 ![]() ![]() 添加节假日后的误差指标令人惊讶的是,添加节假日后误差反而变差了。 输出 ![]() 输出 ![]() 仅比较节假日日期的模型让我们绘制有和没有独立日的预测模型。对于这个特定的节假日,带节假日的模型似乎更符合实际。 输出 ![]() 输出 ![]() 比较独立日的误差这一天的误差得到了解决。 输出 ![]() 输出 ![]() 所有节假日的误差节假日误差增加了!这令人惊讶。 输出 ![]() 输出 ![]() 按节假日识别误差该模型展示了不同的节假日如何产生不同的响应。如果我们单独识别节假日而不是将它们全部归为“USFederalHolidays”,模型可能会表现更好。 输出 ![]() ![]() 绘制每个预测的误差图我们可以看到,我们的两个模型都能有效地泛化,但在高峰需求时段会遇到困难。 它似乎低估了许多天。 输出 ![]() 数据清理数据清理是预测过程中的关键部分。如果传入的数据包含垃圾值,预测将使用它们来进行预测,这可能会导致严重问题。 我们在训练数据中注意到,有一些测量值较低的糟糕测量值。这些是导致低估的原因吗?让我们尝试删除这些错误数据。 此图以红色突出显示了糟糕的数据。 输出 ![]() 输出 ![]() 2012 年 10 月 29 日至 30 日,飓风桑迪袭击了美国东部,造成了严重的风暴和沿海洪水,导致约 800 万人断电。这场风暴以一级飓风的强度在新泽西州大西洋城附近登陆,最终导致新泽西州(270 万)、纽约(220 万)、宾夕法尼亚州(120 万)、康涅狄格州(62 万)、马萨诸塞州(40 万)、马里兰州(29 万)、西弗吉尼亚州(26.8 万)、俄亥俄州(25 万)和新罕布什尔州(21 万)的数不清的家庭和企业断电。弗吉尼亚州、缅因州、罗德岛州、佛蒙特州和哥伦比亚特区等许多其他州也记录到了停电。 输出 ![]() 清理后,与初始模型相比,分数有了小幅提高。更多的数据清理以及节假日可能会带来更好的结果。试试看! 输出 ![]() 输出 ![]() 下一主题了解机器学习中的优化算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。