趋近智
虽然 MAE、MSE 和 RMSE 等指标能告诉我们模型预测与测试集上实际值的匹配程度,但它们本身不惩罚模型的复杂性。一个非常复杂的模型(例如,具有许多参数的 ARIMA 模型)可能在训练数据上拟合得非常好,甚至可能过好,导致在该数据上的误差很低。然而,这种复杂性可能意味着模型捕获了噪声而非潜在的信号,从而导致对新的、未见过的数据泛化能力差。这种现象称为过拟合。
信息准则,如赤池信息准则 (AIC) 和贝叶斯信息准则 (BIC),提供了一种通过平衡拟合优度和模型简洁性来选择模型的方法。它们衡量了当给定模型用于表示数据生成过程时所损失的信息量。
AIC 由赤池弘次开发,它估算预测误差,并以此衡量给定数据集上统计模型的相对质量。AIC 估算模型与真实数据生成过程之间的 Kullback-Leibler 散度。
AIC 的公式通常如下:
其中:
第一项 对参数较多的模型进行惩罚。模型参数越多,这一项的值越大,从而 AIC 值也越高。第二项 奖励模型的拟合优度。较高的似然值 (表示对数据拟合得更好)会导致这一项的值更小,从而降低 AIC。
目标是找到使 AIC 最小的模型。较低的 AIC 值表明模型拟合与复杂性之间有更好的平衡。重要的是要记住 AIC 值是相对的;特定模型的 AIC 值本身没有意义,但当比较拟合到相同数据集的不同候选模型时,它会变得有用。
贝叶斯信息准则 (BIC),也称为施瓦茨准则 (SIC),是另一种基于似然函数的模型选择准则,但它对模型复杂性的惩罚比 AIC 更强。
BIC 的公式是:
其中:
将 BIC 与 AIC 比较,可以看到参数数量 的惩罚项是 而不是 。由于样本大小的自然对数 对于大多数实际时间序列通常大于 2(),因此 BIC 通常比 AIC 更严厉地惩罚复杂模型。这通常导致 BIC 选择比 AIC 更简单的模型。
与 AIC 类似,BIC 旨在平衡拟合度与复杂性,BIC 值最低的模型更受青睐。它也是一种相对衡量标准,用于比较拟合到相同数据的模型。
在 Python 中使用 statsmodels 等库拟合 ARIMA 或 SARIMA 模型时,总结输出通常包含 AIC 和 BIC 值。
import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.arima.model import ARIMA
# 假设 'data' 是您的平稳时间序列(例如,差分后)
# 例子:拟合一个 ARIMA(1,1,1) 模型
# 注意:实际拟合通常在原始数据上进行,
# 指定 d=1,但为了演示 AIC/BIC,我们假设
# 数据已经平稳,我们正在比较 ARMA(p,q) 阶数。
# 实际使用时,请将 ARIMA(p,d,q) 拟合到原始序列。
# 生成一些用于演示的样本数据
import numpy as np
np.random.seed(42)
n_samples = 100
ar_params = np.array([0.6])
ma_params = np.array([-0.4])
# 为 ARIMA(1,1,1) 结构添加差分
y = sm.tsa.arima_process.arma_generate_sample(ar=ar_params, ma=ma_params, nsample=n_samples)
y = np.cumsum(y) # 积分回原始状态以模拟非平稳性
time_series = pd.Series(y)
# 拟合候选模型
model_111 = ARIMA(time_series, order=(1, 1, 1)).fit()
model_211 = ARIMA(time_series, order=(2, 1, 1)).fit()
model_112 = ARIMA(time_series, order=(1, 1, 2)).fit()
# 获取 AIC 和 BIC 值
print("ARIMA(1,1,1):")
print(f" AIC: {model_111.aic:.2f}")
print(f" BIC: {model_111.bic:.2f}")
print("\nARIMA(2,1,1):")
print(f" AIC: {model_211.aic:.2f}")
print(f" BIC: {model_211.bic:.2f}")
print("\nARIMA(1,1,2):")
print(f" AIC: {model_112.aic:.2f}")
print(f" BIC: {model_112.bic:.2f}")
# --- 示例输出 ---
# ARIMA(1,1,1):
# AIC: 278.20
# BIC: 285.99
#
# ARIMA(2,1,1):
# AIC: 279.98
# BIC: 290.36
#
# ARIMA(1,1,2):
# AIC: 280.02
# BIC: 290.40
在此示例中,ARIMA(1,1,1) 模型在三个候选模型中具有最低的 AIC 和 BIC 值。根据这些准则,这表明它为这个特定数据集提供了拟合度与简洁性的最佳平衡。
我们可以将此比较可视化:
三个候选 ARIMA 模型的 AIC 和 BIC 值比较。较低的值表示模型拟合度与复杂性之间有更好的权衡。
关于 AIC 或 BIC 哪个普遍“更好”,没有确定答案。
在实践中,同时查看 AIC 和 BIC 通常很有用。如果它们在最佳模型上达成一致,会增加对选择的信心。如果它们意见不一,则突出了一种权衡:AIC 倾向的模型可能提供稍好的拟合,而 BIC 倾向的模型则更简洁。最终的选择可能取决于您的具体目标以及可能进行的进一步分析,例如检查残差(在前面的章节中介绍)和评估在保留集上的预测精度(使用 MAE、RMSE 等指标)。
请记住,AIC 和 BIC 是指导模型选择的工具,尤其在通过 ACF/PACF 分析确定多个合理 ARIMA/SARIMA 阶数时特别有用。它们应与残差诊断和样本外预测评估一起使用,而不是替代它们。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造