programming/Python

최적의 하이퍼 파라미터 찾기_sklearn.model_selection.GridSearchCV_머신러닝

Jofresh 2023. 7. 7. 13:46
728x90
반응형

안녕하세요. 조신선입니다.

 

오늘은 최적의 하이퍼 파라미터를 찾는데 도움이 되는 함수에 대해서 포스팅해보겠습니다.

 

sklearn.model_selection.GridSearchCV는 주어진 모델의 최적 하이퍼파라미터를 탐색하기 위해 사용되는 검색 기법 중 하나입니다. 주로 다음과 같은 상황에서 사용됩니다:

 


하이퍼파라미터 튜닝: 머신 러닝 모델은 다양한 하이퍼파라미터를 가지고 있습니다. 이러한 하이퍼파라미터들의 값을 조정하여 모델의 성능을 향상시킬 수 있습니다. GridSearchCV를 사용하면, 사전에 지정한 하이퍼파라미터들의 조합에 대해 교차 검증을 수행하여 최적의 하이퍼파라미터 조합을 찾을 수 있습니다.

모델 선택: 여러 종류의 모델(알고리즘) 중에서 최적의 모델을 선택해야 할 때, GridSearchCV를 사용하여 여러 모델의 하이퍼파라미터를 조합하고 성능을 평가하여 최적의 모델을 선택할 수 있습니다.

GridSearchCV의 주요 매개변수는 다음과 같습니다:

estimator: 사용할 모델 객체를 지정합니다.
param_grid: 탐색할 하이퍼파라미터의 값들을 사전 형태로 지정합니다.
scoring: 모델의 성능을 평가하기 위한 지표를 지정합니다.
cv: 교차 검증을 수행할 폴드 수를 지정합니다.
refit: 최적의 하이퍼파라미터로 모델을 재학습할지 여부를 지정합니다.
GridSearchCV는 지정한 하이퍼파라미터 조합에 대해 교차 검증을 수행하고, 최적의 조합을 찾기 위해 평가 지표를 기반으로 그리드 서치를 수행합니다. 이후 최적의 모델과 하이퍼파라미터 조합을 사용하여 모델을 학습하고 예측을 수행할 수 있습니다.

 

예시 코드

** sklearn 모듈이 없다면 터미널에 아래 문장을 입력해서

[pip install -U scikit-learn]설치해주세요. (https://scikit-learn.org/stable/install.html)

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 데이터 로드
iris = load_iris()
X = iris.data
y = iris.target

# 학습 데이터와 테스트 데이터로 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 모델 객체 생성
model = RandomForestClassifier()

# 탐색할 하이퍼파라미터 그리드 설정
param_grid = {
    'n_estimators': [100, 200, 300],
    'max_depth': [None, 5, 10],
    'min_samples_split': [2, 4, 6]
}

# GridSearchCV를 사용하여 최적의 하이퍼파라미터 탐색
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X_train, y_train)

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

# 최적의 모델로 예측 수행
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)

이 예시 코드는 RandomForestClassifier 모델을 사용하여 붓꽃 데이터셋을 분류하는 문제에서 최적의 하이퍼파라미터를 탐색합니다. n_estimators, max_depth, min_samples_split 세 가지 하이퍼파라미터를 그리드로 설정하고, 5-fold 교차 검증을 수행하여 최적의 조합을 탐색합니다. 최적의 하이퍼파라미터와 최고 성능을 출력한 후, 최적의 모델을 사용하여 테스트 데이터에 대한 예측을 수행합니다.

728x90
반응형