[ML] Cross validation(교차 검증)의 개념, 의미

상세 컨텐츠

본문 제목

[ML] Cross validation(교차 검증)의 개념, 의미

프로그래밍 ( Programming )/머신러닝 ( ML )

by I Got this memyself 2021. 11. 22. 21:38

본문

머신러닝을 수행하기 위해서 목표로 하고자 하는 영역에서 주어진 데이터에 어떠한 경향이 있는지를 파악하도록 하는 학습과정이 필요로 합니다. 

Data를 통해서 좋은 네트워크를 만들수 있으며 그리고 데이터를 이용하여 좋은 네트워크인지를 판단할 수가 있습니다. 

Cross validation에 대해서 적어보기 이전에 우선 머신러닝에서 다루는 data의 개념들을 먼저 살펴보겠습니다.

 

주어진 data가 있을때 우리는 주어진 데이터를 이용하여 목적에 맞는 모델을 만들어야 합니다. 

모델을 만들기 위해서는 위에서 언급드렸다시피 학습과정이 필요한데, 주어진 data를 학습 데이터 (Training Set)로 활용할 수 있습니다. 하단과 같이 data 전체를 학습 데이터로 활용이 가능합니다. 

그러나 문제점은 머신러닝 모델은 만들수있겠으나 그러나 문제점이 발생하게 됩니다. 학습을 통해서 얻어진 결과물이 좋은 결과물인지 아닌지를 평가하기 위해서 필요한 데이터가 없다는 것입니다. 만약 학습에 사용하였던 데이터를 평가를 위해서 다시 사용한다면 학습에 사용되었던 데이터이므로 당연히 좋은 결과만 도출해낼 수밖에 없기에 객관적으로 판단하기가 힘듭니다. 

때문에 모델을 평가하기 위해서는 새로운 데이터가 필요합니다. 새로운 데이터를 얻을수는 있지만 환경에 따라서 관련된 데이터를 얻기가 힘들 수도 있으며 반복적인 작업이 필요하다는 단점이 있기에 이러한 문제점을 해결하기 위해서는 주어진 첫 번째 데이터 모음에서 일정 부분을 평가 데이터 (Test data)로 활용하는 것입니다. 

해당 그림처럼 전체에서 일정 부분을 Test를 위해서 사용하게 됩니다. ( 학습을 할때는 오직 학습 데이터만 사용합니다 ) 추가적으로 Test data를 전체에서 할당하는 정도는 보통 20~40%를 할당한다고 합니다.

하지만 문제점이 다시 발생하는 상황이 존재합니다. 그것은 하이퍼 파라미터(Hyperparameter)를 정할 때 문제가 발생하는 것으로써 기존 데이터를 트레이닝 셋과 테스트 셋으로 나누는 경우 평가를 위해 사용해야 할 테스트 셋이 하이퍼 파라미터 적합에 사용되게 됩니다.


* 하이퍼 파라미터 : 파라미터는 스스로 정해지게 되지만, 초월 매개변수라는 의미로 사용자가 직접 모델링을 할때 직접 세팅해주는 값입니다. 세팅을 해주기 위해서는 대부분 휴리스틱 한, 경험 법칙에 의거하여 결정되게 됩니다. 

(종류 : 학습률, 손실함수, 정규화 파라미터, 미니 배치 크기, 훈련 반복 횟수, 은닉층의 뉴런 개수, 가중치 초기화... )


때문에 하이퍼 파라미터 자체가 테스트 셋에 영향을 받기에 여기서 하나의 데이터를 추가하게 됩니다. 

Validation set의 역할은 이러한 문제점을 해결해주기 위해서 도입된 개념으로서 모형의 파라미터 추정에는 학습 데이터가 사용되고 하이퍼 파라미터 설정에는 Validation 데이터가 사용됩니다. 마지막으로 테스트 데이터를 이용하여 모델의 정확도를 측정하게 됩니다. 

추가적으로 K-fold Cross Validation이라는 개념이 있습니다. K는 숫자로서 전체 데이터에서 Test 데이터를 제외한 학습 데이터에서 몇 등분을 할 것인지를 결정해주는 숫자입니다. 만약 K가 2라면 학습 데이터를 2등분 하게 됩니다. 하단의 그림과 같이 2가지의 경우가 생기는데 K 등분을 수행한 후 학습 데이터와 Validation을 번갈아가며 바꿔서 진행하는 방식이 바로 Cross Validation이 되겠습니다. 

* 정리 : Data = Training + Test + Validation 

 

728x90
반응형

관련글 더보기

댓글 영역

페이징