대외활동/[부트캠프] 빅데이터 분석가 과정

[ML] 06-2. ML - Optuna

셈뇽 2024. 5. 9. 13:33

[ Optuna ]

 

Optuna: A hyperparameter optimization framework — Optuna 3.6.1 documentation

© Copyright 2018, Optuna Contributors. Revision 39f83f7e.

optuna.readthedocs.io

✅ 하이퍼파라미터 최적화를 위한 파이썬 라이브러리로, 모델의 성능을 향상시키는데 필요한 최적의 하이퍼파라미터를 자동으로 탐색.

→ 베이지안 최적화 알고지름 기반

*베이지안 : 과거의 데이터를 바탕으로 추

→ 목적함수의 값을 최소화하거나, 최대화하는 데 사용됨

  • 특징
    1. 하이퍼파라미터 최적화: 주어진 목적 함수의 값을 최소화하거나 최대화하기 위한 최적의 하이퍼파라미터를 찾습니다.
    2. 자동화된 하이퍼파라미터 탐색: Optuna는 사용자가 지정한 하이퍼파라미터 공간에서 효율적으로 탐색을 수행합니다.
    3. 다양한 최적화 알고리즘: 베이지안 최적화를 비롯하여 여러 가지 최적화 알고리즘을 지원합니다.
    4. 분산 처리 지원: 분산 환경에서 여러 대의 컴퓨터를 사용하여 탐색을 병렬화할 수 있습니다.
  • 최적화 절차
    1. 하이퍼파라미터 공간 정의: 최적화할 하이퍼파라미터의 범위를 정의합니다. 예를 들어, 학습률, 은닉층의 수, 은닉층의 뉴런 수 등을 지정합니다.
    2. 목적 함수 정의: 최소화하거나 최대화하려는 목적 함수를 정의합니다. 이 함수는 주어진 하이퍼파라미터에 대해 모델을 훈련하고 검증하는 데 사용됩니다. 목적 함수의 반환값은 모델의 성능 지표로, 일반적으로 검증 세트의 정확도나 손실 함숫값입니다.
    3. 하이퍼파라미터 최적화 실행: Optuna를 사용하여 목적 함수의 값을 최소화하는 최적의 하이퍼파라미터를 탐색합니다. 이 과정은 주어진 하이퍼파라미터 공간에서 반복적으로 모델을 학습하고 평가하여 진행됩니다.
    4. 최적의 하이퍼파라미터 검증: 최적의 하이퍼파라미터를 사용하여 모델을 최종적으로 검증하고 평가합니다.

 

 

> 예시 코드

!pip install optuna
import optuna
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier

# 목적 함수 정의
def objective(trial):
    # 하이퍼파라미터 범위 지정
    n_neighbors = trial.suggest_int('n_neighbors', 1, 10)
    
    # KNN 모델 생성
    knn = KNeighborsClassifier(n_neighbors=n_neighbors)
    
    # 교차 검증 수행하여 정확도 반환
    score = cross_val_score(knn, X_train, y_train, cv=5).mean()
    return score

# 최적화 실행
study = optuna.create_study(direction='maximize')  # 최대화 문제로 설정
study.optimize(objective, n_trials=100)  # 100번의 시도 동안 최적화 수행

# 최적의 하이퍼파라미터 출력
print("Best Hyperparameters:", study.best_params)
print("Best Score:", study.best_value)

 

 

> cross_val 관련 내용

 

[ASAC] 06-1. ML - Cross Validation, Grid Search

[ cross validation ]✅ 모델의 성능을 평가하기 위한 효과적인 방법 중 하나로, 모델의 성능을 정확하게 추정하기 위해 사용.다음과 같은 종류들이 있다.k-fold cross validationleave-one-out cross validationstratif

seheehee.tistory.com