该帖主要介绍了一次指数平滑法、二次指数平滑法以及三次指数平滑法。

1 简介

指数平滑法是对单变量数据进行时间序列预测的一种方法,它可以推广到具有系统趋势或季节成分的数据。

建模类似Box-Jenkins ARIMA的建模方式,但其预测是最近的过去观测或滞后的加权线性和。

指数平滑预测法与用过去观测值的加权和进行预测相似,但是模型的过去观测值的权重是指数递减的。

具体地说,过去的观测结果是按几何递减比例加权的:

Forecasts produced using exponential smoothing methods are weighted averages of past observations, with the weights decaying exponentially as the observations get older. In other words, the more recent the observation the higher the associated weight. — Page 171, Forecasting: principles and practice, 2013.

指数平滑和ARIMA有时被统称为ETS模型,指的是对误差、趋势和季节性的建模。

指数平滑预测法主要有三种:

  • 没有系统结构的简单指数平滑,又叫一次指数平滑,这里结构是指趋势和季节
  • 有明确趋势的叫二次指数平滑
  • 有趋势和季节性的叫三次指数平滑

2 一次指数平滑

一次指数平滑(single exponential smoothing, SES),是一种对没有趋势或季节性的单变量时间序列的预测方法。

它需要一个参数,称为 ,也称为平滑因子或平滑系数。

这个参数控制前面历史观测值的权重指数递减速度。常被设置为0到1之间的值。大的值意味着模型更关注最近的观测值,小的值意味着预测时更关注历史观测值。

A value close to 1 indicates fast learning (that is, only the most recent values influence the forecasts), whereas a value close to 0 indicates slow learning (past observations have a large influence on forecasts).

超参:

Alpha:smoothing factor for the level.

python实现

from statsmodels.tsa.holtwinters import SimpleExpSmoothing# prepare datadata = ...# create classmodel = SimpleExpSmoothing(data)# fit modelmodel_fit = model.fit(...)# make predictionyhat = model_fit.predict(...)

3 二次指数平滑

双指数平滑( double exponential smoothing)是指数平滑的扩展,它增加了对单变量时间序列趋势的支持。

参数除了用于控制水平的平滑因子 alpha,还增加了用于控制趋势变化影响的衰减平滑因子 beta 。

该方法支持不同变化方式的趋势:加法和乘法,取决于趋势是线性还是指数的。

  • 加性趋势(additive trend):具有线性趋势的双指数平滑

  • 乘性趋势(multiplicative trend):具有指数趋势的双指数平滑

二次指数平滑通常称为 Holt 线性趋势模型,以开发者 Charles Holt 命名。

对于较大时间步长的预测,趋势可能会不符合实际。因此,随着时间的推移,可能需要抑制这种趋势。

抑制(dampening)意味着随着未来时间的推移将减少趋势的大小直至成为一条直线(没有趋势)。

与趋势建模一样,可用相同原则来抑制趋势,尤其是线性的加性和指数的乘性的抑制效果。抑制系数 Phi 用于控制抑制的速度。

  • 加性抑制(additive dampening):抑制线性趋势

  • 乘性抑制(multiplicative dampening):抑制指数趋势

超参:

Alpha:smoothing factor for the level.

Beta: Smoothing factor for the trend.

Trend Type: Additive or multiplicative.

Dampen Type: Additive or multiplicative.

Phi: Damping coefficient.

python实现

from statsmodels.tsa.holtwinters import ExponentialSmoothing# prepare datadata = ...# create classmodel = ExponentialSmoothing(data, ...)# fit modelmodel_fit = model.fit(...)# make predictionyhat = model_fit.predict(...)

4 三次指数平滑

三次指数平滑是指数平滑的扩展,它为单变量时间序列增加了对季节性的支持。

这种方法有时被称为 Holt-Winters 指数平滑法,以该方法的两位贡献者 Charles Holt and Peter Winters 的名字命名。

除了alpha和beta平滑因子外,还添加了一个新的参数 gamma,该参数控制对季节成分的影响。

与趋势一样,季节性也有加性(线性)或乘性(指数)过程。

  • 加法季节性(additive seasonality):具有线性季节性的三次指数平滑。

  • 乘法季节性(multiplicative seasonality):具有指数季节性的三次指数平滑。

三次指数平滑是指数平滑最先进的变体,通过参数配置,还可以建立双指数平滑模型和单指数平滑模型。

Being an adaptive method, Holt-Winter’s exponential smoothing allows the level, trend and seasonality patterns to change over time.

为了确保正确地对季节性建模,必须指定季节性的时间步长。若该时序是月度数据,而季节周期每年重复,那么周期=12。

超参:

Alpha:smoothing factor for the level.

Beta: Smoothing factor for the trend.

Trend Type: Additive or multiplicative.

Dampen Type: Additive or multiplicative.

Phi: Damping coefficient.

Seasonality Type: Additive or multiplicative.

Period: Time steps in seasonal period.

python实现

