Я пробовал bayes_opt для оптимизации гиперпараматеров lightgbm и xgboost для байесовского подхода к оптимизации.
Теперь я пытаюсь использовать тот же подход для оптимизации гиперпараметров SARIMAX: (p, d, q) x (P, D, Q, 12).
В случае lightgbm и xgboost этот процесс был слишком быстрым. Но в случае SARIMAX это занимает слишком много времени. Я ждал около 45 минут. Я не мог ничего найти.
Вот мой код:
def sarimax_bayesian(p, d, q, P, D, Q):
# params
p = int(p)
d = int(q)
q = int(q)
# seasonal params
P = int(P)
D = int(Q)
Q = int(Q)
# assert param types as integer
assert type(p) == int
assert type(d) == int
assert type(q) == int
assert type(P) == int
assert type(D) == int
assert type(Q) == int
params = (p, d, q)
seasonal_params = (P,D,Q,12)
# model
model = sm.tsa.statespace.SARIMAX(y,
order=params,
seasonal_order=seasonal_params,
enforce_stationarity=False,
enforce_invertibility=False)
# results
results = model.fit()
# get aic score
aic = results.aic
return np.negative(aic)
bounds_sarimax = {
'p': (0, 12),
'd': (0, 12),
'q': (0, 12),
'P': (0, 12),
'D': (0, 12),
'Q': (0, 12)}
sarimax_bo = BayesianOptimization(sarimax_bayesian, bounds_sarimax, random_state=42)
print(sarimax_bo.space.keys)
init_points = 0
n_iter = 1
print('-' * 130)
with warnings.catch_warnings():
warnings.filterwarnings('ignore')
sarimax_bo.maximize(init_points=init_points, n_iter=n_iter, acq='ucb', xi=0.0, alpha=1e-6)
Как я могу решить эту проблему? Могу ли я что-то изменить в своем коде?