销量预测简单模型 |
您所在的位置:网站首页 › 销售预测常用的方法有哪些 › 销量预测简单模型 |
销量预测简单模型
1.天真预测(naive)2.季节性天真预测(Seasonal naïve)3.简单移动平均(Simple Moving average SMA)4.指数平滑法(Exponential Smoothing,ES)
本文为销量预测第6篇:简单预测模型 第1篇:PySpark与DataFrame简介 第2篇:PySpark时间序列数据统计描述,分布特性与内部特性 第3篇:缺失值填充与异常值处理 第4篇:时间序列特征工程 第5篇:特征选择 第7篇:线性回归与广义线性模型 第8篇:机器学习调参方法 第9篇:销量预测建模中常用的损失函数与模型评估指标 1.天真预测(naive) 实际业务中经常使用的规则模型,也是最见到的时序预测法,所以称之为朴素或者天真预测。最早由统计学家塞尔(S.R. Searle)提出,即,下一期的预测等于本期的需求数量。 y ^ T + h ∣ T = y T \hat{y}_{T+h \mid T}=y_{T} y^T+h∣T=yT 如,周三发生的实际需求(销量)为25个,若h为1,意味着未来一天的预测值,周四为25。 这是一种最单纯、操作最简单、成本最低廉的预测方法。从实际企业补货的逻辑来讲就是卖多少个补多少个,针对某些序列较短,不满足建模需求时,往往强大有效。 2.季节性天真预测(Seasonal naïve)天真预测没有考虑到序列的季节周期性,所以针对满足一个销售周期的数据,序列依然非常短的情况,可使用上一个同周期的已知观测值,直接作为下一期的预测值,比如使用上周四的销售量作为本周四的预测值,这就是季节性Naive(Seasonal naïve method),适用于存在季节性变化的序列数据。 y ^ T + h ∣ T = y T + h − m m : 周 期 长 度 \hat{y}_{T+h \mid T}=y_{T+h-m} \\m:周期长度 y^T+h∣T=yT+h−mm:周期长度 该规则同样适用于月份、季度和其他周期长度的数据。 参考Spark.SQL代码如下: select shop_number, sku_number, sale_qty, dt, lag(sale_qty,7,0) over(partition by shop_number,sku_number order by dt) as naive_predict from app.forecast_dataset3.简单移动平均(Simple Moving average SMA) S M A = p 1 + p 2 + ⋯ + p n n S M A=\frac{p_{1}+p_{2}+\cdots+p_{n}}{n} SMA=np1+p2+⋯+pn 通过对序列的最后k个观测值计算平均作为预测值。 借助numpy的代码示例为: import numpy as np def moving_average(data, window_size,n_step): cumsum_vec = np.cumsum(np.insert(data, 0, 0)) ma_vec = (cumsum_vec[window_size:] - cumsum_vec[:-window_size]) / window_size return ma_vec[-n_step:]4.指数平滑法(Exponential Smoothing,ES) S t = a ⋅ y t + ( 1 − a ) S t − 1 S t : 时 间 t 的 平 滑 值 y t : 时 间 t 的 实 际 值 S t − 1 : t − 1 的 预 测 值 a : 平 滑 常 数 , 范 围 为 [ 0 , 1 ] S_{t}=a \cdot y_{t}+(1-a) S_{t-1}\\ St:时间t的平滑值\\ yt:时间t的实际值\\ St−1:t-1的预测值\\ a:平滑常数,范围为[0,1] St=a⋅yt+(1−a)St−1St:时间t的平滑值yt:时间t的实际值St−1:t−1的预测值a:平滑常数,范围为[0,1] 指数平滑是时序预测中常用的算法之一,适用于中短期预测,相比较简单移动平均不考虑较远的数据,指数平滑则是给与近期数据更大的权重,随着时间向前推移,历史观察值的权重呈指数型下降,因此称之为指数平滑。 α接近于0,那么更远的过去观测值会被赋予更多的权重。如果α接近1,则最近的观测值赋予更多的权重。当然,指数平滑分为一次,二次,三次,以上公式只是一次指数平滑,更多的材料请参照其他的读物。 #Simple Exponential Smoothing def es_model(series,alpha=0.3): """ smooth series data ---------- :param X:input series of pd.DataFrame one columns data :param alpha: smooth :return Simple Exponential Smoothing """ X=series.values s = [X[0]] for i in range(1, len(X)): temp =alpha * X[i] + (1 - alpha) * s[-1] s.append(temp) return s为方便理解,简单指数平滑方法可参考以上代码,更复杂的方式可参考或者调用python统计学statsmodels包。 from statsmodels.tsa.holtwinters import ExponentialSmoothing, SimpleExpSmoothing, Holt
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |