일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- PCA
- Classification
- AI
- OpenAI
- 티스토리챌린지
- 회귀
- 딥러닝
- 머신러닝
- 지도학습
- 오블완
- LG Aimers
- deep learning
- LG Aimers 4th
- supervised learning
- ChatGPT
- LG
- 분류
- GPT-4
- 해커톤
- Machine Learning
- gpt
- regression
- LLM
- Today
- Total
SYDev
Chapter 05-2: 교차 검증과 그리드 서치 본문
검증 세트의 필요성을 이해하여 교차 검증 방법을 학습하고,
그리드 서치와 랜덤 서치를 이용해 최적의 하이퍼파라미터를 찾아보자.
검증 세트
- 테스트 세트로 일반화 성능을 올바르게 예측하려면 가능한 테스트 세트를 사용하지 말고, 모델을 만들고 마지막에 한 번 사용하는 것이 좋다.
- 테스트 세트를 사용하지 않고, 훈련 세트를 또 나누어 임시로 사용하는 데이터셋을 검증 세트(validation set)라 부른다.
- 이렇게 나눈 검증 세트를 이용하여 파라미터를 바꿔가며 최적의 파라미터를 찾은 후, 훈련 세트와 검증 세트를 합쳐 해당 파라미터로 모델을 학습한다.
- 마지막으로 테스트 세트에서 최종 점수를 평가한다.
(4157, 3) (1040, 3)
-> 원래 5197개였던 훈련 세트가 4157개로 줄고, 검증 세트는 1040개
0.9971133028626413
0.864423076923077
-> 훈련세트에 과대적합!!, 매개변수를 바꿔 더 좋은 모델을 찾아야 한다.
교차 검증
- 훈련 데이터가 많을수록 좋은 모델을 만들기에 좋지만, 검증 세트의 크기가 작아지면 검증 점수가 불안정해진다. 이럴때 교차 검증을 이용하면 문제가 해결된다.
- 교차 검증(cross validation): 검증 세트를 떼어 내어 평가하는 과정을 여러 번 반복하는 방식이다.
- 교차 검증 기법에는 k-겹 교차 검증(k-Fold Cross Validation), 계층별 k-겹 교차 검증(Stratified k-Fold Cross Validation) 등이 있다.
k-겹 교차 검증
- 훈련 데이터셋을 검증 데이터셋으로 나누는 과정을 k번 반복하고, k개의 검증 점수를 평균한 것이 학습 모델의 성능이 된다.
{'fit_time': array([0.03020883, 0.05241323, 0.03527045, 0.0348165 , 0.02028418]),
'score_time': array([0.00563622, 0.00165391, 0.01483893, 0.00180101, 0.00155759]),
'test_score': array([0.86923077, 0.84615385, 0.87680462, 0.84889317, 0.83541867])}
- fit_time: 모델을 훈련하는 시간
- score_time: 모델을 검증하는 시간
- cross_validate() 함수의 디폴트는 5-폴드 교차 검증
0.855300214703487
0.855300214703487
0.8574181117533719
하이퍼파라미터 튜닝
- 하이퍼파라미터 튜닝: 사용자가 직접 지정하는 파라미터인 하이퍼파라미터의 최적의 값을 가지는 모델을 찾는 과정을 의미한다.
- 그리드 서치(Grid Search): 사이킷런에서 제공하는 하이퍼파라미터 튜닝을 위한 도구
- n_jobs: 병렬 실행에 사용할 CPU 코어 수, -1로 설정할 시에 시스템에 있는 모든 코어를 사용
0.9615162593804117
{'min_impurity_decrease': 0.0001}
[0.86819297 0.86453617 0.86492226 0.86780891 0.86761605]
{'min_impurity_decrease': 0.0001}
{'max_depth': 14, 'min_impurity_decrease': 0.0004, 'min_samples_split': 12}
0.8683865773302731
- np.arange(a, b, c): a부터 시작하여 b가 될 때까지 c를 계속 더한 배열
- np.range(a, b, c): np.arange()와 비슷하지만, 정수만 사용할 수 있는 함수
랜덤 서치
- 랜덤 서치(Random Search): 그리드 서치와 방식은 비슷하지만, 모든 조합을 시도하지 않고 각 반복마다 임의의 값을 대입해 지정한 횟수만큼만 평가하는 방식
- 매개변수의 값이 수치일 때, 값의 범위나 간격을 미리 정하기 어려울 수 있으며, 너무 많은 매개변수 조건이 있어 그리드 서치 수행이 오래 걸릴 수 있을 때, 랜덤 서치를 사용하면 좋다.
{'max_depth': 39, 'min_impurity_decrease': 0.00034102546602601173, 'min_samples_leaf': 7, 'min_samples_split': 13}
0.8695428296438884
0.86
- uniform(a, b): a에서 b 사이의 범위 내 실수 배열 생성, 샘플링 횟수는 RandomizedSearchCV의 n_iter 매개변수로 지정
- randint(a, b): a에서 b 사이의 범위 내 정수 배열 생성, 샘플링 횟수는 RandomizedSearchCV의 n_iter 매개변수로 지정
참고자료
- 박해선, <혼자 공부하는 머신러닝+딥러닝>, 한빛미디어(주), 2022.2.4
- https://wooono.tistory.com/105
[ML] 교차검증 (CV, Cross Validation) 이란?
교차 검증이란? 보통은 train set 으로 모델을 훈련, test set으로 모델을 검증한다. 여기에는 한 가지 약점이 존재한다. 고정된 test set을 통해 모델의 성능을 검증하고 수정하는 과정을 반복하면, 결
wooono.tistory.com
[ML] 그리드서치와 랜덤서치
[개요] 그리드서치와 랜덤서치가 무엇인지 알아보고, 어떻게 활용하는지 살펴본다. [내용 정리] 1. 그리드서치 0) 정의 -> 모델의 성능을 가장 높게 하는 최적의 하이퍼파라미터를 찾는 방법으로,
cori.tistory.com
[Machine learning] 쉽게 설명하는 Grid search - 모델 성능을 최고로 만드는 hyper parameter를 찾아서 (200727)
index 1. Grid search 의 정의 2. 코드 구현 및 결과 3. 유사한 다른 방법들 1. Grid search 란 무엇인가? 0) 컨셉 : 모델에게 가장 적합한 하이퍼 파라미터를 찾기 Grid search (격자 탐색) 은 모델 하이퍼 파라미
huidea.tistory.com
'KHUDA 4th > 머신러닝 기초 세션' 카테고리의 다른 글
[KHUDA 4th] 머신러닝 4주차 기초 세션 (08.16) (0) | 2023.08.25 |
---|---|
Chapter 05-3: 트리의 앙상블 (0) | 2023.08.22 |
Chapter 05-1: 결정 트리 (0) | 2023.08.22 |
[KHUDA 4th] 머신러닝 3주차 기초 세션 (08.16) (1) | 2023.08.19 |
Chapter 04-2: 확률적 경사 하강법 (0) | 2023.08.14 |