본문 바로가기
데이터사이언스/인공지능을 처음공부하는 사람들을 위한 글

모델의 선형성과 모델의 capacity에 관하여

by 미스터탁 2022. 9. 22.

우리가 머신러닝을 공부할 때 또는 통계학을 처음 공부할 때 배우는 모형은 바로 선형 회귀 모델(Linear regression model)이다. 그 중에서도 변수가 하나인 단순 선형 회귀 모델(Simple linear regression model)을 공부한다. 모델의 이름을 다시 한번 주의 깊게 보자 '선형' 회귀 모델이다. 즉, 아래 그림 처럼 독립 변수와 종속 변수 사이의 관계에 선형성이 있다라는 가정이 들어가 있다. 선형성이라 함은, X가 증가 할때 Y도 증가하는 특성을 의미한다. 이러한 관계에 있는 데이터들을 직선의 방정식으로 모델링 할 수 방법이 선형 회귀 모델인 것이다.   

분명, 선형 회귀 모델은 다른 모델에 비해 설명력이 떨어진다고 느껴질 수 있다. 하지만, 그러한 문제들은 대부분 '비선형'적인 관계를 모델링 해야하는 문제일 가능성이 높다. 가장 처음 배우는 모델이고, 다른 모델의 학습법의 기본이 되는 모델이기 때문에, 매우 약한 모델이고 쓸모 없는 모델이라고 생각하기 마련이지만, 사실 그렇지 않다. '선형성'을 요구하는 문제에서는 오히려 이 선형 모델 들(다중회귀 모델, LASSO, Ridge 등)이 꽤 좋은 모습을 보이기도 한다. 필자를 포함하여 많은 사람들은 머신러닝 문제를 접하면 우선 gradient boosting 또는 딥러닝등을 먼저 떠올리곤 한다. 풀고자 하는 도메인의 특성상 바로 그러한 모델들을 고려해야하는 경우가 많이 있지만, 우리는 문제에 따라서 선형 모델을 고려해야 할 때도 있다.

 

우리는 바로 이 선형성이라는 것에 대해 주목 할 필요가 있다. 다음과 같은 질문에 대해 한번 생각해보자

 

  • '어떤 사람이 보험의 사기를 칠 가능성이 높을까?'
  • '어떤 사람이 폐암에 걸릴 확률이 높을까?'
  • '어떤 사람이 게임을 그만 둘 확률이 높을까?'

사실 이러한 질문들은 현업에서는 매우 중요한 질문이다. 이 질문에 대해서는 상식적인 선에서는 다음과 같이 대답 할 수 있을 것이다.

 

  • '보험가입을 단기간에 많이 하는 사람'
  • '담배를 많이 피는 사람'
  • '투자하는 시간 대비, 얻는 효용(경험치, 아이템 등)이 적은 사람'

이 외에도 다양한 요인들이 있을 수 있지만, 이 정도의 요인만을 고려해보자. 상식적인 선에서 이러한 변수들이 종속 변수에 많은 영향을 끼칠 것이라는 것은 누구나 받아 들일 수 있다. 이러한 중요한 독립 변수는 종속 변수와 어떠한 관계가 있는 가? 바로 선형적인 관계가 있다라는 것을 누구나 알 수 있다. 우리가 알지 못한 또는 예상하지 못한 독립 변수에 의해 비선형적인 관계로 종속변수를 설명할 가능성 또한 있다. 하지만, 그로 인해 얻는 모델의 추가적인 성능은 매우 미미할 가능성이 높다. 다시 말해, 많은 사람들은 매우 복잡하고 좋은 모델을 적용하고자 하지만, 그것 보다 더 중요한 것은 이 선형성을 가지는 변수에 있으며 선형성이 강한 문제에 대해서는 복잡한 모델보다 선형 회귀 모델이 더 좋은 성능을 보이기도 한다는 것이다. 

 

