머신러닝의 오버피팅은 타일러 라쉬다?!
728x90

이번 학기 최대 고비

이번 학기에 저를 가장 힘들게 하는 과목은 최근 세간의 관심이 뜨거운 머신러닝 (Machine Learning) 수업입니다. 왜냐하면 매 수업 시간마다 퀴즈가 있기 때문인데요. 퀴즈가 쉬울 줄 알았는데, 생각보다 어려운 문제들이 자주 출제됩니다. 그래서 이 퀴즈 공부를 하느라 최근 주말에 데이트를 잘 나가지도 못하고 있어서 약혼자에게 많이 미안합니다. :(


머신러닝 수업 이야기가 나왔으니 교재 이야기를 안하고 지나갈 수 없네요. 머신러닝에 입문하고 싶은 분들에게 An introduction to statistical learning을 정말로 강력 추천드립니다. 책 제목은 '통계적 학습 (statistical learning)'이지만 통계학과에서 사용하는 용어인 '통계적 학습'은 우리가 알고 있는 머신러닝과 동일합니다. 다만 통계학과에서는 기계가 통계적 개념을 학습해서 예측을 내놓는 것이기 때문에 머신러닝보다는 '통계적 학습'이라고 부를 뿐입니다.. 

 


이 책을 추천하는 이유는 저같은 문과 출신 학생을 위한 '머신 러닝 입문서'이기 때문입니다. 머신러닝에서 자주 쓰이는 통계학 개념들을 수학적 식을 최대한 배제하고 글로 풀어서 설명해주는데요. 이런 문과친화적 책은 흔치 않습니다. 물론 이 책이라고 수학적 식이 아예 등장하지 않는 것은 아니지만, 공대생들의 필수 과목인 '선형대수학' 개념을 몰라도 책을 읽어나갈 수 있어서 그나마 다행입니다.


앞으로 제가 퀴즈에서 매주 틀렸던 문제를 복습하는 차원에서 퀴즈 틀린 문제들과 그 해설을 포스팅할 계획입니다. 그 첫번째 순서로, 책의 '소개'에 해당하는 챕터인 Ch2. Statistical Learning 문제 중 제가 틀린 것들을 살펴보겠습니다. 이 시리즈가 머신러닝을 공부하시는 분들에게 도움이 되었으면 좋겠습니다.



Flexibility of models

Statistical modeling에서 가장 중요하게 다루어지는 개념들 중 하나가 관찰 데이터들에 적용할 모델이 플렉서블한지, 인플렉서블한지입니다. 제 교과서에서 사용하는 flexibility의 정의는 사용하는 모델의 parameter의 갯수, 즉 결과값 response를 예측하기 위해 사용하는 predictor (input)의 갯수가 많은 것입니다. 예를 들어, 아래 2개의 수식 중, (2)가 (1)보다 더 flexible한 모델입니다. (2)는 parameter가 3개 (b1, b2, b3)인 반면에, (1)은 parameter가 1개밖에 없기 때문입니다.


  


(1)과 같이 response variable Y를 단 1개의 predictor variable를 이용하여 설명하려는 모델을 'Simple linear regression', (2)처럼 여러개의 predictor variable이 있는 모델을 'Multiple linear regression'이라고 합니다. 이름에서 아실 수 있듯이, simple linear regression은 inflexible하며, multiple linear regression은 비교적 더 flexible 합니다. 이 두 모델의 우열을 일방적으로 가를 수는 없는데요, 왜냐하면 두개의 모델에 각각 장,단점이 있기 때문입니다. 


플렉서블한 모델은 variance (트레이닝하는 데이터가 달라지면 모델 모양이 달라져서 생기는 오차)가 높은 대신 bias (복잡한 현실을 간단한 통계적 모델이 완벽히 묘사하지 못해 생기는 오차)가 낮고, 인플렉서블한 모델은 bias가 높은 대신, variance가 낮습니다. 이처럼 variance가 높아지면 bias가 낮아지고, variance가 낮아지면 bias가 높아지는 현상을 the variance, bias trade-off라고 합니다.


모델을 이용해 새로운 결과를 예측할 때의 '모델이 내놓은 값'(A)과 '실제 값'(B)의 차이인 Expected test MSE (Mean squared error)를 될 수 있는대로 줄여서 결과값을 정확히 예측하기 위해서는, 이 variance와 bias를 최대한 낮추어야 합니다.


왜냐하면, Expected test MSE = B - A = Variance + Bias + Irreducible error 이기 때문인데요, 따라서 variance와 bias의 trade-off를 줄이기 위해 적절한 모델의 flexibility를 찾고, 적당한 predictor variable의 갯수를 찾는 것이 머신 러닝의 가장 큰 숙제입니다.



Sample size & Model selection



위의 퀴즈에서 물어보고 있는 것은 '(observed) data 갯수'와 'predictor 갯수'의 많고 적음에 따라서 플렉서블, 인플렉서블 모델 중 무엇을 사용해야 하는지 물어보고 있습니다. 이 두가지 모델 중 어느 것을 사용해야 하는지 결정하는 기준은 'overfitting이 언제 발생하는지'입니다. Overfitting이 무엇일까요? 이 정의를 알려면, 우선 우리가 하려는 일이 무엇인지 알아야 합니다. 


저희가 하려는 일은 현실의 data를 이용하여, 이 data들을 생성하는 true generating function을 계산해보는 것입니다. 이 함수만 있다면 우리는 미래의 data를 예측하거나(prediction), 이 true generating function의 요소에 무엇이 있는지(inference) 알 수 있습니다. 예를 들어 삼성전자의 이번 3월달의 주가(observed data)를 이용하여 주가가 무슨 규칙을 따르는지 (true generating function)이 알아보려는 시도인 것입니다.


그런데 문제는 이 data들이 true generating function에 의해서 생성될 때, Error term이 끼어든다는 사실입니다. 따라서 data들은 이 true generating function에 놓여있는 것이 아니라 이 함수 주변에 흩뿌려져 있게 됩니다. 이는 아래 그림 Figure 2.10에서 true generating function(검정색 선) 주변에 data(동그라미)들이 흩뿌려져 있는 것에서 알 수 있습니다. 


Over-fitting의 정의는 이렇게 Data가 가지고 있는 noise들을 response를 예측하는데 사용해버린 것입니다. 이처럼 noise를 response를 예측하는데 사용하게 된 이유는 sample의 갯수에 비해서 flexibility가 너무 큰 model을 사용했기 때문에 별로 response와 관련이 없는 predictor까지 사용해버렸기 때문입니다. 아직 이해가 안가신다면 밑의 그림을 보시겠습니다




위의 그림은 Y (response)와 X (predictor)사이의 관계를 나타내는 그림으로 검정색 linear graph가 true function입니다. 하지만 매우 자유도가 높은 녹색 모델은 data를 다 이으려고 했기 때문에, 즉 fitting을 너무 심하게 했기 때문에 over-fitting이 된 모습입니다. 이렇게 over-fitting된 모델은 트레이닝 데이터에서는 높은 성능을 발휘하지만, 한 번도 본 적이 없는 미래의 data를 예측할 때는 성능이 좋지 못합니다. 



Over-fitting의 정의

overfitting이 뭔지 그래도 감이 안잡히신다면, '결론과 전혀 상관없는 factor로 결론 내리기'를 떠올려 보시면 됩니다. 저는 미국 출신의 연예인 '타일러 라쉬'를 예로 들어 설명해 보겠습니다. 제가 만약 TV에 나오는 연예인인 공유, 조인성, 현빈 등을 보면서 "TV에 나오는 연예인들은 다 키가 크다'라는 결론을 도출했다고 생각해보겠습니다.


사실 이건 말이 안되는 결론입니다. 왜냐하면 '키'를 결정하는 factor에는 유전자, 영양상태 등이 있지, TV 출연 유무는 키를 결정하는 factor랑은 아무런 상관이 없기 때문입니다.  타일러 라쉬도 TV에 출연하는 연예인이지만, 키가 크지 않죠. (타일러씨, 죄송해요!) 이처럼 flexible model을 사용 중이라 고려할 수 있는 predictor variable이 많아서, response랑 상관없는 predictor까지 response를 예측하는데 활용하는게 'over-fitting'입니다.




Over-fitting 발생 조건

그렇다면 언제 over-fitting이 발생할까요? over-fitting은 주어진 data의 갯수가 적고, predictor의 갯수가 많을 때 발생합니다! 왜냐하면, data가 적을 때는 data가 가지고 있는 어느 factor가 response와 관련 없는 factor인지 구별하는게 쉽지 않기 때문입니다. predictor의 갯수가 많을 때, 즉 flexibility가 높아서 매우 유연한 곡선을 그릴 수 있지만, data의 갯수가 적을 때 over-fitting이 발생하게 되는 것이지요. 따라서 만약 자신이 세운 통계 모델이 predictor가 많이 필요하다면 데이터를 많이 모아야 하고, predictor가 적게 필요하다면 inflexible model 이므로 sample data를 비교적 덜 모아도 괜찮습니다.



제가 틀린 문제를 이제 찬찬히 살펴보겠습니다. 1)에서는 sample data의 갯수는 많고, predictor variable의 갯수는 적은 경우에는 flexible model을 사용하면 어떨지 물어보고 있는데요. 이럴 때는 flexible model이 더 좋은 결과를 내놓습니다. 왜냐하면 predictor 갯수는 비교적 적은데 sample data가 많기 때문에 overfitting이 일어날 가능성이 적기 때문입니다.


반면에 2)번에서는 predictor의 갯수는 많은데 sample size가 적으므로, 이런 곳에서 flexible model을 사용하면 '키'와 전혀 상관이 없는 'TV 출현 여부'라는 factor를 사용해서 모델을 학습하게 됩니다. 그렇다면 '타일러 라쉬도 TV에 출연했으니 키가 클꺼야!'라는 이상한 결론에 도달할 수 있게 되는거죠. 이처럼 sample size가 작은 경우에는 어쩔 수 없이 predictor의 갯수를 줄여야 합니다.



이상입니다. 혹시 질문 있으시다면 밑에 댓글로 달아주시면 답변드리도록 하겠습니다 ^^


# 1차 수정

이 글은 랩 친구의 조언으로 2018년 4월 18일에 1차 수정되었습니다.

728x90
더보기

댓글,

하얀눈곰

프랑스에서 살아가며 드는 생각들을 적는 블로그