#9. 과적합, 과소적합, 일반화, 이전 글에 대한 배경지식 확장
* 본 글은 <비즈니스를 위한 데이터 과학>(포스터 프로보스트, 톰 보셋 지음, 한빛미디어 출판) 5장을 참조해 작성했음을 밝힙니다.
* 내용에 오류가 있을 수 있습니다.
1. 과적합화와 일반화
과한 융통성으로 인해 일반화되지 않고 조사한 데이터(훈련 데이터)에만 존재하는 특성을 '과적합화overfitting'이라고 한다.
일반화는 모델 제작에 사용되지 않은 데이터(시험 데이터, 실제 비즈니스에서 사용되는 고객 데이터 등)에도 모델을 적용할 수 있는 성질을 의미한다.
이는 모델이나 모델링 프로세스의 특성으로, 일반화되지 않았다는 것은 모델이 훈련 데이터에만 적합화 되어있음을 뜻한다.
모든 데이터세트는 모집잔의 유한 부분집합니다. 따라서 모델은 훈련 데이터의 모집단을 제대로 대표해야 한다.
그러나 과적합화는 학습하지 않은 데이터에 대한 일반화는 희생하고 훈련 데이터에만 모델을 맞추려는 경향을 의미한다.
모든 데이터 마이닝 절차에는 정도의 차이가 있지만 과적합화하려는 경향이 있다. 그러나 이는 미리 알아내기가 힘든 사항이다.
과적합과 일반화는 한꺼번에 해결하기 어렵다. 따라서 모델의 과적합화 여부를 판단하고 원칙에 따라 복잡도를 관리하는 것이 적절하다.
1.1 더 알아보자! Overfitting & Underfitting
이 문단의 글은 https://towardsdatascience.com/overfitting-vs-underfitting-a-complete-example-d05dd7e19765을 참고하여 작성했습니다.
예측 모델의 종류에는 여러가지가 있다. 가장 간단한 모델은 선형 회귀모델로, 입력값들의 가중치의 합으로 표현한 모델이다.
그러나 과적합과 과소적합에 대해 이해하기 위해서는 그보다 한 단계 업그레이드 된 다항식 회귀 모델을 살펴봐야 한다.
선형 회귀에서는 한 쌍의 독립변수-종속변수가 있다면, 다항식 회귀에는 여러 쌍의 종속-독립변수가 존재한다.
수학식은 선형회귀 방적식과 비슷하게 생겼지만 좌표평면 위에 그려보면 비선형 모양인 것을 볼 수 있다!
(y는 레이블(예측 결과로 도출되는 타깃값), x는 속성, w는 모델 파라미터, 엡실론은 오류율을 의미)
이렇게 다중 선형식에 대해 알고나면 과적합을 더욱 잘 이해할 수 있다. 다시 본론으로 돌아와보자!
과소적합은 모델의 융통성이 부족해서 주어진 데이터를 제대로 설명하지 못하는 상황을 의미한다. 대부분의 데이터를 무시한다.
데이터 내의 정보를 충분해 고려하지 않아 stong assumption을 하는, 즉 새로운 데이터에 대해 지속적으로 잘못된 예측을 할 가능성이 높아진다.
마찬가지로 훈련 데이터를 제대로 반영하지 않았기 때문에 패턴과 관계없는 랜덤한 값(노이즈 등)을 학습하지 않는다. 따라서 variance값이 낮다.
bias-variance-trade-off에 대한 내용은 https://bywords.tistory.com/entry/번역-유치원생도-이해할-수-있는-biasvariance-tradeoff을 참고하자.
과적합은 모델 학습에 사용된 데이터 하나하나를 설명하는 모델이라고 생각하면 된다.
모든 데이터, 그러니까 노이즈와 에러값 등을 모두 반영하기 때문에 variance가 높다. 만약 새로운 데이터 포인트 10개가 추가된다면, 모델은 그 10개의 정보를 모두 반영하게 될 것이다. 당연히 그에 따라 모델의 추세선도 모양이 바뀐다. 다르게 말하자면 '훈련 데이터에 모델이 지나치게 의존적'이라고 할 수 있다.
예측하는 능력은 과소적합 모델보다야 좋지만 과적합 모델 또한 완벽하지 않다. 모든 에러와 노이즈값을 저장하고 있기 때문에, 이들이 정확한 예측을 방해한다.
과소적합은 지나치게 적은 훈련 데이터를 학습(memorize)해서 발생하고, 과적합은 지나치게 많이(또는 전부) 학습해서 발생하는 현상이다.
그러니 이상적인 모델을 만들기 위해서는 '적당히' 학습해야 한다. (뭐든 중용이 중요하다.)
이를 위한 방법론에 대해서는 다른 글에서 다뤄보려고 한다.
2. 모델 복잡도와 과적합
적합도 그래프가 있다. 이 그래프는 모델의 복잡도에 따른 정확도를 보여준다.
과적합화를 검사하기 위해서는 예비 데이터(시험 데이터)에 대해 알아야 한다.
예비 데이터는 영어로는 Holdout data라고 부르는데, 훈련 데이터로 학습한 모델을 평가하는 데이터다.
이 데이터는 모델 학습에 관여하지 않은 데이터다. 덕분에 예비 데이터로 모델이 아직 접하지 못한 데이터에 대해 얼마나 일반화되어 있는지 알아낼 수 있다.
모델은 예비 데이터의 타깃 변숫값을 예측하고, 데이터 과학자는 예측 결과과 실제 예비 데이터의 레이블(타깃변숫값)을 비교해 일반화 성능을 추정한다.
이때, 훈련 데이터에 대한 성능과 예비 데이터에 대한 일반화 성능은 서로 차이가 발생한다.
모델의 정확도는 '얼마나 복잡하게 만들었는지'에 따라 달라진다. 복잡도에 따라 정확도가 변화한다는 뜻이다.
그리고 일반적으로, 모델의 복잡도가 커짐에 따라 과적합화 문제가 증대한다.
옆의 적합도 그래프로 확인해보자.
이 그래프는 모델의 복잡도에 따른 훈련 데이터와 예비 데이터(여기서는 시험 데이터)의 오류율을 표현한 것이다. 모델의 복잡도가 낮으면 두 데이터셋 모두 높은 오류율을 보인다. 정확도가 낮은 것이다.모델이 점차 복잡해져가면 정확도는 떨어진다. 그리고 특정 시점부터는 시험 데이터와 훈련 데이터 간의 오류율(정확도)에 괴리가 발생하기 시작한다.
모델의 복잡도가 커지면 커질수록 훈련 데이터의 오류율을 적어진다. 모델이 훈련 데이터에 최적화되고 있는 것이다. 반면 일반화의 척도로 볼 수 있는 예비 데이터에 대한 오류율은 치솟는다. 모델이 과적합되었다는 신호로 해석할 수 있다.
모델의 복잡도 척도는 모델의 종류에 따라 다르다. 테이블 모델에서는 암기하는 데이터 행row수가 곧 복잡도의 척도다. 기억하는 훈련 데이터의 행 개수가 많을수록 오류율은 줄어든다. 그러다 주어진 훈련 데이터를 모두 암기하면 훈련 데이터에 대한 오류율은 0이 된다. 반면 같은 모델이더라도 예비 데이터에 대해서는 기본 오류율 아래로는 절대 내려가지 않는다. 본질적으로 훈련 데이터와 예비 데이터가 서로 다른 데이터셋이기 때문에 예비 데이터에 대한 100% 정확한 예측은 불가능하기 때문이다.
트리 모델에서는 노드의 개수가 곧 복잡도를 의미한다. 노드의 개수가 많을수록 모델의 융통성은 늘어난다. 노드는 무한히 확장할 수 있으므로 모델의 정밀도 또한 모든 계층이 순수해질 때까지 올라갈 수 있다. 노드의 개수가 증가하면 훈련 데이터와 시험 데이터 모두 정확도가 올라간다. 그러나 앞에서 다룬 과적합화 현상에 의하여 어느 순간부터 예비 데이터 세트에 대한 정확도는 감소한다. (오류율이 증가하는 것과 동일) 노드의 개수가 늘어날수록 데이터의 부분집합의 크기가 작아져 모델이 더 적은 수의 데이터로 일반화하기 때문이다. 그래서 추론 오류(bias)가 늘어난다. 따라서 트리 모델에서 이상적인 모델을 만든다는 것은 '적절한 노드의 개수를 결정'하는 것과 같다.
'배우는 것 > Maching Learning' 카테고리의 다른 글
# 11. 이진 분류, 선형 분류 모델, 로지스틱 회귀, 지원 벡터 기계 (0) | 2021.12.28 |
---|---|
#10. 선형 모델, 선형 회귀, 릿지 회귀, 라쏘 회귀, 복잡도 제어 (0) | 2021.12.27 |
#8. 최근접 이웃 알고리즘 실습, 이웃의 개수가 지도학습에 미치는 영향 (0) | 2021.12.27 |
#7. 파이썬 기본지식 공부(2)_스칼라형, 튜플, 리스트, 사전 (0) | 2021.12.23 |
#6. 파이썬 기본지식 공부(1) (0) | 2021.12.21 |