Files
cointrader/scripts/run_optuna.sh
2026-03-02 14:50:50 +09:00

50 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Optuna로 LightGBM 하이퍼파라미터를 탐색하고 결과를 출력한다.
# 사람이 결과를 확인·승인한 후 train_model.py에 수동으로 반영하는 방식.
#
# 사용법:
# bash scripts/run_optuna.sh # 기본 (50 trials, 5폴드)
# bash scripts/run_optuna.sh 100 # 100 trials
# bash scripts/run_optuna.sh 100 3 # 100 trials, 3폴드
# bash scripts/run_optuna.sh 10 3 --no-baseline # 빠른 테스트
#
# 결과 확인 후 승인하면:
# python scripts/train_model.py --tuned-params models/tune_results_YYYYMMDD_HHMMSS.json
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
VENV_PATH="${VENV_PATH:-$PROJECT_ROOT/.venv}"
if [ -f "$VENV_PATH/bin/activate" ]; then
# shellcheck source=/dev/null
source "$VENV_PATH/bin/activate"
else
echo "경고: 가상환경을 찾을 수 없습니다 ($VENV_PATH). 시스템 Python을 사용합니다." >&2
fi
TRIALS="${1:-50}"
FOLDS="${2:-5}"
EXTRA_ARGS="${3:-}"
cd "$PROJECT_ROOT"
echo "=== Optuna 하이퍼파라미터 탐색 ==="
echo " trials=${TRIALS}, folds=${FOLDS}"
echo ""
python scripts/tune_hyperparams.py \
--trials "$TRIALS" \
--folds "$FOLDS" \
$EXTRA_ARGS
echo ""
echo "=== 탐색 완료 ==="
echo ""
echo "결과 JSON을 확인하고 승인하면 아래 명령으로 재학습하세요:"
echo " python scripts/train_model.py --tuned-params models/tune_results_<timestamp>.json"
echo ""
echo "Walk-Forward 검증과 함께 재학습:"
echo " python scripts/train_model.py --tuned-params models/tune_results_<timestamp>.json --wf"