You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VARMA(2,1)固定窗口滚动预测效率优化及替代方案问询

VARMA(2,1)滚动预测的性能优化与GPU替代方案

一、提升VARMAX滚动预测速度的可行方案

1. 复用模型状态,避免重复初始化

当前代码每次滚动都重新创建VARMAX实例并从头拟合,这是核心性能瓶颈。可以利用statsmodels状态空间模型的递推特性,复用前一次拟合结果作为初始值:

# 初始化第一个窗口的模型与拟合结果
init_window = series_df.iloc[:window]
model = VARMAX(
    init_window,
    order=(2, 1),
    trend='c',
    enforce_stationarity=False,
    enforce_invertibility=False
)
res = model.fit(maxiter= SPDX行}ous`...fitFemale.br 
'模型 UnexpectedZoMultivariate autoregressive moving average model (VARMA) is a generalization of the univariate ARMA model. It consists of two parts: the autoregressive (AR) part and the moving average (MA) part. The VARMA model is used to analyze and forecast multiple time series simultaneously.

这种方式无需每次重新初始化模型,大幅减少迭代计算量。

2. 降低模型参数规模

24维VARMA(2,1)的参数总数超过1700个,拟合成本极高:

  • 尝试降低AR/MA阶数,比如调整为order=(1,1),参数数量直接减半
  • 业务允许的话,移除趋势项,设置trend='nc'

3. 并行化滚动拟合

利用多CPU核心并行处理独立的滚动窗口任务,适配Colab的多核心环境:

from joblib import Parallel, delayed

def fit_single_window(window_data):
    model = VARMAX(
        window_data,
        order=(2,1),
        trend='c',
        enforce_stationarity=False,
        enforce_invertibility=False
    )
    res = model.fit(maxiter=10, disp=False)
    return res.forecast(steps=1).iloc[0]

# 生成所有滚动窗口数据集
window_datasets = [
    series_df.iloc[n_train+i - window : n_train+i] 
    for i in range(len(test_index))
]

# 并行执行,n_jobs=-1使用全部核心
forecast_results = Parallel(n_jobs=-1)(
    delayed(fit_single_window)(data) for data in window_datasets
)

forecasts = pd.DataFrame(
    forecast_results, 
    index=test_index, 
    columns=series_df.columns
)

4. 优化拟合器参数

  • 更换更快的优化器,比如设置method='lbfgs'(比默认bfgs更高效)
  • 检查迭代收敛性:通过res.mle_retvals['converged']确认是否收敛,若已收敛可减少maxiter值

二、TensorFlow时序库的GPU加速替代方案

可以用**TensorFlow Probability(TFP)**的线性高斯状态空间模型实现近似VARMAX的效果,且天然支持GPU加速:

  1. 模型对应关系:VARMA(2,1)可转化为线性高斯状态空间结构,AR(2)部分通过状态转移矩阵实现,MA(1)部分通过构造带移动平均项的噪声模型实现。
  2. GPU加速优势:TFP利用TensorFlow的自动微分和GPU并行计算能力,在24维等高维场景下,拟合和预测速度远快于statsmodels的CPU实现。
  3. 滚动预测效率:TFP的状态空间模型支持递推更新状态,每次仅需传入新观测值即可更新模型,无需重复拟合整个参数空间。

注意:TFP需要手动定义状态空间模型的结构,不像statsmodels的VARMAX那样开箱即用,需要对VARMA的状态空间表示有基础了解,但一旦完成模型构建,性能提升非常显著。


内容的提问来源于stack exchange,提问作者Silvio Klenk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:12:04