본문으로 건너뛰기
AI SCHOOL
전체 진도0/34 레슨

PART 2 · TRACK 3 · LESSON 4

과적합

모델이 학습 데이터에 지나치게 맞춰지는 과적합의 원인과 새로운 데이터에서 성능을 유지하는 방법을 살펴봅니다.

예상 학습 시간 60연습문제 1

이 소단원의 핵심 내용

모델이 학습 데이터에 지나치게 맞춰지는 과적합의 원인과 새로운 데이터에서 성능을 유지하는 방법을 살펴봅니다.

  • 과적합
  • 연습 19. 과적합 주의하기
머신러닝 만들기 핵심 개념

IV. 과적합

알았어. 이제 우리는 최소한 몇 가지 기계 학습 기술을 이해하는 수준에 도달했으며 아마도 이를 사용해 보고 싶어할 것입니다. 가서 멋진 것을 만들어 봅시다... ALARM ALARM ALARM! 무엇? '과장된 안전벨트를 착용하세요'라는 문구와 함께 경고 사이렌이 울리기 시작합니다. 도대체 무슨 일이 일어나고 있는 걸까요?

멋진 기계 학습 애플리케이션을 구축하기 전에 과적합이라는 것에 대해 진지하게 논의해야 합니다. 과적합은 실제 기계 학습 과정에서 필수 부분이 되어야 하는 근본적인 문제 중 하나입니다. 그것을 이해하지 못하면 큰 해를 끼칠 수 있습니다. 그래서 그것은 무엇입니까?

주요 용어

과적합

간단히 말해서, 과적합은 훈련 데이터에서 효과가 있었던 예측에 너무 자신감을 갖는 것을 의미합니다. 선형 회귀 및 객실 가격을 논의할 때 위에서 학습 데이터와 테스트 데이터의 차이점을 언급했습니다. 3개의 객실을 포함한 훈련 데이터의 가격을 예측하기 위해 조정된 5개의 예측 변수(예: 객실 크기, 사우나 크기, 호수까지의 거리 등)가 있는 선형 모델은 세 가지 가격을 정확하게 복제합니다. 10개의 예측변수와 10개의 캐빈이 있는 경우와 예측변수의 수가 표본 크기와 동일한 모든 상황에도 동일하게 적용됩니다. 그러나 훈련 데이터의 완벽한 '예측'이 다른 데이터에 대한 완벽한 예측을 보장하지 않는다는 점은 분명합니다. 이는 본질적으로 과적합의 극단적인 경우입니다.

또 다른 극단적인 과적합 사례는 최근접 이웃 방법에서 발생합니다. 객실 가격 문제를 다시 떠올려 보세요. 객실 세부정보와 지불 가격을 알고 있는 객실 판매에 대한 일부 교육 데이터가 있습니다. 가장 가까운 이웃 방법이 이들 중 하나의 가격을 어떻게 예측하는지 살펴보겠습니다. 캐빈 중 하나가 위 예시 데이터의 첫 번째 캐빈이라고 가정해 보겠습니다. 66제곱미터, 5제곱미터 사우나, 호수에서 15미터, 실내 욕실 2개, 이웃과 500미터 떨어져 있으며 가격은 €258,250입니다. 이 캐빈은 "테스트 데이터" 포인트이지만 훈련 데이터에도 포함되어 있습니다. 캐빈 세부 정보를 최근접 이웃 방법에 다시 공급하면 훈련 데이터에서 정확히 동일한 캐빈을 찾아 테스트 데이터 포인트의 가장 가까운 이웃이라고 판단합니다. 따라서 가격은 €258,250로 예측됩니다. 이것이 테스트 데이터의 가격이었으므로 가격이 정확하게 예측되었음을 알 수 있습니다. 훈련 데이터의 다른 객실에도 마찬가지입니다.

