GridSearchCV 와 RandomizedSearchCV는 최적의 하이퍼파라미터 값을 찾아주는 튜닝 방법이다.
여기서 하이퍼파라미터는 어떻게 설정하냐에 따라 모델의 성능이 달라진다. 모델 성능을 더 개선하고 싶을 때 사용한다.
1. GridSearchCV
- 시도해볼 파라미터를 지정하면, 모든 조합에 대해 교차검증 후 가장 좋은 성능을 내는 하이퍼파라미터 조합을 찾는다.
- 단, 하이퍼파라미터 값들이 많아지면 시간이 오래걸린다는 단점이 있다.
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
sklearn.model_selection.GridSearchCV
Examples using sklearn.model_selection.GridSearchCV: Release Highlights for scikit-learn 0.24 Release Highlights for scikit-learn 0.24 Feature agglomeration vs. univariate selection Feature agglome...
scikit-learn.org
GridSearchCV(estimator, param_grid, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False)
주요 파라미터 설명
- estimator : 모델 객체를 지정해준다.
- param_grid : 사용될 하이퍼파라미터를 dictionary 형태로 만들어서 넣는다.
- scoring : 예측 성능을 측정할 평가 방법을 넣는다. 보통 accuracy 로 지정하여서 정확도로 성능 평가를 한다.
- cv : 교차 검증에서 몇개로 분할되는지 지정한다.
- n_jobs : 사용할 CPU 코어 개수 (1: 기본값, -1: 모든 코어 다 사용)
max_depth = list(range(3, 20, 2))
max_features = [0.3, 0.5, 0.7, 0.8, 0.9]
parameters = {'max_depth':max_depth, 'max_features':max_features}
from sklearn.model_selection import GridSearchCV
clf = GridSearchCV(model, parameters, n_jobs=-1, cv=5, scoring='accuracy', verbose=2)
clf.fit(X_train, y_train)
2. RandomizedSearchCV
- GridSearch와 동일한 방식으로 사용하지만 모든 조합을 다 시도하지는 않고, 각 반복마다 임의의 값만 대입하여 지정 횟수만큼 평가한다.
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html
sklearn.model_selection.RandomizedSearchCV
Examples using sklearn.model_selection.RandomizedSearchCV: Release Highlights for scikit-learn 0.24 Release Highlights for scikit-learn 0.24 Faces recognition example using eigenfaces and SVMs Face...
scikit-learn.org
RandomizedSearchCV(estimator, param_distributions, *, n_iter=10, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score=nan, return_train_score=False)
주요 파라미터 설명
- estimator : 모델 객체를 지정해준다.
- param_distributions : 사용될 하이퍼파라미터를 dictionary 형태로 만들어서 넣는다.
- n_iter : 파라미터 검색 횟수
- scoring : 예측 성능을 측정할 평가 방법을 넣는다. 보통 accuracy 로 지정하여서 정확도로 성능 평가를 한다.
- cv : 교차검증 시 fold 개수
- n_jobs : 사용할 CPU 코어 개수 (1: 기본값, -1: 모든 코어 다 사용)
from sklearn.model_selection import RandomizedSearchCV
param_distributions = {'max_depth': np.random.randint(3, 20, 10), 'max_features':np.random.uniform(0.5, 1, 10)}
clfr = RandomizedSearchCV(model, param_distributions, n_iter=10, cv=5, scoring='accuracy', n_jobs=-1, random_state=42)
clfr.fit(X_train, y_train)
'Python > ML' 카테고리의 다른 글
[ML] 피처 엔지니어링(Feature Engineering) (0) | 2022.11.10 |
---|---|
[ML] Bike Sharing Demand (0) | 2022.11.08 |
[ML] One-Hot-Encoding (0) | 2022.11.03 |
[ML] Machine Learning 들어가기 (0) | 2022.11.02 |
[ML] 모델 평가 (0) | 2022.11.01 |