반응형
키워드
검증 세트
검증 세트는 하이퍼파라미터 튜닝을 위해 모델을 평가할 때, 테스트 세트를 사용하지 않기 위해 훈련 세트에서 다시 떼어 낸 데이터 세트이다.
교차 검증
교차 검증은 우선 훈련 세트를 여러 폴드로 나눈 다음, 한 폴드가 검증 세트 역할을 하고 나머지 폴드로 모델을 훈련한다. 그리고 이런식으로 모든 폴드에 대해 검증 점수를 얻어 평균한다.
그리드 서치
그리드 서치는 하이퍼파라미터 탐색을 자동화해 주는 도구이다. 탐색할 매개변수를 나열하면 교차 검증을 수행한 후 가장 좋은 검증 점수의 매개변수 조합을 선택해준다. 그리고 이 매개변수 조합으로 최종 모델을 훈련한다.
랜덤 서치
랜덤 서치는 연속된 매개변수 값을 탐색할 때 유용하다. 탐색할 값을 직접 나열하는 것이 아니라 탐색 값을 샘플링할 수 있는 확률 분포 객체를 전달한다. 지정된 횟수만큼 샘플링하여 교차 검증을 수행하기 때문에 시스템 자원이 허락하는 만큼 탐색량을 조절할 수 있다.
핵심 패키지와 함수
scikit-learn
- cross_validate()
- 교차 검증을 수행하는 함수이다. 첫 번째 매개변수에 교차 검증을 수행할 모델 객체를 전달한다. 두 번째 매개변수에는 특성을, 세 번째 매개변수에는 타깃을 전달한다.
- scoring 매개변수 검증에 사용할 평가 지표를 지정할 수 있다. 기본적으로 분류 모델은 정확도를 의미하는 'accuracy', 회귀 모델은 결정 계수를 의미하는 'r2'가 된다.
- cv 매개변수에 교차 검증 폴드 개수나 스플리터 객체를 지정할 수 있다. 기본값은 5이다. 회귀일 때는 KFold 클래스를 사용하고, 분류일 때는 StratifiedKFold 클래스를 사용하여 5-폴드 교차 검증을 수행한다.
- n-jobs 매개 변수는 교차 검증을 수행할 때 사용할 CPU 코어 수를 지정한다. 기본값은 1로 하나의 코어를 사용한다. -1로 지정하면 시스템에 있는 모든 코어를 사용한다.
- return_train_score 매개 변수를 True로 지정하면 훈련 세트의 점수도 반환한다. 기본값은 False이다.
- GridSearchCV
- 교차 검증으로 하이퍼 파라미터 탐색을 수행한다. 최상의 모델을 찾은 후, 훈련 세트 전체를 사용해 최종 모델을 훈련한다.
- 첫 번째 매개변수로 그리드서치를 수행할 모델 객체를 전달한다. 두 번째 매개변수로 탐색할 모델의 매개변수와 값을 전달한다.
- scoring, cv, n_jobs, return_train_score 매개변수는 cross_validate() 함수와 동일하다.
- RandomizedSearchCV
- 교차 검증으로 랜덤한 하이퍼파라미터 탐색을 수행한다. 최상의 모델을 찾은 후 훈련 세트 전체를 사용해 최종 모델을 훈련한다.
- 첫 번째 매개변수로 그리드서치를 수행할 모델 객체를 전달한다. 두 번째 매개변수에는 탐색할 모델의 매개변수와 확률 분포 객체를 전달한다.
- scoring, cv, n_jobs, return_train_score 매개변수는 cross_validate() 함수와 동일하다.
05-2 단원 내용
시작하기 전에
- 훈련 세트로 훈련된 모델이 테스트 세트로 인해 튜닝되면, 그 모델은 테스트 세트에 맞는 모델이 되는 것이 아닌가에 대해 고찰.
- 보통은 데이터를 훈련 세트, 검증 세트, 테스트 세트로 나눔. 테스트 세트는 실전에 투입하기 전 마지막 단계에서 사용함.
검증 세트
교차 검증
- cross_validate()
- 분할기를 사용한 교차 검증
- 회귀 모델에는 k-fold()를, 분류 모델에는 StratifiedKfold()를 사용.
- StratifiedKfold()를 제어하고 싶을 때, 객체를 만든 후 따로 cross_validate()의 매개변수로 전달해도 됨.
하이퍼파라미터 튜닝
- 그리드서치
- 머신러닝 회귀 모델이나 분류 모델은 거의 그리드서치 작업을 한다고 봐도 무방함.
- 사이킷런에서 제공하는 GridsearchCV() 활용함.
- 교차 검증과 매개변수 탐색을 한꺼번에 수행함.
- 딥러닝에서는 대부분 교차 검증과 그리드서치는 하지 않음. 검증 세트를 나눠서 매개변수 탐색을 하는 것이 일반적임.
- 확률 분포 선택
- scipy의 uniform(), randint() 활용
- 랜덤 서치
- 사이킷런에서 제공하는 RandomizedSearchCV() 활용
최적의 모델을 위한 하이퍼파라미터 탐색
반응형
'AI > 혼공머신' 카테고리의 다른 글
[혼공머신] 06-1 | 군집 알고리즘 (1) | 2024.11.06 |
---|---|
[혼공머신] 05-3 | 트리의 앙상블 (2) | 2024.11.04 |
[혼공머신] 05-1 | 결정 트리 (0) | 2024.10.31 |
[혼공머신] 04-2 | 확률적 경사 하강법 (0) | 2024.10.24 |
[혼공머신] 04-1 | 로지스틱 회귀 (0) | 2024.10.17 |