시작하기무료로 시작하기

Hyperopt로 하는 Bayesian 하이퍼파라미터 튜닝

이 예제에서는 Hyperopt 패키지(이미 hp로 임포트됨)를 사용해 Bayesian 하이퍼파라미터 최적화 과정을 설정하고 실행해 보겠습니다. 먼저 도메인(그리드 서치에서 그리드를 설정하는 것과 유사)을 설정하고, 이어서 목적 함수를 만듭니다. 마지막으로 최적화를 20회 반복해 실행합니다.

다음 값을 사용해 도메인을 설정하세요:

  • max_depth: quuniform 분포 사용(2에서 10 사이, 2씩 증가)
  • learning_rate: uniform 분포 사용(0.001부터 0.9까지)

이 연습 문제에서는 데이터 샘플 크기와 hyperopt & GBM 반복 횟수를 줄여서 진행합니다. 여러분의 로컬 머신에서 직접 이 방법을 시도하신다면, 검색 공간을 더 넓히고, trial 수를 늘리고, 교차 검증 횟수와 데이터셋 크기도 키워서 실제 성능을 확인해 보세요!

이 연습은 강의의 일부입니다

Python에서의 하이퍼파라미터 튜닝

강의 보기

연습 안내

  • 위에서 언급한 도메인을 사용해 space 딕셔너리를 설정하세요.
  • 그래디언트 부스팅 분류기를 사용해 목적 함수를 설정하세요.
  • 알고리즘을 20회 평가로 실행하세요(슬라이드의 기본 제안 알고리즘을 그대로 사용하면 됩니다).

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.____('max_depth', ____, ____, ____),'learning_rate': hp.____('learning_rate', ____,____)}

# Set up objective function
def objective(params):
    params = {'max_depth': int(params[____]),'learning_rate': params[____]}
    gbm_clf = ____(n_estimators=100, **params) 
    best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
    loss = 1 - ____
    return ____

# Run the algorithm
best = fmin(fn=____,space=space, max_evals=____, rstate=np.random.default_rng(42), algo=tpe.suggest)
print(____)
코드 편집 및 실행