데이스쿨 할인 리턴-즈!
분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
효율적으로 하이퍼파라미터 튜닝 하는 방법 소개 : Optuna
대회가 마무리 되어가는 지금, 하이퍼파라미터 튜닝이 굉장히 중요한 시기인것 같은데요
효율적인 하이퍼파라미터 튜닝을 지원하는 optuna 라는 라이브러리 코드를 공유드리려합니다.
그리드 서치와 달리 하이퍼파라미터를 범위로 지정을 해줄 수 있어서 좀 더 직관적이고 사용하기 간편합니다.
! pip install optuna import optuna from optuna import Trial from optuna.samplers import TPESampler from sklearn.metrics import log_loss from sklearn.model_selection import train_test_split # train_x, train_y가 전역변수로 정의 되어있다는 가정한 코드입니다. def objective(trial: Trial) -> float: params_lgb = { "random_state": 42, "verbosity": -1, "learning_rate": trial.suggest_float("learning_rate", 0.05, 0.1), "n_estimators": 250, "objective": "multiclass", "metric": "multi_logloss", "max_depth": trial.suggest_int("max_depth", 1, 30), "num_leaves": trial.suggest_int("num_leaves", 2, 256), "colsample_bytree": trial.suggest_float("colsample_bytree", 0.2, 0.6), "subsample": trial.suggest_float("subsample", 0.3, 1.0), "subsample_freq": trial.suggest_int("subsample_freq", 1, 10), "min_child_samples": trial.suggest_int("min_child_samples", 2, 30), } X_train, X_valid, y_train, y_valid = train_test_split(train_x, train_y, test_size=0.2) model = LGBMClassifier(**params_lgb) model.fit( X_train, y_train, eval_set=[(X_train, y_train), (X_valid, y_valid)], early_stopping_rounds=100, verbose=False, ) lgb_pred = model.predict_proba(X_valid) log_score = log_loss(y_valid, lgb_pred) return log_score sampler = TPESampler(seed=42) study = optuna.create_study( study_name="lgbm_parameter_opt", direction="minimize", sampler=sampler, ) study.optimize(objective, n_trials=20) print("Best Score:", study.best_value) print("Best trial:", study.best_trial.params)
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
직업정보제공사업 신고번호: J1204020250004
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io |
전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved