Prophet 模型自定义回归量:电商销量预测中的天气因素实战
Prophet 模型自定义回归量:电商销量预测中的天气因素实战
啥是 Prophet?
为啥要自定义回归量?
怎么加自定义回归量?
1. 准备数据
2. 构建模型
3. 进行预测
4. 查看结果
如何选择合适的回归量?
如何评估回归量的贡献?
实战案例:天气因素对电商销量的影响
1. 数据准备
2. 模型构建与训练
3. 预测
4. 结果分析
总结
Prophet 模型自定义回归量:电商销量预测中的天气因素实战
大家好,我是你们的“AI掘金者”。今天咱们聊聊 Facebook 开源的时间序列预测神器 Prophet,以及如何用它来搞定电商销量预测,特别是如何把“天气”这个磨人的小妖精给塞进模型里。
啥是 Prophet?
先简单过一下,Prophet 是一个基于加法模型的时间序列预测工具,它特别擅长处理具有季节性和节假日效应的数据。简单来说,它就像一个经验丰富的算命先生,能根据过去的规律,预测未来的走势。对我们这些搞数据分析的,尤其是需要预测销量、用户增长等等的,简直是福音!
为啥要自定义回归量?
Prophet 本身已经很强大了,但有时候,我们还需要考虑一些“特殊情况”。比如说,电商销量,除了受季节、节假日影响,还可能跟天气密切相关。大热天,冰淇淋销量暴涨;下雨天,雨伞销量飙升。这些“特殊情况”,就是我们需要自定义的“回归量”。
想象一下,如果你只告诉 Prophet “历史销量”数据,它可能只会傻傻地预测“明年这个时候,销量跟今年差不多”。但如果你告诉它“今年这个时候特别热,比往年同期高了 5 度”,它就能更聪明地预测“冰淇淋销量可能会比往年高很多”。
怎么加自定义回归量?
别担心,Prophet 加回归量非常简单,就像搭积木一样。我们一步步来:
1. 准备数据
首先,我们需要准备好数据。假设我们要预测某电商平台冰淇淋的销量,我们需要以下数据:
- ds 列: 日期,格式为 YYYY-MM-DD。
- y 列: 冰淇淋销量。
- temp 列: 每日平均气温(这就是我们要加的回归量)。
数据大概长这样:
ds,y,temp 2023-01-01,100,5 2023-01-02,110,6 2023-01-03,120,7 ... 2024-01-01,150,8 2024-01-02,160,9 ...
2. 构建模型
from prophet import Prophet # 创建 Prophet 模型实例 model = Prophet() # 添加回归量 model.add_regressor('temp') # 拟合模型 model.fit(df) # df 就是上面准备好的数据
就这么简单!add_regressor('temp')
这一行,就把“气温”这个回归量加进去了。
3. 进行预测
# 构建未来时间段的数据框 future = model.make_future_dataframe(periods=365) # 预测未来 365 天 # 添加未来时间段的气温数据 future['temp'] = ... # 这里需要你自己填充未来 365 天的气温数据 # 进行预测 forecast = model.predict(future)
forecast
就是预测结果,里面包含了预测值、置信区间等等。
4. 查看结果
# 查看预测结果 print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()) # 绘制预测图 fig1 = model.plot(forecast) # 绘制成分图 fig2 = model.plot_components(forecast)
model.plot_components(forecast)
可以绘制成分图,看看各个因素(季节性、节假日、回归量)对预测结果的贡献。
如何选择合适的回归量?
选回归量,就像选对象,要“合适”才行。一般来说,可以从以下几个方面考虑:
- 相关性: 回归量要跟预测目标有强相关性。比如,气温跟冰淇淋销量相关性很强,但跟电脑销量可能就没啥关系。
- 可获取性: 回归量的数据要容易获取。比如,天气数据很容易获取,但竞争对手的营销策略就很难获取。
- 可预测性: 回归量本身要容易预测。比如,未来几天的天气预报比较准确,但未来几个月的股市走势就很难预测。
如何评估回归量的贡献?
加了回归量,怎么知道它有没有用?我们可以通过以下几种方法评估:
- 对比实验: 分别构建带回归量和不带回归量的模型,对比它们的预测效果。如果带回归量的模型预测更准,说明回归量有用。
- 成分图: 查看
model.plot_components(forecast)
绘制的成分图,看看回归量的贡献有多大。 - 回归系数: Prophet 会计算每个回归量的系数,系数越大,说明回归量的贡献越大。可以通过
model.params
查看回归系数。
实战案例:天气因素对电商销量的影响
现在,我们来一个完整的实战案例,看看如何用 Prophet 预测电商冰淇淋销量,并考虑天气因素。
1. 数据准备
import pandas as pd # 读取数据 df = pd.read_csv('ice_cream_sales.csv') # 假设数据文件名为 ice_cream_sales.csv # 数据预处理 df['ds'] = pd.to_datetime(df['ds']) df = df.rename(columns={'sales': 'y'}) print(df.head())
2. 模型构建与训练
from prophet import Prophet # 创建 Prophet 模型实例 model = Prophet() # 添加回归量 model.add_regressor('temp') # 拟合模型 model.fit(df)
3. 预测
# 构建未来时间段的数据框 future = model.make_future_dataframe(periods=30) # 预测未来 30 天 # 添加未来时间段的气温数据(这里用过去 30 天的平均气温代替) future['temp'] = df['temp'].tail(30).values # 进行预测 forecast = model.predict(future)
4. 结果分析
# 查看预测结果 print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()) # 绘制预测图 fig1 = model.plot(forecast) # 绘制成分图 fig2 = model.plot_components(forecast) # 查看回归系数 print(model.params)
通过观察预测图、成分图和回归系数,我们就可以评估天气因素对冰淇淋销量的影响了。
总结
Prophet 是一个强大的时间序列预测工具,通过自定义回归量,我们可以将各种外部因素纳入模型,提高预测精度。选择合适的回归量,并评估其贡献,是使用 Prophet 的关键。希望这篇文章能帮助你更好地使用 Prophet,成为时间序列预测高手!
如果你觉得这篇文章有用,别忘了点赞、收藏、转发三连哦!