optuna에 대하여

행동하는 개발자·2023년 7월 25일
0

PHM

목록 보기
41/43

예제

import optuna
from statsmodels.tsa.statespace.sarimax import SARIMAX

def objective(trial):
    p = trial.suggest_int('p', 0, 2)
    d = trial.suggest_int('d', 0, 2)
    q = trial.suggest_int('q', 0, 2)
    P = trial.suggest_int('P', 0, 2)
    D = trial.suggest_int('D', 0, 2)
    Q = trial.suggest_int('Q', 0, 2)
    s = 12  # seasonal cycle length

    model = SARIMAX(your_data, order=(p,d,q), seasonal_order=(P,D,Q,s))
    model_fit = model.fit(disp=False)

    return model_fit.aic  # or other suitable criterion

study = optuna.create_study()
study.optimize(objective, n_trials=100)  # adjust as needed

optimal_params = study.best_params

풀이

  • trial 인수는 optuna.trial.Trial의 인스턴스이다. 최적화 프로세스 중에 Optuna는 내부적으로 objective로 전달되는 trial 객체를 생성한다.

  • p = trial.suggest_int('p', 0, 2) 은 Optuna에게 SARIMA 모델의 매개변수 'p'에 대해 0과 2 사이의 정수를 제안하도록 요청한다.

  • return model_fit.aic는 모델의 Akaike Information Criterion을 반환한다. AIC는 모델의 복잡성을 고려하여 모델의 적합도를 측정한 것이다. Optuna는 시도를 통해 이 값을 최소화 하려고 노력할 것이다.

logging 표시 삭제하는 방법

import logging
optuna.logging.get_logger("optuna").propagate = False
profile
끊임없이 뭔가를 남기는 사람

0개의 댓글