본문 바로가기

데이터 기본

K-폴드 교차검증법: 움파룸파의 "A thousand fold!!"

 얼마 전 영화 Wonka에서 휴 그랜트가 연기한 움파룸파가 부르는 노래가 있었다. 움파룸파 송이라고 불리는 중독성이 있는 노래였다. 그중에서 휴 그랜트가 강조해서 반복했던 단어가 있는데, “A thousand folds! (천 배!!)”였다. 도둑맞은 카카오에 대해서 천 배로 값아야 한다는 의미였는데, 뜬금없지만 나는 ‘K-폴드 교차 검증 방법' (K-fold Cross Validation)이 생각 났다. 

Til I've paid my friends back a thousand fold!

A thousand fold?! You gotta be kidding me!

I repeat  
A thousand fold!

 

출처: 웡카 광고영상

 

생각이 난 김에 K-폴드 교차 검증 방법에 대해서 알아보자. 샘플링에서 관련 내용이 나올 수도 있고, 아니면 데이터 모델 구축에서 나올 수도 있는 내용이다. 

데이터 모델의 구축

우선 '모델'이라는 것에 대해서 알아보자. 

 

'모델'은 실세계에서 일어나고 있는 현상 등을 특정 방법을 사용해서 단순화한 후에 여러 가지 방법으로 표현하는 것을 말한다. 그리고 만들어진 '모델'은 유사한 상황 등에서 유사한 목적을 위해 재사용될 수 있다.

데이터 분석을 할 때에도 '모델'은 필요하다. 실세계에서 일어나는 현상 및 문제에 대해서 파악하고, 그것에 대해 모델링을 해서, 추후에 유사한 상황이 벌어질 때 사용하거나, 유사한 상황이 생길지에 대해서 예측하는 게 데이터 분석이기 때문이다. 수학식을 사용하면 간단하거나 복잡하게 함수 형식으로 표현되기 때문에 모델링을 위해서는 수학식이 많이 사용된다. 경제학에서는 경제 현상에 대해서 각 변수에 따른 결과값을 수학식으로 표현하는데, 그것도 모델링의 한 예이다. 

'A'를 넣으면 'B'가 나오는 모델

빅데이터를 다루는 데이터 분석에서는 머신러닝 기법의 모델링이 많이 사용된다. 회귀분석 (Regression Analysis),  베이즈 분류기(Bayes Calssifier), 의사결정 분지도 (Decision Tree), 랜덤 포레스트 (Random Forest), 서포트 벡터머신 (SVM, Support Vector Machine) 인공신경망 등은 지도학습 형태의 머신러닝 기법들이다. 군집분석 (Cluster Analysis), 연관분석 (Association Analysis) 등은 비지도 학습 기법들이다. 이들에 대해서는 다른 포스팅에서 하나씩 다루도록 하겠다.

데이터 모델은 언제 구축하는가?

 앞에서도 간단히 언급했지만, 위에서 설명한 데이터 모델은 언제 필요하게 될까? 데이터 분석의 과정에서 보면 데이터 모델을 구축하는 모델링은 언제 필요할까? 이에 대해 알기 위해, 데이터 분석을 위한 두가지 방법론에 대해서 간략하게 언급하겠다. KDD는 Knowledge Discovery in Databases이고, CRISP-DM은  Cross-Industry Standard Process for Data Mining이다. 자세한 내용은 다른 포스팅을 통해 다시 설명하겠고, 우선은 아래와 같은 과정이 있다는 것만 알자. 즉, 주어진 데이터에 대해서 이해하기 위해서도 모델링 필요하고, 분석한 내용을 정형화 하기 위해서도 필요하며, 추후의 문제를 예측하고 바로 분석할 수 있도록 준비하는 데에도 모델링이 필요하다.

 

KDD 2.0 CRISP-DM
1. 대상 문제 파악 1. 비즈니스 이해
2. 데이터 선정 2. 데이터 이해
3. 데이터 전처리
4. 데이터 변환 3. 데이터 준비
5. 모델 구축 4. 모델링
6. 모델 결과 평가 5. 평가
7. 모델 결과와 시스템의 통합 6. 전개

 

K-폴드 교차검증법이란?

K-폴드 교차검증법(K-Fold Cross Validation Method)는 주어진 데이터세트에 대해 K개의 상호 배타적인 같은 크기를 가진 부분집합(Folds)을 만들고, 각 부분집합이 돌아가면서 훈련/검증/테스트(Training / Validation / Test) 집합의 역할을 수행한다.  이후에 K번 반복된 과정에서 얻어진 결과를 평균하여 모델의 예측 성능을 평가한다. 

그러면 왜 이런 K-폴드 교차검증법과 같은 방법이 필요할까? 

데이터 모델을 구축할 때, 위에서 언급한 훈련/검증/테스트 집합 등을 나누게 되는데, 잘못 나누게 되면 편향(Biased) 된 모델을 만들게 된다. 이를 방지하기 위한 방법 중 하나가 K-폴드 교차 검증 방법이다. 

편향된 모델의 가장 큰 문제점은 과적합(Overfitting)이 발생할 수 있다는 것이다. 쉽게 말해서 모델의 학습용으로 만들어 놓은 훈련 집합(Training Set)에만 너무 맞추다 보니, 훈련 집합하고 조금이라도 다른 데이터가 Test Set으로 오면 모델의 퍼포먼스가 매우 떨어지게 되는 문제가 발생한다. 따라서 편향되지 않은 모델을 구축하는 것은 매우 기본적이고 중요한 작업이다. 

다음 글에서 K-폴드 교차검증을 실제로 어떻게 사용하는지 알아보도록 하겠다.