-
지도학습 | 일반화, 과대적합, 과소적합Machine Learning/ML with Python Library 2024. 2. 4. 14:57
모델이 처음 보는 데이터에 대해 정확하게 예측할 수 있으면, 이를 Training 세트에서 Test 세트로 일반화(Generalization)되었다고 한다. 모델을 만들 때, 가능한 한 정확하게 일반화 되도록 구현해야한다. 훈련 세트와 테스트 데이터가 매우 비슷하다면, 그 모델이 테스트 세트에서도 정확히 예측한다고 기대할 수 있다. 하지만, 아주 복잡한 모델을 만들면, Training 세트에만 정확한 모델이 되어버릴 수 있다. 예를 들어보자.
초보 데이터 과학자가 요트를 구매한 고객과 구매 의사가 없는 고객들의 데이터를 수집했고, 이를 이용해 누가 타겟 요트 바이어가 될지 예측한다고 해보자. 관심 없는 사람에게는 괜히 귀찮게 하지 않고, 실제 관심이 있거나 구매할 것 같은 고객에게만 이메일을 보내는 전략이다.
고객 데이터 예시 (출처=https://tensorflow.blog/) 초보 과학자는 "45세 이상, 자녀가 셋 미만이고 이혼하지 않은 고객이 요트를 살것이다" 라고 정의했다. 이게 얼마나 정확한지 물어보면 "100% 정확해요!"라고 할것이다. 이 데이터만으로 봤을 때, 이 규칙히 정확하게 맞기 때문이다. 하지만 사실일까?
아니다. 우리가 알려는 것은 "새로운 고객이 요트를 구매할 것인가" 이다. 새로운 고객에게는 하나도 맞지 않고, 테스트 데이터에만 100% 맞는 규칙은 무의미하다. 또, 이혼의 유무에 대해서는 단 한명에게만 적용되기 때문에, 이혼의 유무와 요트 구매 의사를 섣불리 연결지을 수 없다. 이 데이터가 잘 동작하는지 알아보려면, 테스트 세트로 평가해보는 방법 뿐이다.
이혼 유무같은 사항은 아직 부정확할 수 있다. 그렇다면? 오히려 간단한 모델을 만들어서 일반화하는것이 더 좋을 수 있다. "50세 이상인 사람은 보트를 사려고 한다"라고 하면, 모든 고객 데이터를 만족시킬 뿐만 아니라, 나이 외 자녀 수나 혼인 상태를 추가한 규칙보다 훨씬 신뢰도가 높아질 수 있다. 그래서 우리는 언제나 가장 간단한 모델을 찾으려고 한다. 초보 데이터 과학자가 했던 것처럼, 너무 복잡한 모델을 만드는 것을 과대적합(overfitting)이라고 한다.
과대 적합은 모델이 Training 세트의 각 샘플에 너무 가깝게 맞춰져서 새로운 데이터에 일반화 되기 어려울 때 일어난다. 반대로, 모델이 너무 간단하면, 즉 "집이 있는 사람은 모두 요트를 살 의사가 있다"라고 하면, 데이터의 다양성을 잡아내지 못할 것이고, Training 세트에도 잘 맞지 않을 것이다. 이렇게 너무 간단한 모델이 선택되는 것을 과소적합(underfitting)이라고 한다.
모델을 복잡하게 하면 Training 데이터에 대해선 정확히 예측할 수 있겠지만, 너무 복잡해지면 각 포인트에 너무 민감해져서 새로운 데이터에 일반화 되지 못한다. 일반화 성능이 최대가 되는 최적점에 있는 모델을 찾아야한다.
모델 복잡도 X 정확도 (출처=https://tensorflow.blog/) 모델의 복잡도는 Input Data의 다양성ㄱ허 관련이 깊다. 다양한 데이터 포인트가 많을수록 과대적합 없이 복잡한 모델을 만들 수 있다. 그렇기 때문에, 복잡한 모델을 만들때, 큰 데이터셋을 모아서 다양성을 키워주어야 한다. 하지만, 같은 데이터 포인트를 중복 시키거나, 매우 비슷한 데이터만 모으는 것은 도움되지 않는다.
초보 데이터 과학자는 12개밖에 안되는 데이터를 사용했지만, 추후 다양한 데이터 포인트 10,000개를 모아서, "45세 이상, 자녀가 셋 미만이고 이혼하지 않는 고객은 요트 구매 타켓 유저이다" 라고 한다면, 그 전보다 훨씬 좋은 규칙(모델)이라고 할 수 있다.
더많은 데이터로 적절하게 복잡한 모델을 만들면, 지도 학습(Supervised Learning)에서 좋은 결과를 얻을 수 있다. 데이터의 양은 정말 파워풀한 ML의 기본이다.
Reference
2.2 일반화, 과대적합, 과소적합
2. 지도 학습 | 목차 | 2.3 지도 학습 알고리즘 – 지도 학습에서는 훈련 데이터로 학습한 모델이 훈련 데이터와 특성이 같다면 처음 보는 새로운 데이터가 주어져도 정확히 예측할 거라 기대
tensorflow.blog
https://www.yes24.com/Product/Goods/42806875
파이썬 라이브러리를 활용한 머신러닝 - 예스24
사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현 현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없다. 사이킷런(scikit-learn)과 같은 훌륭한 머신
www.yes24.com
'Machine Learning > ML with Python Library' 카테고리의 다른 글
지도학습 | 알고리즘 - KNN 분류 (0) 2024.02.05 지도학습 | 알고리즘 - 데이터셋 (1) 2024.02.04 지도학습 | 분류와 회귀 (0) 2024.01.29 ML Intro | Iris Analysis - Evaluating the Model (0) 2024.01.27 ML Intro | Iris Analysis - Prediction (0) 2024.01.27