2.2 일반화, 과대적합, 과소적합

본 문서는 [파이썬 라이브러리를 활용한 머신러닝] 책을 기반으로 하고 있으며, subinium(본인)이 정리하고 추가한 내용입니다. 생략된 부분과 추가된 부분이 있으니 추가/수정하면 좋을 것 같은 부분은 댓글로 이야기해주시면 감사하겠습니다.

1장의 내용은 기초적인 설명이기에 생략하고, 2장부터 시작합니다. 2장의 경우, 내용이 너무 많은 절이 있어 주제 별로 4개로 나누어 포스팅합니다. (책이 450쪽 정도인데 2장이 110쪽 정도로 거의 25%입니다.)

2.2.0 INTRO

지도 학습의 메인 아이디어는 기존의 입력/훈련 데이터가 앞으로 나올 데이터에 대한 대표성을 가진다는 것입니다. 즉, 새로운 데이터(테스트 세트)가 훈련 데이터와 같은 패턴을 가진다면 이를 이용한 모델은 새로운 데이터를 정확하게 예측할 수 있다는 것입니다. 이를 훈련 세트에서 테스트 세트로 일반화(generalization) 되었다고 합니다.

일반화를 목표로 하지만 이는 쉬운 일이 아닙니다. 훈련된 세트에 대해서만 정확한 모델이 되는 경우가 많기 때문입니다. 기존 데이터에 대한 분류는 비교적 간단합니다. 분류 문제에서 예를 들면 다음과 같은 방법이 있습니다.

  • 개발자를 도비 수준으로 일을 시킨다면 하드 코딩으로 기존 데이터에 대한 분류는 할 수 있습니다. 적어도 데이터 N개에 대한 분류는 O(N)으로 가능하게 만들 수 있습니다.
  • 위와 비슷한 말이지만 N개의 서로 다른 데이터를 분류하기 위해서는 최대 N차원이면 충분합니다.

저런 방식으로 컴퓨터도 모델을 만들 수 있기 때문에 모델의 성능을 검증하기 위해서는 테스트 세트로 평가를 해야합니다.

그러나 직관적으로 봐도 간단한 모델이 새로운 데이터에 더 잘 일반화될 것이라고 예측할 수 있습니다.

여기서 보통 ‘오컴의 면도날’을 가져와 설명합니다. 이는 경제성의 원리 또는 단순성의 원리라고도 불리는 것인데 다음과 같습니다.

  1. “많은 것들을 필요없이 가정해서는 안된다” (Pluralitas non est ponenda sine neccesitate.)
  2. “더 적은 수의 논리로 설명이 가능한 경우, 많은 수의 논리를 세우지 말라.”(Frustra fit per plura quod potest fieri per pauciora.)

결국 우리는 가장 간단한 모델을 찾기 위해 노력해야합니다.

복잡한 모델이 되어 훈련 세트에만 적합하게 된 것이 과대적합(overfitting) 이라고 하고, 너무 간단한 모델이 되어 제 성능을 못하는 것을 과소적합(underfitting) 이라고 합니다.

즉 앞으로는 과대적합과 과소적합의 절충점, 머신 러닝 성능의 최적점을 찾는 것을 목표로 합니다.

2.2.1 모델 복잡도와 데이터셋 크기의 관계

입력 데이터의 다양성에 따라 모델의 복잡도는 변할 수 있습니다. 다양한 데이터 포인트가 많다면 과대적합 없이 더 복잡한 모델을 만들 수 있습니다. 또 다른 말로 표현하자면 중복된 데이터나 매우 비슷한 데이터는 크게 도움이 되지 않습니다.

모델의 조정보다 모델의 양이 더 좋을 수 있으니 다양한 데이터를 모으는 것이 중요합니다. 현재 머신러닝의 발전은 ImageNet과 같은 데이터 집합과 함께 발전한 것임을 알아야 합니다.

Leave a Comment