데이터사이언스에서 예측모델 종류
지금까지의 데이터과학에서는
통계학,머신러닝,딥러닝 각각에
훌륭한 예측모델 후보군들이 있다.
예를들면, 통계학에서는 elasticnet, spline 계열 모형, 커널을 이용한 모형(SVM 및 커널머신 또는 gaussian process),
머신러닝에서는 트리를 이용한 랜덤포레스트, 부스팅,
딥러닝에서는 대규모의 뉴런들을 이용한 DNN(Deep Neural Network) 이 있다.
(생각해보니 SVM을 머신러닝으로 쳐야할지도 모르겠다. 경계가 워낙 모호해서...)
뭐 이 외에도 많은 모델들이 있겠지만
내가 생각했을때 대표주자로 생각되는 모델들이다.
그런데 통계학에서의 모델인 SVM은 커널을 이용해서 꽤나 유연한 함수(반응변수와 설명변수의 관계)를 잡아내지만 데이터가 커지면 시간이 오래걸리고(튜닝때문에 배로 걸리지만, 이는 연산 병렬처리로 해결이 되는듯 하다. 하지만 연산 시간이 데이터의 개수에 세제곱배로 늘어나는거로 알고 있다.) 성능도 랜덤포레스트에 미치지 못하는것 같다.(개인적인 경험으로는 그렇다.)
한편, 랜덤포레스트는 그냥 무난하다. 별도의 튜닝을 하지 않아도 꽤나 좋은 성능을 내며 데이터가 커지면 좀 오래 걸리긴 하지만 그래도 무지막지하게 커지는거 같지는 않다.(랜덤포레스트의 시간복잡도가 데이터 개수의 빅오 표현으로 어떻게 되는지는 확인이 필요하다.)
그리고 개인적으로는 데이터가 매우 커지면(수천개 까지는 통계모델로도 커버가 될거같다.) 딥러닝으로 해결을 해야한다고 믿고있다. 이에 대한 시간들과 성능들을 비교해본것은 아니지만, 일단 직감은 그렇다.
물론 이는 n>>p, n =p , n <<p 인 상황에서 또한 다 다를것이다. (n은 데이터의 개수, p는 설명변수의 개수)
이에 대한 부분은 경험적인 부분 또는 Numerical study를 통해 경험이 축적되어야 할것이다.
즉, 데이터의 특성에 따라 잘 맞는 모델들이 있을것으로 보인다.
지금 직감으로는 중소규모의 데이터에서는 통계모델이 꽤나 활약을 할것같고, 대규모의 데이터에서는 딥러닝이 활약할거같다. 그리고 랜덤포레스트는 왠지 어떤 데이터의 규모이던지 간에 평타이상은 칠거같은 느낌이다.
여기까지의 얘기는 cross sectional study 상황에서의 얘기들이다. (Longitudinal data 혹은, Non-i.i.d 상황에서는 달라질 수 있다는 얘기이다.)
여기에서 미래를 예측할때, 예측하는 시점의 설명변수가 주어지지 않은 경우에는 시계열 모형도 함께 고려해야 할수 있다. 이때는 또 이때대로 또다른 특성이 있을것이다.
지금까지의 데이터과학은 계속해서 발전하면서 많은 도구들이 생겨났다.
특히, 컴퓨터의 발전으로 베이지안통계, 딥러닝이 현실적으로 가능하게 되었다. 근데 이 많은 도구들을 적재적소에 사용하는건 계속해나가야 할 과제라고 생각한다.(현실적인 시간내에 최적의 성능을 내는 모델을 찾는게 중요.)