그리드서치와 랜덤서치
by Cori개요
그리드서치와 랜덤서치가 무엇인지 알아보고, 어떻게 활용하는지 살펴본다.
내용 정리
1. 그리드서치
0) 정의
-> 모델의 성능을 가장 높게 하는 최적의 하이퍼파라미터를 찾는 방법으로, 하이퍼파라미터 후보들을 하나씩 입력해 모델의 성능이 가장 좋게 만드는 값을 찾는다.
1) 함수
sklearn.model_selection.GridSearchCV
-> 시도해볼 하이퍼파라미터들을 지정하면 모든 조합에 대해 교차검증 후 제일 좋은 성능을 내는 하이퍼파라미터 조합을 찾아준다.
· fit(X, y): 학습
· predict(X): 분류-추론한 class, 회귀-추론한 값
· predict_proba(X): 분류문제에서 class별 확률을 반환
· cv_results_: 파라미터 조합별 평가 결과를 Dictionary로 반환
· best_params_: 가장 좋은 성능을 낸 parameter 조합을 반환
· best_estimator_: 가장 좋은 성능을 낸 모델 반환
· best_score_: 가장 좋은 점수 반환
· estimator: 모델객체 지정
· params: 하이퍼파라미터 목록을 dictionary로 전달 (파라미터명: [파라미터 값 list] 형식)
· scoring: 평가 지표
· 평가 지표를 생략할 시 분류: accuarcy, 회귀: R^2를 기본 평가지표로 설정
· 평가 지표가 여러 개일 경우, list로 묶어서 지정한다.
· refit: best paramter를 정할 때 사용하는 평가지표로, scoring에 여러 개의 평가지표를 설정한 경우 refit을 반드시 설정해야 한다.
· cv: 교차검증 시 fold 개수
· n_jobs: 사용할 CPU 코어 개수 (None: 1(기본값), -1: 모든 코어 다 사용)
* 시도할 하이퍼파리미터와 값들이 너무 많아지면 많은 시간이 소모됨
ex) 1번 파라미터: 10개, 2번 파라미터: 5개, 3번 파라미터: 5개, 4번 파라미터: 10개 => 10 * 5 * 5 * 10 = 2500개 조합
2) 활용
· 데이터셋 로드 및 Train / Test Set 나누기
· DecisionTree GridSearch 생성
· 학습
· 결과 확인
필요 정보만 조회해보자 (score)
가장 좋은 평가점수와 파라미터 조합도 확인할 수 있다.
· best model을 이용해 test set 최종 평가
grid search의 best_estimator를 이용하면 best parameter로 학습한 모델을 반환한다.
* gridsearch를 생성할 때 scoring에 다음과 같이 전달해주면 여러 성능지표를 확인할 수 있다.
다만 이렇게 gridsearch를 생성하였을 경우에는, refit을 통해 best parameter를 선택할 평가지표를 설정해야 한다.
2. 랜덤서치
0) 정의
-> GridSearch와 동일한 방식으로 사용하지만, 모든 조합을 다 시도하지 않고 각 반복마다 임의의 값을 대입해 지정한 횟수만큼만 평가
1) 함수
sklearn.model_selection.RandomizedSearchCV
· estimator: 모델객체 지정
· param_distributions: 하이퍼파라미터 목록을 dictionary로 전달 ('파라미터명': [파라미터 값 list] 형식)
· n_iter: 파라미터 검색 횟수
· scoring: 평가 지표
· refit: best parameter를 정할 때 사용하는 평가지표로, scoring에 여러 평가지표를 설정한 경우 설정한다.
· cv: 교차검증 시 fold 개수
· n_jobs: 사용할 CPU 코어 개수 (None: 1 (기본값), -1: 모든 코어 다 사용)
· fit(X, y): 학습
· predict(X): 분류-추론한 class, 회귀-추론한 값을 반환한다. (제일 좋은 성능을 낸 모델)
· predict_proba(X): 분류 문제에서 class별 확률을 반환한다. (제일 좋은 성능을 낸 모델)
* 다음은 결과를 조회할 때 사용하는 속성 값들로, 모델을 fit()한 후에 호출할 수 있다.
· cv_results_: 파라미터 조합 별 평가 결과를 Dictionary로 반환
· best_params_: 가장 좋은 성능을 낸 parameter 조합을 반환
· best_estimators_: 가장 좋은 성능을 낸 모델 반환
· best_score_: 가장 좋은 점수를 반환
2) 활용
· 데이터셋 로드 및 Train / Test Set 나누기
· DecisionTree RandomSearch 생성
생성 시 보통 cv는 4~5를 많이 주며 (75%~80%), n_iter_search 값은 60번 정도 수행할 경우 잘 나온다.
· 모델 학습
· 결과 확인
가장 좋은 점수 & 파라미터 조회
· best model을 이용해 test set 최종 평가
random search의 best_estimator를 이용하면 best parameter로 학습한 모델을 반환한다.
'AI > Machine Learning' 카테고리의 다른 글
앙상블 Voting (0) | 2021.12.01 |
---|---|
불균형 클래스 분류 다루기 (0) | 2021.11.28 |
과적합과 일반화 (0) | 2021.11.26 |
수치형 데이터 전처리 (0) | 2021.11.25 |
One-Hot Encoding (0) | 2021.11.24 |
블로그의 정보
코딩하는 오리
Cori