본문 바로가기
머신러닝딥러닝/딥러닝

GridSearchCV 하이퍼파라미터 튜닝 및 파라미터 정리

by orangecode 2023. 5. 23.
728x90
하이퍼파라미터 튜닝이란?

 

HyperParameter란 모델을 학습시키기 이전에 모델의 동작을 제어함으로써, 모델의 성능에 큰 영향을 미칠 수 있는 매개변수를 말한다. HyperParameter의 예시로는 learning rate, hidden layer unit 개수, dropout 비율 등 모델 학습에 영향을 미치면서 직접 조정가능한 매개변수들을 HyperParameter라고 한다.

 

HyperParameter  tunning이란 조정가능한 매개변수인 HyperPrameter들을 이용하여 학습 모델의 성능을 개선하고 최적화할 수 있는 최적의 매개변수를 찾는 과정을 말한다. 

 

대표적인 하이퍼파라미터 튜닝 기법으로는 GridSearchCV, Random Search, Bayesian Optimization, Genetic Algorthms 등이 있다.

GridSearchCV

GridSearchCV는 각각의 파라미터에 대한 조합과 교차검증을 통해 모델의 성능을 평가합니다. 그리드 서치는 하이퍼파라미터들을 순차적으로 입력해 학습을 수행하기 때문에 모든 조합에서의 최적값을 뽑아낼 수 있지만, 시간이 엄청 오래걸린다는 단점이 있다.

파라미터 기능
param_grid 하이퍼파라미터 튜닝을 위해 사용될 파라미터들을 dictionary 형태로 만들어 넣는다.
scoring 각 하이퍼파라미터 조합을 모델평가에 사용되는 성능 지표이다.
cv cross validation, 폴드라는 개념으로 교차검증을 위해 분할되는 수를 의미한다.
verbose iteration 수행 시 수행 결과 메세지를 출력
verbose = 0 (출력안함), verbose = 1(간단한 출력), verbose = 2(파라미터별 메세지 출력)
n_jobs GridSearch 중 실행할 병렬 작업의 수
refit 데이터셋으로 찾은 최적화된 하이퍼파라미터를 사용해 최적 모델 재훈련할지 여부 결정

 

 

gridsearchCV 예시코드

#1. 필요한 라이브러리 & 모듈 가져오기
from sklearn.datasets import load_iris
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

# 2. 데이터세트 불러오기
# Load the iris dataset
iris = load_iris()
X = iris.data
y = iris.target

#3. 조정하려는 분류자의 인스턴스를 만들어준다.
# Create the SVM classifier
svm = SVC()

#4. gradsearchcv에서 사용할 하이퍼파라미터 변수들을 정의한다.
# Define the hyperparameters and their possible values
param_grid = {
    'C': [0.1, 1, 10],
    'kernel': ['linear', 'rbf'],
    'gamma': [0.1, 1, 10]
}


#5. GreadSearchCV 개체를 만들고  분류자, 하이퍼파라미터, cv를 지정한다.
# Perform GridSearchCV
grid_search = GridSearchCV(estimator=svm, param_grid=param_grid, cv=5)

6. GridsearchCV를 이용하여 GradSearchCV를 수행한다.
grid_search.fit(X, y)

7. GridSearchCV 수행 후 최적의 하이퍼 파라미터를 PRINT로 확인한다.
# Print the best hyperparameters and best score
print("Best Hyperparameters: ", grid_search.best_params_)
print("Best Score: ", grid_search.best_score_)
반응형

댓글