feat: add Optuna Walk-Forward AUC hyperparameter tuning pipeline
- scripts/tune_hyperparams.py: Optuna + Walk-Forward 5폴드 AUC 목적 함수 - 데이터셋 1회 캐싱으로 모든 trial 공유 (속도 최적화) - num_leaves <= 2^max_depth - 1 제약 강제 (소규모 데이터 과적합 방지) - MedianPruner로 저성능 trial 조기 종료 - 결과: 콘솔 리포트 + models/tune_results_YYYYMMDD_HHMMSS.json - requirements.txt: optuna>=3.6.0 추가 - README.md: 하이퍼파라미터 자동 튜닝 사용법 섹션 추가 - docs/plans/: 설계 문서 및 구현 플랜 추가 Made-with: Cursor
This commit is contained in:
22
README.md
22
README.md
@@ -48,6 +48,7 @@ cointrader/
|
||||
│ ├── train_model.py # LightGBM 모델 학습 (CPU)
|
||||
│ ├── train_mlx_model.py # MLX 신경망 학습 (Apple Silicon GPU)
|
||||
│ ├── train_and_deploy.sh # 전체 파이프라인 (수집 → 학습 → LXC 배포)
|
||||
│ ├── tune_hyperparams.py # Optuna 하이퍼파라미터 자동 탐색 (수동 트리거)
|
||||
│ ├── deploy_model.sh # 모델 파일 LXC 서버 전송
|
||||
│ └── run_tests.sh # 전체 테스트 실행
|
||||
├── models/ # 학습된 모델 저장 (.pkl / .onnx)
|
||||
@@ -160,6 +161,27 @@ bash scripts/deploy_model.sh mlx # MLX (ONNX)
|
||||
|
||||
> **모델 핫리로드**: 봇이 실행 중일 때 모델 파일을 교체하면, 다음 캔들 마감 시 자동으로 감지해 리로드합니다. 봇 재시작이 필요 없습니다.
|
||||
|
||||
### 하이퍼파라미터 자동 튜닝 (Optuna)
|
||||
|
||||
봇 성능이 저하되거나 데이터가 충분히 축적되었을 때 Optuna로 최적 LightGBM 파라미터를 탐색합니다.
|
||||
결과를 확인하고 직접 승인한 후 재학습에 반영하는 **수동 트리거** 방식입니다.
|
||||
|
||||
```bash
|
||||
# 기본 실행 (50 trials, 5폴드 Walk-Forward, ~30분)
|
||||
python scripts/tune_hyperparams.py
|
||||
|
||||
# 빠른 테스트 (10 trials, 3폴드, ~5분)
|
||||
python scripts/tune_hyperparams.py --trials 10 --folds 3
|
||||
|
||||
# 베이스라인 측정 없이 탐색만
|
||||
python scripts/tune_hyperparams.py --no-baseline
|
||||
```
|
||||
|
||||
결과는 `models/tune_results_YYYYMMDD_HHMMSS.json`에 저장됩니다.
|
||||
콘솔에 Best Params, 베이스라인 대비 개선폭, 폴드별 AUC를 출력하므로 직접 확인 후 판단하세요.
|
||||
|
||||
> **주의**: Optuna가 찾은 파라미터는 과적합 위험이 있습니다. Best Params를 `train_model.py`에 반영하기 전에 반드시 폴드별 AUC 분산과 개선폭을 검토하세요.
|
||||
|
||||
### Apple Silicon GPU 가속 학습 (M1/M2/M3/M4)
|
||||
|
||||
M 시리즈 맥에서는 MLX를 사용해 통합 GPU(Metal)로 학습할 수 있습니다.
|
||||
|
||||
Reference in New Issue
Block a user