[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_)

이제 이러한 방법들을 사용하여 하이퍼파라미터 튜닝을 수행할 수 있습니다. 정확한 모델을 찾기 위해 여러 조합을 실험해보고, 규모에 맞게 적절한 방법을 선택하는 것이 중요합니다.

참고 자료: