본문 바로가기
Data Anlaytist

교차검증 방법 GridSearchCV 와 RandomizedSearchCV 차이점

by goemgoem-i 2025. 5. 18.
반응형

 

 

 

모델의 성능을 최대로 끌어올리기 위해 꼭 필요한 작업이 바로 하이퍼파라미터 튜닝입니다. 그런데 어떤 값을 넣어야 모델이 가장 잘 작동할지 직접 손으로 다 실험해보긴 어려워요

이럴 때 사용하는 강력한 도구가 바로 GridSearchCVRandomizedSearchCV입니다

이 글에서는 두 방법의 차이, 언제 어떤 걸 써야 하는지, 그리고 실제 사용 예시까지 한 번에 정리해 드릴게요

 

 

하이퍼파라미터란?

 

하이퍼파라미터는 모델을 학습시키기 전에 설정하는 값입니다. 예를 들어,

 

- 의사결정트리의 max_depth

- 랜덤포레스트의 n_estimators

- 로지스틱 회귀의 C 값
등이 모두 하이퍼파라미터입니다.

이 값에 따라 모델 성능이 크게 달라지기 때문에, 최적의 조합을 찾아내는 과정이 필요합니다.

 

 

교차검증(Cross Validation)이란?

단순히 학습데이터와 테스트데이터 한 번만 나눠서 평가하면, 데이터 구성에 따라 성능이 달라질 수 있습니다.
이걸 방지하기 위해 데이터를 여러 번 나눠 평가하는 방식이 바로 교차검증입니다.

보통 많이 쓰는 K-Fold Cross Validation은 데이터를 K개의 폴드로 나누고, 그 중 하나를 검증용으로 사용해 K번 학습·평가합니다.
이 결과를 평균내면 좀 더 안정적인 성능 추정이 가능합니다.

 

 

GridSearchCV란?

가능한 모든 하이퍼파라미터 조합을 모두 다 탐색하는 방식입니다.

특징

  • 모든 조합을 확인하므로, 최적값을 찾을 가능성이 높음
  • 하지만 조합 수가 많을수록 시간이 매우 오래 걸림
  • 작은 하이퍼파라미터 범위를 다룰 때 적합
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

param_grid = {
    'n_estimators': [100, 200, 300],
    'max_depth': [None, 5, 10]
}

grid = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
grid.fit(X_train, y_train)
print(grid.best_params_)

 

 

 

RandomizedSearchCV란?

지정된 범위에서 무작위로 조합을 뽑아 일정 횟수만 실험합니다.

특징

  • 속도가 빠름 (전부 돌리지 않아도 됨)
  • 조합 수가 많을 때 효과적
  • 운이 좋으면 GridSearchCV 못지않은 결과도 가능
from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import randint

param_dist = {
    'n_estimators': randint(100, 500),
    'max_depth': [None, 5, 10, 15]
}

random_search = RandomizedSearchCV(RandomForestClassifier(), param_dist, cv=5, n_iter=10, random_state=42)
random_search.fit(X_train, y_train)
print(random_search.best_params_)

 

 

 

GridSearchCV  vs  RandomizedSearchCV

방식 모든 조합 실험 랜덤 조합 일부 실험
속도 느림 빠름
탐색범위 좁고 정확 넓고 유연
추천 상황 조합 수가 적거나 정확한 탐색이 필요할 때 조합 수가 많거나 빠르게 탐색할 때

 

반응형