지난번 포스팅에서는 기계학습(machine learning)의 정의와 3가지 유형 (supervised learning, unsupervised learning, reinforcement learning)에 대해서 알아보았습니다.

 

이번 포스팅에서는 학습의 일반화(generalization)와 과적합(overfitting), 혹은 과잉적합에 대해서 알아보도록 하겠습니다.  이번 포스팅은 기계학습의 3가지 유형 중에서 지도학습(supervised learning)에 대해 한정한 내용이긴 합니다만, 기계(컴퓨터)가 학습한다고 했을 때의 핵심이 되는 아주 아주 중요한 개념이므로 분석 기법/알고리즘으로 들어가기 전에 짚어보고 넘어가고자 합니다.

(기계학습 공부하는 대학원생이라면 '과(잉)적합(Over-fitting)에 대해서 논하시오'라는 문제가 중간고사에 무조건 나온다에 500원 걸겠습니다. ㅎㅎ)

 

기계학습의 정의에서 보면 과거의 대량의 data인 Experience (E) 로 부터 예측/추정이나 분류 등의 Task(T)를 어느 수준 이상의 정확도(Performance, P)로 향상시킬 수 있다면 기계(컴퓨터)가 해낼 수 있다면 컴퓨터가 학습을 하고 있다고 말할 수 있다고 했었습니다.  이때 중요한게 하나 있는데요, 훈련 데이터셋(Training Data Set)에서 뿐만이 아니라 컴퓨터가 본적이 없는 새로운 데이터 셋(Test Data Set, or New Data Set)에 대해서도 예측/추정이나 분류 모델이 잘 working 하느냐가 오늘의 포스팅의 주제입니다.

 

가령, 훈련 데이터(Training Data Set)를 가지고 지난 학기 기계학습 수업의 Pass와 Fail한 학생을 분류하는 모형을 만들었는데요, 그게 훈련 데이터에 너무나도 과도하게 적합이 된 나머지, 올해 신입생을 대상으로 한 새로운 데이터 셋(Test Data Set)에 대해서는 분류가 잘 맞지가 않는 경우 과(잉)적합(Overfitting)이 되었을 가능성이 아주 많다고 의심해볼 수 있습니다. .

 

아래 그림에 과소적합(Under-fitting), 적정적합, 과(잉)적합(Over-fitting) 분류 예를 가상으로 만들어서 들어보았습니다.   상단의 그림은 훈련 데이터셋(Training set)을 가지고 분류 모델을 만든 것이구요, 하단 그림은 새로운 데이터인 테스트 데이터셋(Test set)에 다가 훈련 데이터셋으로 만든 분류 모델을 적용해 본 그림입니다.

 

(1) 상단 좌측의 과소적합(Under-fitting)의 경우 훈련 데이터셋을 대상으로 훈련이 부족하여 파란점과 빨간점을 잘 분류를 못하고 있습니다. (정확도 65%). 

 

중간고사 앞두고 시험공부 하라고 했더니 기계학습 서문 서너페이지 읽다 말고는 태양의 후예 재방송 보느라 농땡이 친 학생이 여기에 해당이 되겠습니다.  이런 학생은 하단 좌측의 테스트 데이터셋에 보면 아시겠지만 처음보는 새로운 시험문제가 나오는 중간고사에서 좋은 점수를 받을리가 없겠지요. (정확도 60%)

 

(2) 상단 가운데의 적정적합(Generalized-fitting)의 경우 훈련 데이터셋을 대상으로 파란점과 빨간점을 분류하라고 시겼더니 비록 일부 오분류가 있기는 합니다만 전반적으로 적절하게 제법 분류를 해냈습니다.(정확도 90%)  그리고 훈련데이터로 만든 분류 모델을 하단의 가운데에 신규 데이터셋인 테스트 셋에 적용해 보았더니 역시 약간 오분류가 늘어나기는 했지만 그래도 85%의 정확도로 꽤 높은 분류 성과를 냈습니다. 

 

수업시간에 선생님께서 문제풀이를 하면서 '이론'과 '원리'를 가르쳐주실 때 정신 바짝 차리고 공부 잘하고 복습도 잘한 학생이 여기에 해당이 됩니다. '원리'를 깨우쳐서 '일반화(generalization)'을 했기 때문에 중간고사에서 응용문제가 나와도 그걸 풀 수 있는 힘이 있는 것입니다.

 

(3) 상단의 오른쪽에 있는 과(잉)적합(Over-fitting)은 훈련 데이터셋(Training Set)을 대상으로 파란점과 빨간점을 100% 정확하게 기가 막히게 잘 분류를 해놨습니다.  모델이 삐뚤빼뚤 비선형으로 해서 아주 복잡하게 생겼지요?  이 분류 모델을 새로운 데이터셋, 즉 테스트 셋(Test set)에 적용해서 분류를 시켜봤더니, 글쎄 정확도가 65%로 곤두박질을 쳤습니다.

 

중간고사 이틀 남겨놓고 코피 터지게 벼락치기로 '달달 외워서' 공부한 학생이 여기에 해당되겠습니다.  공부를 하면서 '원리'에 대해서도 생각을 해보고 음미도 해봤어야 하는건데요, 너무 의욕이 앞선 나머지, 아니면 공부하는 전략이 부족하고 미련해서 인지, 예제 문제 자체를 토씨하나 안틀리고 달달 외워버린 경우입니다 (아마 자신감 100% 만땅 이었겠죠?).  이렇게 교과서 문제를 너무나 과하게 통째로 외워버리다 보니 중간고사에 약간 문제를 비튼 '응용문제'가 나오자 당황하고 문제를 잘 못푼 학생을 생각하시면 됩니다. (성적은 중하위권...?) 

 

 

