Skip to content

Latest commit

 

History

History
151 lines (80 loc) · 8.95 KB

sales-forecasting-using-prophet.md

File metadata and controls

151 lines (80 loc) · 8.95 KB

使用 Facebook 的 Prophet 进行销售预测

原文:www.kdnuggets.com/2018/11/sales-forecasting-using-prophet.html

c 评论

销售预测是许多以销售为驱动的组织中最常见的任务之一。这项活动使组织能够以一定的信心充分规划未来。在本教程中,我们将使用 Prophet,这是 Facebook 开发的一个包,展示如何实现这一点。此包在 PythonR 中均可用。我们假设读者对在 Python 中处理 时间序列 数据有基本的理解。

攻击计划

  1. 介绍与安装

  2. 模型拟合

  3. 未来预测

  4. 获取预测

  5. 绘制预测

  6. 绘制预测组件

  7. 交叉验证

  8. 获取性能指标

  9. 可视化性能指标

  10. 结论

介绍与安装

有很多开源预测工具,但没有一种能够解决所有预测问题。Prophet 最适合处理几个月的每小时和每周数据。使用 Prophet 时,年度数据是最理想的。根据 Facebook 研究:

从根本上说,Prophet 程序是一个 加性回归模型,具有四个主要组件:

1. 分段线性或逻辑增长曲线趋势。Prophet 通过从数据中选择变化点来自动检测趋势变化。

2. 使用 傅里叶级数 建模的年度季节性组件。

3. 使用虚拟变量的每周季节性组件。

4. 用户提供的重要节假日列表。

可以使用 pip 在 Python 中安装 Prophet,如下所示。Prophet 依赖于名为 pystan. 的 Python 模块。我们在安装 Prophet 时,此模块将自动安装。

我们在本教程中使用的数据集可以在这里下载。一旦下载数据集,请确保删除文件末尾的一些不必要的行,因为它们可能会干扰分析。对于这个单变量分析Prophet 期望数据集包含两列,分别命名为dsyds是日期列,而y是我们进行预测的列。

让我们开始导入 Pandas 进行数据处理,以及 Prophet 进行预测。接下来,我们加载数据集并查看其头部。

模型拟合

由于我们之前使用过Scikit-learn,因此使用 Prophet 对我们来说将是一件轻而易举的事。这是因为 Prophet 和 Scikit-learn 的 API 实现非常相似,如下所示。我们首先创建一个 Prophet 类的实例,然后将其拟合到我们的数据集上。

进行未来预测

下一步是准备我们的模型进行未来预测。这可以通过使用Prophet.make_future_dataframe方法并传入我们希望预测的天数来实现。我们使用periods属性来指定这个值。这还包括历史日期。我们将使用这些历史日期将预测值与ds列中的实际值进行比较。

获取预测结果

我们使用predict方法来进行未来的预测。这将生成一个包含yhat列的数据框,该列将包含预测结果。

如果我们查看预测数据框的head,会发现它有很多列。然而,我们主要关注ds, yhat, yhat_loweryhat_upper。yhat*是我们的预测值,yhat_lower是我们预测的下限,yhat_upper是我们预测的上限。

让我们继续查看预测数据框的尾部和头部。

绘制预测结果

Prophet 具有一个内置功能,允许我们绘制刚刚生成的预测结果。这可以通过使用*mode.plot()*方法并将我们的预测结果作为参数传递来实现。图中的蓝线表示预测值,而黑点表示我们数据集中的数据。

绘制预测组件

plot_components 方法绘制了时间序列数据的趋势、年度和每周季节性。

交叉验证

接下来,让我们使用历史数据测量预测误差。我们将通过将预测值与实际值进行比较来完成此操作。为了执行此操作,我们选择数据历史中的截止点,并用该截止点之前的数据拟合模型。然后,我们将实际值与预测值进行比较。交叉验证方法允许我们在 Prophet 中执行此操作。此方法使用以下参数,如下所述:

  1. 预测范围预测范围

  2. 初始初始训练期的大小

  3. 周期截止日期之间的间隔

交叉验证方法的输出是一个数据框,其中包含y真实值和yhat预测值。我们将使用此数据框来计算预测误差。

获取性能指标

我们使用performance_metrics工具计算均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、平均绝对百分比误差(MAPE)以及yhat_loweryhat_upper估计值的覆盖率。

可视化性能指标

性能指标可以使用plot_cross_validation_metric工具进行可视化。让我们下面可视化 RMSE。

结论

正如我们所见,Prophet 在时间序列预测中非常强大和有效。然而,正如我们之前提到的,还有一些其他预测工具。工具的选择是基于数据集的性质逐案决定的。人们可以始终比较这些工具,并使用那些能提供最佳预测且误差最小的工具。这些方法包括ARIMAHolt-Winters 方法Holt 的线性趋势简单指数平滑移动平均等。您可以从官方文档或阅读Prophet 论文了解更多关于 Prophet 的信息。

简介:Derrick Mwiti 是一名数据分析师、作家和导师。他致力于在每个任务中取得优异成果,并且是 Lapid Leaders Africa 的导师。

相关内容:

  • 使用 Keras 长短期记忆(LSTM)模型预测股票价格

  • Keras 深度学习入门

  • PyTorch 深度学习入门


我们的前三个课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业道路。

2. Google 数据分析专业证书 - 提升您的数据分析能力

3. Google IT 支持专业证书 - 支持您组织的 IT 工作


相关主题