231 lines
7.4 KiB
Markdown
231 lines
7.4 KiB
Markdown
# 小论文
|
||
|
||
1.背景意义这边需要改。
|
||
|
||
2.卡尔曼滤波这边,Q、R不明确 / 真实若干时刻的测量值可以是真实值;但后面在线预测的时候仍然传的是真实值,事实上无法获取=》 考虑用三次指数平滑,对精确重构出来的矩阵谱分解,得到的特征值作为'真实值',代入指数平滑算法中进行在线更新,执行单步计算。
|
||
|
||
4.这块有问题,没提高秩性,没说除了ER模型外的移动模型如RWP
|
||
|
||

|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
## 指数平滑法
|
||
|
||
**指数平滑法(Single Exponential Smoothing)**
|
||
|
||
指数平滑法是一种对时间序列进行平滑和短期预测的简单方法。它假设近期的数据比更久之前的数据具有更大权重,并用一个平滑常数 $\alpha$($0<\alpha\leq1$)来控制“记忆”长度。
|
||
|
||
- **平滑方程:**
|
||
$$
|
||
S_t = \alpha\,x_t + (1-\alpha)\,S_{t-1}
|
||
$$
|
||
|
||
- $x_t$:时刻 $t$ 的实际值
|
||
- $S_t$:时刻 $t$ 的平滑值(也可作为对 $x_{t+1}$ 的预测)
|
||
- $S_1$ 的初始值一般取 $x_1$
|
||
|
||
- **举例:**
|
||
假设一产品过去 5 期的销量为 $[100,\;105,\;102,\;108,\;110]$,取 $\alpha=0.3$,初始平滑值取 $S_1=x_1=100$:
|
||
|
||
1. $S_2=0.3\times105+0.7\times100=101.5$
|
||
2. $S_3=0.3\times102+0.7\times101.5=101.65$
|
||
3. $S_4=0.3\times108+0.7\times101.65\approx103.755$
|
||
4. $S_5=0.3\times110+0.7\times103.755\approx106.379$
|
||
|
||
因此,对第 6 期销量的预测就是 $S_5\approx106.38$。
|
||
|
||
|
||
|
||
**二次指数平滑法(Holt’s Linear Method)**
|
||
|
||
当序列存在趋势(Trend)时,单次平滑会落后。二次指数平滑(也称 Holt 线性方法)在单次平滑的基础上,额外对趋势项做平滑。
|
||
|
||
- **水平和趋势平滑方程:**
|
||
$$
|
||
\begin{cases}
|
||
L_t = \alpha\,x_t + (1-\alpha)(L_{t-1}+T_{t-1}), \\[6pt]
|
||
T_t = \beta\,(L_t - L_{t-1}) + (1-\beta)\,T_{t-1},
|
||
\end{cases}
|
||
$$
|
||
|
||
- $L_t$:水平(level)
|
||
- $T_t$:趋势(trend)
|
||
- $\alpha, \beta$:平滑常数,通常 $0.1$–$0.3$
|
||
|
||
- **预测公式:**
|
||
$$
|
||
\hat{x}_{t+m} = L_t + m\,T_t
|
||
$$
|
||
其中 $m$ 为预测步数。
|
||
|
||
- **举例:**
|
||
用同样的数据 $[100,105,102,108,110]$,取 $\alpha=0.3,\;\beta=0.2$,初始化:
|
||
|
||
- $L_1 = x_1 = 100$
|
||
- $T_1 = x_2 - x_1 = 5$
|
||
|
||
接下来计算:
|
||
|
||
1. $t=2$:
|
||
$$
|
||
L_2=0.3\times105+0.7\times(100+5)=0.3\times105+0.7\times105=105
|
||
$$
|
||
|
||
$$
|
||
T_2=0.2\times(105-100)+0.8\times5=0.2\times5+4=5
|
||
$$
|
||
|
||
2. $t=3$:
|
||
$$
|
||
L_3=0.3\times102+0.7\times(105+5)=0.3\times102+0.7\times110=106.4
|
||
$$
|
||
|
||
$$
|
||
T_3=0.2\times(106.4-105)+0.8\times5=0.2\times1.4+4=4.28
|
||
$$
|
||
|
||
3. $t=4$:
|
||
$$
|
||
L_4=0.3\times108+0.7\times(106.4+4.28)\approx0.3\times108+0.7\times110.68\approx110.276
|
||
$$
|
||
|
||
$$
|
||
T_4=0.2\times(110.276-106.4)+0.8\times4.28\approx0.2\times3.876+3.424\approx4.199
|
||
$$
|
||
|
||
4. $t=5$:
|
||
$$
|
||
L_5=0.3\times110+0.7\times(110.276+4.199)\approx0.3\times110+0.7\times114.475\approx112.133
|
||
$$
|
||
|
||
$$
|
||
T_5=0.2\times(112.133-110.276)+0.8\times4.199\approx0.2\times1.857+3.359\approx3.731
|
||
$$
|
||
|
||
**预测第 6 期** ($m=1$):
|
||
$$
|
||
\hat{x}_6 = L_5 + 1\times T_5 \approx 112.133 + 3.731 = 115.864
|
||
$$
|
||
|
||
---
|
||
|
||
**小结**
|
||
|
||
- 单次指数平滑适用于无明显趋势的序列,简单易用。
|
||
- 二次指数平滑(Holt 方法)在水平外加趋势成分,适合带线性趋势的数据,并可向未来多步预测。
|
||
|
||
通过选择合适的平滑参数 $\alpha,\beta$ 并对初值进行合理设定,即可在实践中获得较好的短期预测效果。
|
||
|
||
|
||
|
||
**三次指数平滑法概述**
|
||
|
||
三次指数平滑法在二次(Holt)方法的基础上又加入了对季节成分的平滑,适用于同时存在趋势(Trend)和季节性(Seasonality)的时间序列。
|
||
|
||
|
||
|
||
**主要参数及符号**
|
||
|
||
- $m$:季节周期长度(例如季度数据 $m=4$,月度数据 $m=12$)。
|
||
- $\alpha, \beta, \gamma$:水平、趋势、季节三项的平滑系数,均在 $(0,1]$ 之间。
|
||
- $x_t$:时刻 $t$ 的实际值。
|
||
- $L_t$:时刻 $t$ 的水平(level)平滑值。
|
||
- $B_t$:时刻 $t$ 的趋势(trend)平滑值。
|
||
- $S_t$:时刻 $t$ 的季节(seasonal)成分平滑值。
|
||
- $\hat x_{t+h}$:时刻 $t+h$ 的 $h$ 步预测值。
|
||
|
||
**平滑与预测公式(加法模型)**
|
||
$$
|
||
\begin{aligned}
|
||
L_t &= \alpha\,(x_t - S_{t-m}) + (1-\alpha)\,(L_{t-1}+B_{t-1}),\\
|
||
B_t &= \beta\,(L_t - L_{t-1}) + (1-\beta)\,B_{t-1},\\
|
||
S_t &= \gamma\,(x_t - L_t) + (1-\gamma)\,S_{t-m},\\
|
||
\hat x_{t+h} &= L_t + h\,B_t + S_{t-m+h_m},\quad\text{其中 }h_m=((h-1)\bmod m)+1.
|
||
\end{aligned}
|
||
$$
|
||
|
||
- **加法模型** 适用于季节波动幅度与水平无关的情况;
|
||
- **乘法模型** 则把"$x_t - S_{t-m}$"改为"$x_t / S_{t-m}$"、"$S_t$"改为"$\gamma\,(x_t/L_t)+(1-\gamma)\,S_{t-m}$"并在预测中用乘法。
|
||
|
||
---
|
||
|
||
**计算示例**
|
||
|
||
假设我们有一个周期为 $m=4$ 的序列,前 8 期观测值:
|
||
$$
|
||
x = [110,\;130,\;150,\;95,\;120,\;140,\;160,\;100].
|
||
$$
|
||
取参数 $\alpha=0.5,\;\beta=0.3,\;\gamma=0.2$。
|
||
初始值按常见做法设定为:
|
||
|
||
- $L_0 = \frac{1}{m}\sum_{i=1}^m x_i = \tfrac{110+130+150+95}{4}=121.25$.
|
||
|
||
- 趋势初值
|
||
$$
|
||
B_0 = \frac{1}{m^2}\sum_{i=1}^m (x_{m+i}-x_i)
|
||
= \frac{(120-110)+(140-130)+(160-150)+(100-95)}{4\cdot4}
|
||
= \frac{35}{16} \approx 2.1875.
|
||
$$
|
||
|
||
- 季节初值 $S_i = x_i - L_0$,即
|
||
$[-11.25,\;8.75,\;28.75,\;-26.25]$ 对应 $i=1,2,3,4$。
|
||
|
||
下面我们演示第 5 期($t=5$)的更新与对第 6 期的预测。
|
||
|
||
| $t$ | $x_t$ | 计算细节 | 结果 |
|
||
| -------------- | ----- | ---------------------------------------------------- | ----------------- |
|
||
| | | **已知初值** | |
|
||
| 0 | – | $L_0=121.25,\;B_0=2.1875$ | |
|
||
| 1–4 | – | $S_{1\ldots4}=[-11.25,\,8.75,\,28.75,\,-26.25]$ | |
|
||
| **5** | 120 | $L_5=0.5(120-(-11.25)) +0.5(121.25+2.1875)$ | $\approx127.3438$ |
|
||
| | | $B_5=0.3(127.3438-121.25)+0.7\cdot2.1875$ | $\approx3.3594$ |
|
||
| | | $S_5=0.2(120-127.3438)+0.8\cdot(-11.25)$ | $\approx-10.4688$ |
|
||
| **预测** $h=1$ | – | $\hat x_6 = L_5 + 1\cdot B_5 + S_{6-4}\;(=S_2=8.75)$ | $\approx139.45$ |
|
||
|
||
**解读:**
|
||
|
||
1. 期 5 时,剔除上周期季节影响后平滑得到新的水平 $L_5$;
|
||
2. 由水平变化量给出趋势 $B_5$;
|
||
3. 更新第 5 期的季节因子 $S_5$;
|
||
4. 期 6 的一步预测综合了最新水平、趋势和对应的季节因子,得 $\hat x_6\approx139.45$。
|
||
|
||
|
||
|
||
### 总结思考
|
||
|
||
- 如果你把预测值 $\hat x_{t+1}$ 当作"新观测"再去更新状态,然后再预测 $\hat x_{t+2}$,这种"预测—更新—预测"的迭代方式会让模型把自身的预测误差也当作输入,不断放大误差。
|
||
- 正确做法是——在时刻 $t$ 得到 $L_t,B_t,S_t$ 后,用上面的直接公式一次算出**所有未来** $\hat x_{t+1},\hat x_{t+2},\dots$,这样并不会"反馈"误差,也就没有累积放大的问题。
|
||
|
||
或者,根据精确重构出来的矩阵谱分解,得到的特征值作为'真实值',进行在线更新,执行单步计算。
|