-
#5. 일반화된 모델을 위한 데이터 분할인공지능/케라스 창시자에게 배우는 딥러닝 2021. 2. 14. 20:54반응형
Under-Fitting → Good Model → Over-Fitting 머신러닝의 목표는 처음 본 데이터에서 잘 작동하는 일반화된 모델을 얻는 것이다. 데이터의 학습이 부족하면 과소적합(Under-Fitting)이 일어나고 데이터의 학습이 필요 이상이 될 경우 과대적합(Over-Fitting)이 발생한다. 이를 방지하기 위해 우리는 데이터를 훈련 데이터(Training Data), 검증 데이터(Validation Data), 테스트 데이터(Test Data)로 나눠 학습하게 된다.
데이터가 적을 경우 훈련 데이터와 테스트 데이터만을 사용하여 테스트 데이터로 모델을 검증하기도 하나, 일반적으로 이러한 방식은 테스트 데이터에 모델을 과대적합 시킬 위험이 있으므로 사용하지 않는다. 검증 데이터의 형태가 모델로 흘러들어가는 이러한 경우를 우리는 정보 누설(Information Leak)이라는 표현을 사용한다. 검증 데이터를 기반으로 모델 조정을 반복할 경우 정보는 모델에 점점 많이 노출되고 이로 인해 검증 데이터에서는 최적의 모델이 만들어지지만 임의의 데이터에 대한 정확성은 기대할 수 없게된다. 이를 방지하기 위해 데이터를 나누는 몇가지 기법이 존재한다.
단순 홀드아웃 검증(Hold-out Validation)은 데이터의 일정량을 테스트 데이터로 분할하고 나머지 데이터를 위 그림과 같이 훈련 데이터와 검증 데이터로 분할한다. 일반적으로 sklearn의 train_test_split() 함수를 활용하여 훈련, 검증, 테스트 데이터를 분할할 수 있기에 코드는 따로 첨부하지 않는다. 머신러닝에 대한 공부를 시작하는 단계에서 가장 빈번하게 활용되는 기법이나 이 기법에는 명확한 단점이 존재한다. 데이터의 절대량이 부족할 시에는 검증, 테스트 데이터가 부족하여 데이터가 다시 셔플될 때 정확도의 편차 역시 증가한다. 이를 위해서 등장한 기법이 K-겹 교차 검증이다.
K-겹 교차검증(K-fold Cross-validation)은 데이터를 동일한 크기의 K개로 분할한다. 이렇게 분할된 데이터는 각각 한번씩 검증 데이터가 되어 학습이 진행되고 모델의 정확도는 각 학습의 정확도의 평균이 된다. 이렇게 교차검증을 진행하면 데이터의 셔플에 따른 정확도의 편차가 대폭 감소한다. 이 기법 역시 sklearn의 cross_validate() 함수를 활용하여 쉽게 구현이 가능하다. 이를 응용한 반복 K-겹 교차검증(Iterated K-fold Cross-validation)은 데이터 분할 전 매번 데이터를 셔플한다. 따라서 이 기법은 모델의 신뢰성은 높이지만 그만큼 검증의 비용이 증가한다.
이러한 셔플링을 활용한 검증 기법은 일반적인 데이터에서 빈번하게 사용되지만 시계열 데이터와 같이 과거와 미래가 존재하는 경우 미래의 정보를 활용하여 과거의 데이터를 검증할 수는 없기에 데이터를 섞지 않고 학습을 진행해야한다.
반응형'인공지능 > 케라스 창시자에게 배우는 딥러닝' 카테고리의 다른 글
#7. 과대적합과 과소적합 (0) 2021.02.14 #6. 데이터 전처리 (0) 2021.02.14 #4. 머신러닝의 분류 (0) 2021.02.14 #3. 신경망의 구성요소 (0) 2021.02.07 #2. 텐서(Tensor) 이해하기 (0) 2021.01.22