ITPub博客

首页 > 人工智能 > 机器学习 > 使用Facebook的Prophet进行销售预测 - KDnuggets

使用Facebook的Prophet进行销售预测 - KDnuggets

机器学习 作者:ITPUB社群 时间:1970-01-01 08:33:46 0 删除 编辑

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

攻克计划

  • 简介与安装

  • 模型拟合

  • 进行未来预测

  • 获取预测结果

  • 绘制预测图

  • 绘制预测组件图

  • 交叉验证

  • 获取性能指标

  • 可视化性能指标

  • 结论

简介与安装

有非常多的开源预测工具,然而这些工具都无法适合解决所有预测问题。Prophet 最适合处理数个月的每小时和每周数据。使用 Prophet 时,年度数据最为首选。根据 Facebook Research:

其核心是,Prophet 过程是一个加法回归模型,包含四个主要组件:1. 分段线性或逻辑增长曲线趋势。Prophet 通过从数据中选择变点来自动检测趋势变化。2. 使用傅里叶级数建模的年度季节性组件。3. 使用虚拟变量的每周季节性组件。4. 用户提供的重要节假日列表。

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

我们为本教程使用的数据集可在此处获取。下载数据集后,请确保删除文件末尾的一些不必要行,因为它们可能会干扰分析。对于这种单变量分析,Prophet 期望数据集有两列,分别命名为 ds 和 y。ds 是日期列,而 y 是我们要预测的列。

让我们开始吧,导入 Pandas 用于数据操作,导入 Prophet 用于预测。接下来我们加载数据集并检查其头部。

模型拟合

既然我们之前已经使用过 Scikit-learn,那么使用 Prophet 对我们来说将是小菜一碟。这是因为 Prophet 和 Scikit-learn 的 API(应用程序编程接口) 实现非常相似,如下所示。我们首先创建一个 Prophet 类的实例,然后将其拟合到我们的数据集。

进行未来预测

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

获取预测结果

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

如果我们检查预测数据框的头部,我们会注意到它有很多列。然而,我们主要关注 ds、yhat、yhat_lower 和 yhat_upper。yhat 是我们的预测值,yhat_lower 是我们预测的下界,yhat_upper 是我们预测的上界。

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

绘制预测图

Prophet 有一个内置功能,使我们能够绘制我们刚刚生成的预测图。这通过使用 mode.plot() 并传入我们的预测结果作为参数来实现。图中的蓝线代表预测值,而黑点代表我们数据集中的数据。

绘制预测组件图

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

交叉验证

接下来,让我们使用历史数据来衡量预测误差。我们将通过比较预测值与实际值来实现这一点。为了执行此操作,我们在数据历史中选择切分点,并使用截至该切分点的数据拟合模型。之后,我们将实际值与预测值进行比较。cross_validation 方法允许我们在 Prophet 中执行此操作。该方法接受以下参数,解释如下:

  • horizon 预测范围

  • initial 初始训练期的大小

  • period 切分日期之间的间隔

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

获取性能指标

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

可视化性能指标

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

结论

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



转载声明:本文为转载整理,原文版权归原作者及原站点所有。

原文来源:KDnuggets

原创地址:https://www.kdnuggets.com/2018/11/sales-forecasting-using-prophet.html#comment-184075

原文作者:https://www.facebook.com/kdnuggets;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-11-21

  • 博文量
    1122
  • 访问量
    547427