[ 과소적합(Under-fitting) vs. 적정적합(Generalized-fitting) vs. 과잉적합(Over-fitted) ]

 

 

 

 

기계학습이 지향하는 학습 수준은 당연히 일반화(generalization)가 된 적정수준의 학습 입니다.  과소적합(under-fitting)도, 과(잉)적합(over-fitting)도 아니구요.  특히 과적합(over-fitting)은 기계학습 분석가가 조심해야 합니다.  왜냐하면 훈련 데이터를 가지고 모형을 만들 때 과적합(over-fitting)을 하게 되면 성과(정확도)가 아주 좋게 나오거든요.  그러면 이 분석가는 자기가 대단한 일, 큰 일을 한 줄로 알고 착각하게 됩니다.  과적합(over-fitting)이 아마추어 분석가만 저지르는 실수로 생각할 수도 있습니다만, 지진을 예측하는 과학자도 실수하고, 일본 후쿠시마의 핵 원자로가 폭발한 원인 제공자가 바로 과적합이라는 사실을 아시나요? Nate Silver의 신호와 소음(The Signal and The Noise)에 실린 내용을 아래에 인용해 봅니다.

 

"그러나 자료의 이상적 관계를 알지 못할 때 우리는 탐욕에 사로잡히기도 한다. 이런 탐욕의 결과로 나타난 과잉적합 사례를 보면, 모든 측정점을 연결하는 복잡한 함수를 만들었다. 그러다 보니 아래위로 마구 오르내리는, 현실에서 있음직하지 않은 곡선이 나타났다. 이렇게 될 때 우리는 측정점들에 내재된 진정한 관계에서 한참 멀어지고 말며, 결국 우리 예측은 한층 엉뚱한 곳을 향하고 만다.

 

(중략)... 우리는 우리가 접할 수 있는 증거에서 그 구조를 추론해내야 한다. 이 과정에서, 자료가 한정되어 있고 소음이 많을 때 그리고 자료 안에 내재하는 근본 관계에 대해 이해가 부족할 때, 사람들은 대개 과잉적합의 오류를 범한다

 

(중략)... 과잉적합은 이중적 불운을 나타낸다. 이 모델은 연구논문에서는 '더 나은 것'으로 보이지만 실제 현실에서는 '더 나쁜' 성적을 거둔다. 과잉적합 모델은 후자의 특성 때문에 결국 실제 현실에서 예측하는데 동원될 경우 호된 대가를 치룬다. 이 모델은 또한 전자 때문에 겉보기에는 더 인상적이다. 매우 정확하고 또 뉴스 가치가 있는 예측을 할 수 있으며 과거에 사용된 여러 기법보다 훨씬 나은 듯 보인다. 그렇기에 이런 모델은 학술지에도 좀 더 쉽게 발표가 되고 또 고객들에게 환영을 받는다. 반면 좀 더 정직한 모델은 시장에서 내몰린다. 그러나 과잉적합 모델은 신호가 아닌 소음에 적합하도록 만들어진 만큼 결국 정확성, 다시 말해 과학성을 훼손할 수 밖에 없다.

 

- 출처 : 신호와 소음(The Signal and The Noise), Nate Silver

 

지진을 예측하는데 최고난이도의 수학으로 어마무시하게 복잡하고 정교한 모델을 만든 케일리스-보르크 지진학자가 있었다고 합니다.  '신호와 소음'에 소개된 성적표에 의하면, "이 모델은 믿을 수 없을 만큼 복잡한 방정식들을 동원해 소음에 물든 자료들에까지 적합하게 만들어졌다. 그리고 결국은 대가를 치러야 했다. 스물여섯 개 예측을 했지만 세 개 밖에 적중하지 못했다. 데이비드 보먼은 자기도 비슷한 문제를 안고 있다는 사실을 인식하고, 결국은 자신의 모델을 폐기하고 만다". 라고 하는군요.  케일리스-보르크든 데이비드 보먼이든, 훈련 데이터로는 아마 기가 막히게 정확하게 예측을 했었을 것이고 흥분을 했을 겁니다.  나중에 현실 세계에서 초라한 성적표를 받고 나서야 과적합(over-fitting)이었다는 걸 알기 전까지는 말이죠.

 

과적합은 소음(Over-fitting due to Noise), 부족한 사례(Over-fitting due to Insufficient example), 과도하게 복잡한 모형 개발(unnecesarily complex model)로 인해서 생기는데요, 기계학습 분석가에게는 참 조심하고 주의를 기울여야할 주제입니다.

 

오컴의 면도날(Occam's Razor )에 의하면 복잡한 모델보다는 단순한 모델을 선택(선호)하라고 합니다.  Variable, Feature를 있는 것 모두 때려 집어넣고 모델 만들지 말고 똘똘한 Variable, Feature를 선별해서 가능한 단순하게 만들라는 것입니다.  복잡한 비선형 모델보다는 선형모델을 더 선호하라는 것이구요.  오컴의 면도날은 과적합(over-fitting)을 아주 싫어한다고 말할 수 있겠습니다.

 

다음번 포스팅에서는 과적합을 어떻게 피할 수 있나에 대해서 알아보도록 하겠습니다. 

(Training Set vs. Test Set error rate, cross validation, Prunning, Smaple size up)

 

많은 도움이 되었기를 바랍니다.

 

도움이 되었다면 아래의 '공감 ♡'를 꾸욱~ 눌러주세요. ^^

 

Posted by R Friend R_Friend