同二次指数平滑

5 参数选取

以上所有超参都可手动设置,这种方法适合专家或初学者。

正常会用数值优化的方法通过最小误差来找平滑参数。

a more robust and objective way to obtain values for the unknown parameters included in any exponential smoothing method is to estimate them from the observed data. the unknown parameters and the initial values for any exponential smoothing method can be estimated by minimizing the SSE [sum of the squared errors].

python 二次平滑_时序分析 指数平滑相关推荐

  1. 时间序列分析教程(二):移动平均与指数平滑

    之前介绍了时间序列的基本概念和性质,现在就正式介绍一些处理时间序列的模型方法,第一个是移动平均法. 移动平均法很简单,就是用最近的数据预测未来短时间内的数据.有简单移动平均法,真的很简单,就是用最近的 ...

  2. python构建指数平滑预测模型_python指数平滑

    广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! 由此可以得到最优的平滑系数,这里可以引入线性规划的思想来求得最优解但是:py ...

  3. Holt指数平滑和Holt-Winters指数平滑

    2019独角兽企业重金招聘Python工程师标准>>> Holt指数平滑 可以对水平项和趋势项(斜率)的时序进行拟合,时刻 t 的观测值可表示为 拟合出来的结果 a.平滑参数α(al ...

  4. ctr 平滑_广告计算——平滑CTR

    一.广告计算的基本概念 1.广告的形式 在互联网发展的过程中,广告成为了互联网企业盈利的一个很重要的部分,根据不同的广告形式,互联网广告可以分为: 展示广告(display ads) 赞助商搜索广告( ...

  5. 三次指数平滑算法+java_指数平滑法

    时间序列分解 大量时间序列的观测样本表现出趋势性.季节性和随机性,或者三者中的其一或其二.于是,我们认为每个时间序列,都可以分为三个部分的叠加 其中,T是趋势项,S是季节项,R是随机项. 上述公式表现 ...

  6. python等高线图平滑_用Matplotlib平滑等高线图中的数据

    平滑数据的一个简单方法是使用moving average算法.移动平均的一种简单形式是计算某一位置相邻测量值的平均值.例如,在一维测量序列a[1:N]中,a[N]处的移动平均值可以计算为a[N]=(a ...

  7. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  8. arcgis python 二次开发_我在部署ArcGIS API for Python时踩到的坑

    ArcGIS API for Python相比于其他ESRI产品,还是很年轻.我在部署时踩到了坑,网上也找不到解决方法,很是煞风景,也很打击学习的积极性. 今天回顾一下,做个总结吧.一方面自己备忘,另 ...

  9. python二次拟合_三维数据点的二次曲面拟合

    我想«二次曲面»比«平面»更正确.在 问题是拟合z=ax^2+by^2+cxy+dx+ey+f 到给定的点集P 你需要通过公式来计算剩余距离.在 对于每个3D点,p的残差为 | p|2–ap_0^2+ ...

最新文章

  1. Keras【Deep Learning With Python】LSTM 循环神经网络解决Regressor回归问题
  2. python 仪表盘-python数据可视化:pyecharts
  3. springboot配置内部配置类
  4. Leetcode 209. 长度最小的子数组 解题思路及C++实现
  5. Fedora 10成功安装KDE4.2正式版
  6. 用SSDT方法恢复冒险岛的部分函数
  7. mysql max嵌套select_使用嵌套select子式 解决mysql不能叠加使用如max(sum())的问题
  8. 一加手机虚拟键失灵解决方案
  9. 我必须要吐槽,你们的数据管理都是错的,这才是规划和产出
  10. Spring Cloud Eureka 最简入门示例
  11. 代码雨代码源复制_两步教你打造一个代码雨动态壁纸效果,代码可以设置为名字...
  12. 使用AD域管理您的本地计算机密码
  13. Python爬虫:浅谈【破解某易云音乐加密-JS逆向】
  14. 邮件群发软件使用攻略
  15. Apache Hadoop大数据集群及相关生态组件安装
  16. 【心随意动】20-SIST研一秋季上学期课程总结【补】
  17. 千年古刹南普陀寺义工十年发展已逾6000人
  18. GitHub上最火的Android开源项目整理
  19. LeetCode 712. 两个字符串的最小ASCII删除和
  20. Mac 安装minikube Error: No available formula with the name “minikube“

热门文章

  1. Angular应用初始化APP_INITIALIZER
  2. SAP云平台的trial账号不具备成员管理的功能
  3. SAP ABAP Netweaver服务器的标准登录方式讲解
  4. 利用Java流进行类的整型字段求和的例子
  5. SAP Leonardo Machine Learning处于deprecated状态的API和其替代者
  6. Hybris service layer和SAP CRM WebClient UI架构的横向比较
  7. SAP BRF+ Interpretation模式与Generation模式的区别
  8. CRM中间件里parent not ok的错误消息如何处理
  9. wizard generated application - how is detail page rendered
  10. CRM Order confirmation form布局