[Model Development] 파라미터 튜닝 - 모형 최적화 (GridSearchCV)

하이퍼파라미터 튜닝 / 최적화 과정을 통해 예측 모델의 성능을 향상시킴.

  • Validation_curve : 단일 하이퍼 파라미터 최적화
  • GridSearchCV : 그리드를 사용한 복수 하이퍼 파라미터 최적화
  • ParameterGrid : 복수 파라미터 최적화용 그리드 ( 수동으로 GridSearchCV )

 

Validation_curve 단일 하이퍼 파라미터 최적화

- param_range : 테스트할 범위

- cv : k-fold cross validation n번 테스트

- scoring : 최적화 기준

Training Score VS Cross-Validation Score 간극이 커지는 지점 부근 좁은 Scale을 다시 param_range로 설정하여 확인.

 

GridSearchCV 
다차원. grid search를 사용해 자동으로 복수개의 내부 모형 생성 후 최적 파라미터를 찾아준다.

 

from sklearn.model_selection import GridSearchCV

# 랜덤포레스트 하이퍼파라미터 튜닝
rf_reg = RandomForestRegressor()

# 파라미터 조합 range 딕셔너리 형태로 생성
param_grid = {
    "n_estimators":[100,500,1000],
    "max_depth":[10, 30, 50],
    "max_features":[6, 8, 10, 12, 14, 16],
    'min_samples_leaf' : [8, 12, 18 ],
    'min_samples_split' : [8, 16, 20]
}

# GridSearchCV 객체 생성
rf_reg_tuned = GridSearchCV(estimator=rf_reg,
                            param_grid=param_grid, 
                            cv=3, # k-fold cross validation
                            n_jobs=-1, # 병렬처리
                            verbose=2)

# fit 메서드 호출
rf_reg_tuned.fit(X_train_scaled, y2)

# 최고 점수를 낸 파라미터 가진 모형 
rf_reg_tuned.best_estimator_

 

# n_jobs = -1 :  all of your processors will be used

(계산을 담당하는 core 몇 개의 프로세스를 사용할 것인가를 지정, 갯수 만큼만 n_jobs를 늘리면 속도가 빨라진다.)

*n_jobs를 인수로 가진 ML모델 : RandomForest, DecisionTree