Байесовская оптимизация для параметров SARIMAX - PullRequest
0 голосов
/ 15 октября 2019

Я пробовал 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)

Как я могу решить эту проблему? Могу ли я что-то изменить в своем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...