K-Fold 교차 검증이란 뭔가
[교차검증은 뭔가]
- Cross-Validation 이라고도 함
- 머신러닝 모델을 설계 할 때 필요한 파라미터를 Hyperparameter 가 필요한데 얘를 튜닝해주는 거
-----> 하이퍼파라미터가 뭔지 모르겠지만 일단 w, b 같은거겠거니 하고 넘어감
> 모델에 따라서 필요한 Hyperparameter 가 한 둘이 아닐것임
> 그런데 이 Hyperparameter가 서로 영향을 주고받는다던지 엄청 많다던지 하면 튜닝하기가 엄청 복잡함
> 요것을 튜닝해주는 방법이 여러가지인데 그 중에 하나가 교차검증이고 그 중에 K-Fold 교차검증이란 것이 있다고 한다.
- 오버피팅을 막는 효과도 있음 (사실 이것이 교차검증하는 제일 중요한 이유)
> 오버피팅이란 모델을 똑똑하게 만들 때 학습 데이터를 막 넣어서 똑똑하게 만드는데
얘가 학습데이터에 너무 심취해서 학습 데이터는 판별을 엄청 잘하는데 실제 다른 이미지 들고와서 판별하라고 하면 잘 못하는 현상
-> 모델을 여기저기 쓸 수 있게 해야하는데 학습 데이터만 판별을 잘하니까 무쓸모 됨.'
- 데이터를 테스트 데이터랑 검증 데이터로 나눠서 테스트 데이터로 학습시키고 검증 데이터로 검증하는 방식
[ K-Fold 교차 검증]
- 이 교차 방식은 학습 데이터를 K개의 폴드로 나눠서 교차검증하는 방식이다.
- 데이터는 다음과 같이 나눈다
[데이터]
|-----[학습데이터]
| |----- 폴드 1 데이터
| |----- 폴드 2 데이터
| |-----(....)
| |----- 폴드 k 데이터
|-------[검증데이터]
- 학습 데이터를. K개의 폴드 데이터로 나눔
- 각 폴드별로 데이터 분류하는 방식은 랜덤
- 여기서 1부터 k-1개까지 테스트 폴드라고 하고, 제일 마지막꺼(k번째 폴드)는 검증용 폴드라고 정한다.
- 교차 검증 순서
1. 튜닝할 hyperparameter 정하기
2. 학습데이터] - 폴드1 데이터를 학습시키기
3. 폴드 k 데이터로 검증하기
4. 검증하며 하이퍼파라미터가 나옴 ---> 이 과정을 잘 모르겠음. 어떻게 하이퍼파라미터가 나오나. 일단 모르겠으니 나오는가보다 하고 넘어감
5. 2번부터 4번까지 반복함. 1번 폴드 했으니까 이제 2번 폴드 학습시킥고 k폴드로 검증함
6. 나머지 폴드에 대해서 반복함. K개 폴드로 나눴으니까 k-1번 반복함(마지먹거는 검증용이니까 뺀다)
7. 폴드 하나 학습시키고 검증할 때마다 한 세트의 하이퍼파라미터가 나옴
8. K-1번 반복했으니까 하이퍼파라미터 세트도 k-1개 나올것임
9. 각 하이퍼파라미터 세트에 대해 평균을 구한다
10. 평균을 구한 평균하이퍼파라미터를 검증데이터(k폴드에 있는 검증용 폴드 말고 맨 첨에 학습/검증 데이터 나눈 것 중에 그거) 로 검증한다.