areum

[Machine Learning] GridSearchCV 하이퍼 파라미터 튜닝 본문

Programming/Machine Learning

[Machine Learning] GridSearchCV 하이퍼 파라미터 튜닝

armmy 2022. 12. 1. 15:44
728x90

GridSearchCV 간단한 정의

GridSearchCV란 사용자가 직접 모델의 하이퍼 파라미터 값을 리스트로 작성하여 경우의 수마다 예측 성능을 측정하여 비교하면서 최적의 하이퍼 파라미터 값을 찾는 기법입니다.


from sklearn.model_selection import GridSearchCV

# 아래 params는 랜덤포레스트 파라미터로 실행하였습니다.
# list로 작성할 수 있지만 아래와 같이 작성해주면 훨씬 더 많은 범위의 파라미터 튜닝이 가능합니다.
params = {'n_estimators' : list(range(50,400,10)),'max_depth' : list(range(4,20,15)),
    	  'min_samples_leaf' : list(range(4,20,1)),'min_samples_split' : list(range(2,20,1))}
          
grid_cv = GridSearchCV(clf, param_grid=params, scoring='accuracy', cv=5, n_jobs=-1, verbose=2)
grid_cv.fit(x_train, y_train)

# 모든 파라미터의 경우의 수 과정을 보여줍니다.
# 저는 위 파라미터 값들마다 정확도를 확인해보기위해 엑셀파일로 뽑아서 살펴보았어요 ! )
score_df=pd.DataFrame(grid_cv.cv_results_)
score_df.to_csv("/save/score_df_rf.csv")

# 예측 정확도 확인
best_params = pd.DataFrame.from_records([grid_cv.best_params_])
print('best_parameter:',best_params)
print('예측 정확도:{:.4f}'.format(grid_cv.best_score_))

 

  • n_jobs=-1 : cpu메모리 전체 사용 (Default값은 1입니다.)
  • verbose =2 : 실행 과정이 실시간으로 추출됩니다. (1로 하면 경우의 수가 total몇개인지만 나옵니다. 2호 하면 total과 과정이 출력됩니다.)
  • cv=5 : 교차검증을 위한 fold횟수
  • grid_cv.cv_results : 하이퍼 파라미터 튜닝의 경우의 수 결과값을 보여줍니다. 하지만 이를 print하게 되면 상당히 많이 때문에 따로csv파일로 추출후 best가 무엇이고, 다른 순위들의 파라미터 값은 무엇으로 선정되어있는지 확인 할 수 있습니다.

GridSearchCV는 모델 성능을 높이기 위한 방법 중 하나입니다. 모델의 성능이 높지 않다면 다양한 파라미터 값들을 넣어보면서 가장 점수가 높은 파라미터를 추출하면 됩니다.

하지만,  시간이 오래 걸리기 때문에 인내심이 필요합니다,,, !