혹자는 Gradient boosting이나 딥러닝 모델이 매우 강력하다고 들었는데, 왜 선형 회귀 모델이 좋을 수도 있는 것인지 에 대해서 의문을 가질 수도 있다. 머신러닝을 공부할 때 많이 쓰이는 Iris 데이터나 Titanic 데이터를 생각해보자. 보통 우리는 이 데이터에 대하여 선형회귀모델, k-NN 등 과 같은 단순한 모델을 적합시키고 결과를 확인하는 실습 과정을 거친다. 이러한 간단한 데이터에 대하여 굉장히 복잡한 모델을 적합시키면 무조건 좋다라고 장담할 수 있을까? 전혀, 그렇지 않다. 오히려 테스트에 대한 성능이 떨어지기도 한다. 

 

딥러닝을 생각해보자. 간단한 CNN모델이라도 딥러닝 모델들은 엄청나게 많은 parameter를 요구한다. 복잡한 문제를 풀기 위해서는 더 많은 데이터를 필요로 하고, 이를 위해서는 더 거대한 모델을 필요로 하고, 그에 따라 학습 해야 하는 parameter들의 수는 기하 급수적으로 증가한다. 그래야만, overfitting을 방지 할 수 있고, 테스트에 대한 좋은 성능을 확보 할 수 있다. 이는 딥러닝 모델들에게만 국한되는 내용이 아니다. Gradient boosting이나 다른 모델들에 대해서도 똑같이 적용할 수 있다. Gradient boosting모델들 또한 많은 데이터를 학습시키고 설명하기 위해서는 더욱 복잡한 모델을 요구한다.

 

자, 이를 반대로 생각해보자. 그렇다면, 이 복잡한 모델들은 간단한 문제에 대해서 잘 맞을 것인가? 간단한 문제를 풀기위해서는 더 많은 데이터를 필요로 하지는 않으며, 이에 따라 간단한 모델 만을 필요로 할 것이다. 그런데, 매우 복잡한 모델을 적합시키면 테스트에 데이터에 대한 성능이 유지 될 것인가? 전혀 그렇지 않다 라는 것을 알수 있을 것이다. 학습하는 시간만 생각해봐도 매우 비효율적이라는 것을 알 수 있으며, 모델의 성능 또한 하락할 가능성이 매우 높다.  

 

한국 증시가 오를지 내릴지 예측하는 문제에 대해서, 미국 증시에 관한 변수를 넣는다라고 가정해보자. 사실, 미국 증시가 오르고 내리고에 따라서 한국 증시가 오르고 내리는지는 60%이상의 확률로 예측이 가능하다. 그런데, 수십 수백가지의 파생 변수를 만들어 gradient boosting과 같은 모델을 써봐도 60%의 정확도가 나오지 않을 가능성이 높다 (필자의 경험담이다).  단순히 예측만 한다라고 했을때에는 중요한 변수 몇개만을 써서 선형 회귀 모델을 쓰는것이 훨씬 더 정확도가 높고 효율적일 것이다.

 

이러한 이유로 우리는 풀고자 하는 문제의 도메인에 대한 이해를 필요로 한다. 풀고자 하는 문제가 선형 문제인지 비선형 문제인지 알아야 하며 (데이터로도 확인을 하는것이 좋다) 데이터의 크기가 어느정도이며 어떠한 특성을 가지고 있는지 파악을 하고 그에 따라 모델을 선택해야한다. 모델의 크기는 풀고자하는 문제의 복잡성과 데이터의 크기에 비례하게 되는데, 이는 정확히 가늠하기 어렵다. 그러므로, 우리는 실험 설계를 적절히 하고 hyper-parameter tunning을 해야한다. 

 

여기서 내가 강조하고 싶은 것은 두가지이다. '데이터의 선형성' 에 대해 생각해 볼 필요가 있다는 점, 그리고 데이터와 문제의 크기에 맞게 모델을 선택해야 한다는 점이다.

 

 

 

 

반응형

댓글