自回归模型的部分拟合或增量学习

我有两个时间序列,代表两个独立的数据观察期。我希望对这些数据拟合一个自回归模型。换句话说,我希望进行两次部分拟合,或者说进行两次增量学习。

这是一个简化的描述,描述了一个并不罕见的情景,也可能适用于对大型数据集的批量拟合。

我该如何做到这一点(在statsmodels中或其他方式)?如果解决方案可以推广到其他时间序列模型,如ARIMA,将会是额外的加分项。

用伪代码来说明,类似于:

import statsmodels.api as smfrom statsmodels.tsa.ar_model import AutoRegdata = sm.datasets.sunspots.load_pandas().data['SUNACTIVITY']data_1 = data[:len(data)//3]data_2 = data[len(data)-len(data)//3:]# 这是标准的单次拟合用法res = AutoReg(data_1, lags=12).fit()res.aic# 这更接近于我想要的model = AutoReg(lags=12)model.partial_fit(data_1)model.partial_fit(data_2)model.results.aic

回答:

Statsmodels并没有直接提供这种功能。不过,正如Kevin S提到的,pmdarima确实有一个包装器,提供了这种功能。具体来说是update方法。根据他们的文档说明:“使用额外的观察到的endog/exog值更新模型拟合。”

请看下面的示例,围绕您的特定代码:

from pmdarima.arima import ARIMAimport statsmodels.api as smdata = sm.datasets.sunspots.load_pandas().data['SUNACTIVITY']data_1 = data[:len(data)//3]data_2 = data[len(data)-len(data)//3:]# 这是标准的单次拟合用法model = ARIMA(order=(12,0,0))model.fit(data_1)# 使用新参数更新模型参数model.update(data_2)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注