모델 일반화 오차 추정의 중요성
머신러닝에서는 학습 과정 중에 모델의 일반화 오차(generalization error)를 추정하는 여러 가지 방법이 사용됩니다. 이렇게 추정된 오차는 학습 알고리즘이 적절한 복잡도를 가진, 즉 과적합(overfitting)의 영향을 받지 않는 모델을 선택하는 데 중요한 근거가 됩니다.
모델이 구축된 후에는 테스트 세트(test set)를 활용하여 이전에 한 번도 본 적 없는 데이터의 클래스 레이블을 예측할 수 있습니다. 테스트 세트에서 측정한 성능은 모델의 일반화 오차에 대한 편향되지 않은(unbiased) 추정치를 제공하기 때문에 매우 유용합니다. 또한 테스트 세트에서 평가한 정확도(accuracy)나 오류율(error rate)은 동일한 도메인에서 여러 분류기의 상대적인 성능을 비교하는 데에도 활용됩니다.
분류기의 성능을 평가하는 데 널리 사용되는 대표적인 방법은 다음과 같습니다.
1. 홀드아웃(Holdout) 방법
홀드아웃 방법은 레이블이 붙은 초기 데이터를 학습 세트(training set)와 테스트 세트(test set)라는 두 개의 서로 겹치지 않는 집합으로 분할하는 방식입니다. 학습 세트로부터 분류 모델을 유도(induce)한 뒤, 그 성능을 테스트 세트에서 측정합니다.
분류기의 성능은 유도된 모델이 테스트 세트에서 보여주는 결과를 기준으로 산출됩니다. 다만 홀드아웃 방법에는 몇 가지 잘 알려진 단점이 있습니다.
첫째, 데이터의 상당 부분을 테스트용으로 따로 빼두기 때문에 학습에 사용할 수 있는 레이블 데이터가 줄어듭니다. 그 결과, 더 많은 레이블 데이터를 학습에 활용했을 때보다 유도된 모델의 성능이 떨어질 수 있습니다.
둘째, 모델 성능이 학습 세트와 테스트 세트가 어떻게 나뉘었는지에 크게 좌우됩니다. 반대로 학습 세트가 너무 크면 작은 테스트 세트에서 계산된 정확도 추정치의 신뢰성이 낮아져 넓은 신뢰 구간(confidence interval)을 갖게 됩니다. 마지막으로, 학습 세트와 테스트 세트가 더 이상 서로 완전히 독립적이지 않다는 문제도 있습니다.
2. 랜덤 서브샘플링(Random Subsampling)
랜덤 서브샘플링은 홀드아웃 방법을 여러 번 반복 수행함으로써 분류기 성능 추정의 신뢰도를 높이는 기법입니다.
i번째 반복에서 얻은 모델 정확도를 acci라고 할 때, 전체 정확도는 다음과 같이 계산됩니다.
accsub = Σ(i=1~k) acci / k
그러나 랜덤 서브샘플링 역시 홀드아웃 방법과 마찬가지로 사용 가능한 데이터를 학습에 충분히 활용하지 못한다는 한계가 있습니다. 또한 각 데이터가 학습과 테스트에 사용되는 횟수를 통제할 수 없기 때문에, 어떤 데이터는 다른 데이터보다 학습에 더 많이 사용될 수 있다는 점도 단점입니다.
3. 교차 검증(Cross-Validation)
교차 검증은 랜덤 서브샘플링의 대안으로, 모든 데이터가 여러 번은 학습에, 정확히 한 번은 테스트에 사용되도록 설계된 방법입니다.
예를 들어 데이터를 크기가 같은 두 개의 부분 집합으로 나눌 수 있다고 가정해 보겠습니다. 먼저 하나의 부분 집합은 학습용으로, 다른 하나는 테스트용으로 선택합니다. 이후 두 부분 집합의 역할을 서로 바꾸어, 앞서 학습 세트였던 집합을 이번에는 테스트 세트로 사용합니다. 이러한 방식을 2-겹 교차 검증(twofold cross-validation)이라고 부릅니다.