알다시피, 예측 변수(이 경우 5개)보다 훈련 데이터에 더 많은 캐빈을 추가하면 선형 모델이 더 이상 훈련 데이터에 완벽하게 맞을 수 없습니다. 즉, 훈련 오류가 0이 아니라고 말할 수 있습니다. 이는 예측 변수의 수가 모든 선형 모델의 표본 크기보다 작을 때(데이터가 매우 특별하지 않은 경우) 사실상 항상 발생합니다. 다음 장에서 연구할 비선형 모델은 더 많은 유연성을 허용하지만 표본 크기가 예측 변수의 수보다 크더라도 여전히 매우 작은 훈련 오류를 얻을 수 있습니다.

여기서 가장 중요한 관찰은 작은 훈련 오류, 특히 복잡하고 비선형적인 모델을 작은 훈련 데이터 세트에 맞춰서 얻은 경우 모델이 실제로 새 데이터를 잘 예측한다는 것을 보장하지 않는다는 것입니다. 실제로 선형 모델이나 가장 가까운 이웃 방법의 경우와 같이 훈련 오류가 0이더라도 훈련 데이터와 겹치지 않는 테스트 데이터에 대한 예측 정확도가 매우 낮을 수 있습니다.

그래서 우리는 과적합이 좋지 않다는 것을 확인했습니다. 그러면 어떻게 그것을 피할 수 있습니까? 첫 번째 방어선은 일부 사람들이 연습을 통해 이미 익숙할 수도 있는 것입니다. 즉, 데이터를 교육 및 테스트 데이터로 분할하는 것입니다. 원본 데이터의 한 부분으로 모델을 훈련하고 다른 부분으로 성능을 테스트하면 보이지 않는 데이터를 사용할 때 모델이 얼마나 잘 일반화되는지 최소한 어느 정도 알 수 있습니다. 아직도 의문이 남아 있을 수 있습니다. 분할이 좋은 방법으로 이루어졌나요? 데이터를 다른 방식으로 분할하면 모델 성능이 근본적으로 달라질까요? 이에 대한 간단한 해결책 중 하나는 데이터를 n개의 서로 다른 세트로 분할하고 모델을 n번 학습하는 것입니다. 매번 n - 1개 세트의 서로 다른 조합을 사용하고 나머지 세트는 테스트 세트로 사용됩니다. 이렇게 하면 보이지 않는 데이터를 사용할 때 선택한 모델의 성능에 대한 n개의 추정치를 얻을 수 있습니다. 이것을 Leave-One-Out 교차 검증이라고 하며 교차 검증을 수행하는 가장 간단한 방법 중 하나입니다.

과적합은 기계 학습 영역에서 매우 골치 아픈 일이기 때문에 많은 사람들이 이에 대처하는 방법을 찾기 위해 시간과 에너지를 소비했습니다. 이들 중 대부분은 이 과정의 범위를 벗어나지만 관심 있는 독자는 정규화 및 드롭아웃과 같은 방법을 찾아볼 수 있습니다. 둘 다 선형 및 로지스틱 회귀와 신경망 모두에서 널리 이해되고 사용되는 방법의 예입니다.

스팸 여부로 분류된 1000개의 이메일 메시지에 대한 데이터 세트가 있다고 잠시 상상해 보겠습니다. 1000개의 메시지 중 990개가 합법적인 이메일이고 10개가 스팸입니다.

그런 다음 두 레이블이 두 세트 모두에 동일한 비율로 존재하도록 데이터를 훈련 세트와 테스트 세트로 분할한 다음 데이터에 대해 분류기를 훈련시킵니다.

가치 있는 것으로 간주되기 위해 모델이 더 나은 성능을 발휘해야 하는 기준 정확도로 무엇을 설정하시겠습니까?

연습문제

연습 19. 과적합 주의하기

1000개의 이메일 메시지에 스팸으로 분류된 데이터 집합이 있다고 가정해 보겠습니다. 1000개의 메시지 중 990개는 합법적인 이메일이며, 10개는 스팸입니다. 그런 다음 두 레이블이 동일한 비율로 두 세트에 존재하는 방식으로 데이터를 교육 및 테스트 세트로 분할한 다음 데이터에 대한 분류기를 교육합니다. 고려 대상이 되기 위해 모델이 성능보다 우수해야 하는 기준선 정확도로 무엇을 설정하시겠습니까? 가치있는가?
01과적합 주의하기

이 레슨을 모두 읽었나요?