본문 바로가기
Machine Learning

[Machine Learning] Grid Search 그리드 서치

by 자몽먹은토끼 2023. 7. 22.
728x90
반응형

그리드 서치(Grid Search) : 좋은 성능을 내는 하이퍼 파라미터를 찾아내는 방법

 

아 그전에 하이퍼 파라미터를 먼저 알아야 하는데 그건

>> https://data-yun.tistory.com/7

 

[Machine Learning] Hyper Parameter 하이퍼 파라미터

파라미터는 모델 내부에서 결정되는 변수이다 각 파라미터는 데이터를 통해 구해지며 모델 내부 자체적으로 결정되는 값이기 때문에, 사용자가 임의로 설정할 수는 없다. ## 파라미터 VS 하이퍼

data-yun.tistory.com

 

 

 

 

나는 사전처럼 정확하게 정의할 수는 없다. 그래서 당연히 내가 말한거에 틀린 부분이 분명 있을것이다.

그래도 내가 이해한대로 쉽게 풀어서 적어보는 단계..

혹시 그런부분이 있다면 알려주세요.. 저도 수정하고 배우겠습니답 

 

 

; 모델을 훈련시킬때 사용되는 모델 내 파라미터를 조정하는 방법

모델 내에서 n_estimator나 cv와 같은 파라미터의 값을 어떻게 조정해야 할지 모를 때 사용한다.

굳이 정해주지 않으면 default값으로 들어가기는 하지만 물론 안넣으면 오류가 나는 모델/함수 도 있다

어떤 값으로 지정을 해야 좋은 성능의 모델을 만들수 있을 것인가를 당연히 고민할 것이다.

머신러닝을 공부하는 사람들이라면..?

 

 

#그리드 서치 실행
from sklearn.model_selection import GridSearchCV
from lightgbm import LGBMRegressor
lgb = LGBMRegressor()
parameters = {'colsample_bytree': [0.87, 0.88, 0.89, 0.9],
              'learning_rate': [0.05, 0.1, 0.11], # 줄일수록 높은성능?
              'max_depth': [20], # feature가 많다면 크게 설정
              'min_child_weight' : [4],
              'n_estimators': [5000], # default 100. 1000이상하면 과적합우려
              'subsample': [0.2],
              'min_data_in_leaf': [10], # 과적합 줄이기
              'min_samples_split':[4]
              }
lgb_grid = GridSearchCV(lgb,
                        parameters,
                        scoring = 'r2',
                        cv = 8,
                        n_jobs = -1, # -1: 모든 프로세서를 사용
                        verbose=True)
lgb_grid.fit(X_train, y_train)

그리드서치 파라미터로 모델이름과 그 모델에 대한 파라미터를 넣어준다.

이때 해당 모델에 파라미터가 너무 많아서 그 이전에 모델에 대한 파라미터를 딕셔너리화 하여 따로 선언해준다.

scoring 에 따라서 최적화 되는 파라미터가 달라진다.

위 코드는 r square 스코어링을 기준으로 했을때 최적의 파라미터를 찾도록 설정하였다.

 

 

 

lgb_grid.best_params_

어떤 파라미터가 가장 최적이었는지 확인해보고 싶다면 위와 같은 코드를 써보자!

그리드 서치 결과 최적의 파라미터

pred= lgb_grid.predict(X_test)
r2_score(y_test, pred)

r2 로 최적화 파라미터를 찾았으니 r2결과를 확인해보면

짠!

목표는 0.76 이었는데..

728x90
반응형

'Machine Learning' 카테고리의 다른 글

[ML] 앙상블 기법 정리  (0) 2024.10.30
DevOps란?  (1) 2024.02.24
[Machine Learning] SMOTE  (0) 2023.07.23
[Machine Learning] Hyper Parameter 하이퍼 파라미터  (0) 2023.07.23
ML - day1  (0) 2023.07.18