본문으로 바로가기

하이퍼 파라미터 튜닝(RandomSearch CV)

category SKALA/AI 2025. 4. 25. 17:22
반응형

하이퍼 파라미터

모델 학습 전에 사용자가 직접 설정해주는 파라미터들

EX)

  • 결정 트리의 max_depth
  • KNN의 k
  • 신경망의 learning rate, batch size, epoch 등

 

튜닝?? 

이러한 하이퍼 파라미터들을 바꿔보면서 가장 좋은 성능이 나오게 조정하는 작업

 

왜 중요한가??

  1. 모델 성능 극대화 -> 튜닝을 잘하면 정확도, 정밀도, F1-score 등이 눈에 띄게 향상될 수 있다.
  2. 과적합 / 과소적합 방지 -> 적절한 튜닝은 모델의 일반화 성능을 높여줘, 오버피팅이나 언더피팅을 줄일 수 있음
  3. 최적의 모델 선정 -> 동일한 알고리즘이라도 하이퍼 파라미터에 따라 성능 차이가 크기 때문에 중요함

 

하이퍼 파라미터의 종류

  • 모델 관련 하이퍼 파라미터
    • 예 : max_depth, n_estimators, C, gamma 등
  • 학습 관련 하이퍼 파라미터
    • learning rate, batch size, epochs, optimizer 종류 등

 

튜닝 방법 (종류)

1. Grid Search (그리드 탐색)

  • 여러 하이퍼 파라미터 조합을 모두 시도해서 가장 성능 좋은 걸 찾음
  • 장점 : 확실하고 단순
  • 단점 : 경우의 수가 많아지면 속도가 매우 느림

2. Random Search(랜덤 탐색)

  • 모든 조합을 보는 대신 일부 조합만 랜덤하게 선택
  • 장점 : 빠르고 성능 좋은 조합 찾을 확률 높음
  • 단점 : 최적값을 놓칠 수 있음

3. Bayesian Optimization (베이지안 최적화)

  • 과거 결과를 기반으로 다음 시도할 하이퍼파라미터를 예측해서 선택
  • 탐색 효율이 좋고 빠르게 최적값에 접근

이번에 데이터 분석 Mini-Project를 진행할 때 나는 Grid Search를 하려했으나 너무 오래 걸려서 기한 안에 제출을 못할 거 같애서 Random Search를 시행했다.

from sklearn.model_selection import RandomizedSearchCV
from sklearn.metrics import make_scorer, f1_score

# 모델 초기화
model = XGBClassifier(random_state=42)

# 하이퍼파라미터 그리드 설정
param_dist = {
    'n_estimators': [50, 100, 200],
    'max_depth': [3, 5, 10],
    'learning_rate': [0.01, 0.1, 0.2],
    'subsample': [0.8, 1.0],
    'colsample_bytree': [0.8, 1.0],
    'gamma': [0, 1, 5]
}


# F1 Score를 평가 지표로 사용
scorer = make_scorer(f1_score, average='weighted')


# RandomSearchCV 초기화
random_search = RandomizedSearchCV(
    estimator=model,
    param_distributions=param_dist,
    n_iter=20,  # 시도할 조합 수 (적절히 조정 가능)
    scoring=scorer,
    cv=5,  # 5-Fold Cross Validation
    verbose=1,
    random_state=42,
    n_jobs=-1  # 모든 CPU 코어 사용
)

# 하이퍼파라미터 튜닝 수행
random_search.fit(X_train, Y_train)

# 최적의 하이퍼파라미터와 성능 출력
print("Best Parameters:", random_search.best_params_)
print("Best F1 Score:", random_search.best_score_)

 

 

하이퍼 파라미터 튜닝을 하기 전에는 위와 같았다. 하지만 RandomSearchCV 시행해서 최적의 파라미터를 찾고 실행한결과......

 

무려 0.0011점이나 올랐다!

 

  • Accuracy(정확도) : 전체 예측 중 정답 맞춘 비율
  • Precision(정밀도) : 모델이 Positive라고 예측한 것 중에 실제로도 Positive인 비율
  • Recall(재현율) : 실제로 Positive인 것들 중에서 모델이 맞춘 비율
  • F1 Score (조화 평균) : Precision과 Recall의 조화 평균
반응형

'SKALA > AI' 카테고리의 다른 글

AutoGen  (0) 2025.04.24
Cross Validation  (0) 2025.04.23
Graph RAG  (0) 2025.04.22
앙상블(Ensemble)  (0) 2025.04.21
네이버 뉴스 RAG 실습(3) - Prompting 및 RAG 구축  (2) 2025.04.11