Optuna를 활용한 베이지안 최적화
optuna.create_study(), suggest_float/int/categorical, 가지치기, 시각화를 학습합니다.
Optuna를 활용한 베이지안 최적화은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
무작위 탐색보다 더 똑똑한 방법
격자 탐색과 무작위 탐색은 과거 결과를 무시합니다. 베이지안 최적화는 이전 시행에서 학습하여 다음에 더 유망한 하이퍼파라미터를 제안하므로, 더 적은 평가만으로도 좋은 값을 찾을 수 있습니다.
Optuna가 하는 일
Optuna는 하이퍼파라미터 최적화를 위한 인기 있는 프레임워크입니다. 목적 함수를 정의하면 Optuna가 하이퍼파라미터를 지능적으로 샘플링하고 어떤 설정이 효과적이었는지 기억합니다.
최적화 실험 만들기
최적화 실험이 최적화를 관리합니다. 정확도나 AUC에는 direction을 "maximize"로, 손실이나 오류에는 "minimize"로 설정하세요.
import optuna
study = optuna.create_study(direction="maximize")objective 함수
objective는 trial 객체를 받아 하이퍼파라미터를 제안하고, 모델을 학습한 뒤, 최적화할 점수를 반환합니다.
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
def objective(trial):
n = trial.suggest_int("n_estimators", 100, 500)
d = trial.suggest_int("max_depth", 3, 20)
clf = RandomForestClassifier(n_estimators=n, max_depth=d)
return cross_val_score(clf, X, y, cv=3).mean()정수 매개변수 제안하기
trial.suggest_int(name, low, high)는 범위 안에서 정수를 선택합니다. 샘플링 방식을 조절하려면 step 또는 log=True를 추가하세요.
def objective(trial):
n_estimators = trial.suggest_int("n_estimators", 100, 1000, step=50)
return train_and_score(n_estimators)실수 매개변수 제안하기
trial.suggest_float(name, low, high)는 실수를 선택합니다. 학습률처럼 여러 자릿수 범위에 걸친 매개변수에는 log=True를 사용하세요.
def objective(trial):
lr = trial.suggest_float("learning_rate", 1e-4, 0.3, log=True)
subsample = trial.suggest_float("subsample", 0.5, 1.0)
return train_and_score(lr, subsample)범주형 매개변수 제안하기
trial.suggest_categorical(name, choices)는 정해진 목록에서 선택하므로, 커널 유형이나 부스팅 방법 같은 옵션에 적합합니다.
def objective(trial):
kernel = trial.suggest_categorical("kernel", ["linear", "rbf", "poly"])
return train_svm(kernel)최적화 실행하기
study.optimize(objective, n_trials=N)은 N번의 시행 동안 탐색을 실행합니다. 시행 횟수가 많을수록 더 넓은 공간을 탐색하며, Optuna는 시간이 지날수록 유망한 영역에 집중합니다.
study.optimize(objective, n_trials=100)최적 결과 읽기
최적화가 끝나면 study.best_params에서 최적의 하이퍼파라미터를, study.best_value에서 최적 목적 함수 점수를 확인할 수 있습니다.
print("Best params:", study.best_params)
print("Best value:", study.best_value)
best = RandomForestClassifier(**study.best_params)
best.fit(X, y)가능성 낮은 시행 중단하기
Optuna는 가지치기 기능을 사용해 성과가 나쁜 시행을 일찍 중단함으로써 계산 자원을 절약할 수 있습니다. 중간 값을 보고하고 학습 반복문 안에서 trial.should_prune()을 확인하세요.
import optuna
study = optuna.create_study(
direction="maximize",
pruner=optuna.pruners.MedianPruner(),
)Optuna가 확장 가능한 이유
Optuna는 병렬 시행, 영구 저장소, 탐색 결과 시각화를 지원합니다. 비용이 많이 드는 모델에서는 적은 샘플로 효율적으로 탐색하는 베이지안 방식 덕분에 격자 탐색이나 무작위 탐색보다 훨씬 적은 시행으로도 강력한 설정을 찾을 수 있습니다.
빠른 확인
Optuna에 대한 지식을 확인해 보세요.
요약
요약: Optuna는 베이지안 최적화를 사용해 하이퍼파라미터를 효율적으로 조정합니다. direction을 지정해 최적화 실험을 만들고, trial.suggest_int/float/categorical을 사용하는 objective를 작성한 다음, study.optimize(objective, n_trials=N)을 실행하고 study.best_params와 study.best_value를 확인하세요. 가지치기 기능은 성과가 낮은 시행을 중단해 계산 자원을 절약합니다.
자주 묻는 질문
“Optuna를 활용한 베이지안 최적화” 강의는 무료인가요?
네 — “Optuna를 활용한 베이지안 최적화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“Optuna를 활용한 베이지안 최적화”에서 뭘 배우나요?
optuna.create_study(), suggest_float/int/categorical, 가지치기, 시각화를 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“Optuna를 활용한 베이지안 최적화” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 교차 검증 전략
- 분류 평가 지표 심층 학습
- 그리드 검색과 무작위 검색
- Optuna를 활용한 베이지안 최적화