[python] 하이퍼파라미터 튜닝하기
1. 그리드 서치 (Grid Search)를 사용한 하이퍼파라미터 튜닝
하이퍼파라미터 튜닝을 위해 그리드 서치를 사용할 수 있습니다. 그리드 서치는 가능한 모든 조합의 하이퍼파라미터 값을 시도하여 최적의 조합을 찾는 방법입니다. 이를 위해 GridSearchCV
클래스를 사용할 수 있습니다.
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
# 데이터 불러오기
iris = load_iris()
X, y = iris.data, iris.target
# 모델 초기화
model = RandomForestClassifier()
# 튜닝할 하이퍼파라미터 지정
param_grid = {
'n_estimators': [100, 200, 300],
'max_depth': [5, 10, 15]
}
# 그리드 서치 수행
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X, y)
# 최적의 하이퍼파라미터 조합 출력
print(grid_search.best_params_)
2. 랜덤 서치 (Random Search)를 사용한 하이퍼파라미터 튜닝
랜덤 서치는 가능한 모든 조합을 시도하는 대신 주어진 범위에서 랜덤하게 하이퍼파라미터 값을 선택하여 탐색하는 방법입니다. 이를 위해 RandomizedSearchCV
클래스를 사용할 수 있습니다.
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
from sklearn.ensemble import RandomForestClassifier
# 모델 초기화
model = RandomForestClassifier()
# 튜닝할 하이퍼파라미터 범위 설정
param_dist = {
'n_estimators': randint(100, 1000),
'max_depth': randint(5, 20)
}
# 랜덤 서치 수행
random_search = RandomizedSearchCV(model, param_distributions=param_dist, n_iter=10, cv=5)
random_search.fit(X, y)
# 최적의 하이퍼파라미터 조합 출력
print(random_search.best_params_)
이제 이러한 방법들을 사용하여 하이퍼파라미터 튜닝을 수행할 수 있습니다. 정확한 모델을 찾기 위해 여러 조합을 실험해보고, 규모에 맞게 적절한 방법을 선택하는 것이 중요합니다.
참고 자료:
- scikit-learn 모델 평가 및 매개변수 선택: 5.3. Model evaluation: quantifying the quality of predictions - 5.3.1. Grid-search
- scikit-learn 모델 평가 및 매개변수 선택: 5.3. Model evaluation: quantifying the quality of predictions - 5.3.2. RandomizedSearchCV