1. GridSearchCV란?
머신러닝에서 모델의 성능향상을 위해 쓰이는 기법 중 하나
사용자가 모델의 하이퍼 파라미터 값을 리스트로 입력하면 값에 대한 경우의 수마다 예측 성능을 측정 평가하여 비교하면서 최적의 하이퍼 파라미터 값을 찾는 과정을 진행한다.
GridSearchCV가 없다면 max_depth 가 3일때 가장 최적의 스코어를 뽑아내는지 1일때 가장 최적인 스코어를 뽑아내는지 일일이 학습을 해야 한다. 하지만 grid 파라미터 안에서 집합을 만들고 적용하면 최적화된 파라미터를 뽑아낼 수 있다.
시간이 오래걸린다는 단점이 있다.
2. GridSearchCV 생성자
- estimator : classifier, regressor, pipeline 등 가능
- param_grid : 튜닝을 위해 파라미터, 사용될 파라미터를 dictionary 형태로 만들어서 넣는다.
- scoring : 예측 성능을 측정할 평가 방법을 넣는다. 보통 accuracy 로 지정하여서 정확도로 성능 평가를 한다.
- cv : 교차 검증에서 몇개로 분할되는지 지정한다.
- refit : True가 디폴트로 True로 하면 최적의 하이퍼 파라미터를 찾아서 재학습 시킨다.
3. Iris 데이터를 이용해 GridSearchCV 실습
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.metrics import accuracy_score
iris_data = load_iris()
label = iris_data.target
data = iris_data.data
# train, test set 분리
X_train, X_val, y_train, y_val = train_test_split(data, label, test_size=0.2)
# GridSearchCV의 param_grid 설정
params = {
'max_depth': [2, 3],
'min_samples_split': [2, 3]
}
dtc = DecisionTreeClassifier()
grid_tree = GridSearchCV(dtc, param_grid=params, cv=3, refit=True)
grid_tree.fit(X_train, y_train)
print('best parameters : ', grid_tree.best_params_)
print('best score : ', grid_tree.best_score_)
em = grid_tree.best_estimator_
pred = em.predict(X_val)
accuracy_score(y_val, pred)
# out
best parameters : {'max_depth': 2, 'min_samples_split': 2}
best score : 0.9416666666666668
0.9333333333333333
'Data Analytics > MachineLearning' 카테고리의 다른 글
[ML] 지도학습의 회귀 - 규제선형 모델 알아보기(릿지, 라쏘, 엘라스틱넷) (0) | 2022.11.07 |
---|---|
[ML]LinearRegression을 이용해서 보스턴 주택가격 예측해보기 / knn 모델과 비교해보기 (0) | 2022.11.07 |
[ML] 머신러닝 최적화 방법, 경사하강법(Gradient Descent) 알아보기 / 확률적 경사하강법 (0) | 2022.11.07 |
[ML] 머신러닝 지도학습의 회귀(regression)의 종류와 실습해보기 (0) | 2022.11.07 |
[ML] 추천 시스템 개발을 위한 surprise 라이브러리 - 컨텐츠 기반 필터링 (0) | 2022.10.02 |
댓글