반응형
모델의 성능을 최대로 끌어올리기 위해 꼭 필요한 작업이 바로 하이퍼파라미터 튜닝입니다. 그런데 어떤 값을 넣어야 모델이 가장 잘 작동할지 직접 손으로 다 실험해보긴 어려워요
이럴 때 사용하는 강력한 도구가 바로 GridSearchCV와 RandomizedSearchCV입니다
이 글에서는 두 방법의 차이, 언제 어떤 걸 써야 하는지, 그리고 실제 사용 예시까지 한 번에 정리해 드릴게요
하이퍼파라미터란?
하이퍼파라미터는 모델을 학습시키기 전에 설정하는 값입니다. 예를 들어,
- 의사결정트리의 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
방식 | 모든 조합 실험 | 랜덤 조합 일부 실험 |
속도 | 느림 | 빠름 |
탐색범위 | 좁고 정확 | 넓고 유연 |
추천 상황 | 조합 수가 적거나 정확한 탐색이 필요할 때 | 조합 수가 많거나 빠르게 탐색할 때 |
반응형
'Data Anlaytist' 카테고리의 다른 글
Bias와 Variance란? 머신러닝 오차의 핵심을 이해하자 (0) | 2025.06.10 |
---|---|
정규화(Normalization) vs 표준화(Standardization)의 활용 (0) | 2025.05.27 |
변수 선택법(feature selection)의 feature importance와 RFE 개념 비교 정리 (0) | 2025.04.23 |
불순도 감소 (Impurity Decrease) (0) | 2025.04.17 |
RFE(Recursive Feature Elimination)와 RFECV (RFE with Cross-Validation) 개념 정리 (2) | 2025.04.11 |