실무를 뛰면서 머신러닝 모델과 통계 모델을 같이 돌리고 있다.
여기서 굳이 머신러닝 모델과 통계 모델로 구분한 이유는
통계 모델의 경우 대체로 모델에 대한 가정, 특히 잔차의 분포에 대한 가정이
강하게 들어가는 편이고 가능도(likelihood)를 기반으로 모델 파라미터가
추정이 되는 반면에 머신러닝 모델의 경우 모델에 대한 기본 알고리즘이 존재하긴
하지만, 그것이 분포에 대한 가정으로까지 이어지지 않는 경우가 많다.
즉, 머신러닝 모델은 '~~이런 알고리즘으로 하면 우리가 원하는 형태로 모델이
output을 잘 내주지 않을까요?' 라고 가정한다고 본다면, 통계 모델은 좀 더
직접적으로 '우리의 데이터가 이러한 Data Generating Process (DGP)' 에
의해 탄생하지 않았을까요? 라고 가정한다.
그리고 해당 통계 모델의 DGP를 이루는 파라미터들을 모수 라고 한다.
결국 통계모델은 데이터를 통해서 모수를 추정하는 문제로 만들어 버린다.
(따라서 통계모델은 이처럼 분포가정을 하기 때문에 신뢰구간 등을 뽑아내는데
유리한 면은 있다)
하지만 머신러닝 모델이나 통계 모델 (특히 베이지안 통계)이나 모두 하이퍼파라미터
라는게 존재한다.
하이퍼파라미터는 파라미터(모수)와 다른 개념으로 데이터로부터 학습되는 것이
아니라 사람이 설정해주어야 하는 값이다.
예를 들면, 의사결정나무에서 나무의 깊이라던지, SVM에서 C의 크기라던지,
Elastic net 에서 람다1, 람다2의 크기라던지, 심지어는 딥러닝 모델에서
Layer수, 에폭의 개수 따위가 될 수 있겠다.
이러한 하이퍼파라미터들은 보통 모델의 유연한 정도를 결정하며, 데이터마다
적절한 모델의 유연도가 존재하기에
(즉, bias-variance trade off 를 고려하여 overfitting이 되지 않는
한에서 유연하게)
이를 validation 이란 것을 통해서 튜닝해줄 필요성이 있다.
즉 Train외의 데이터 (out of sample) 을 이용하여 모델의 일반화 성능을 간접적으로
체크하는 것이다.
그런데 머신러닝에서는 cross validation 을 하는것이 일반적이나, 통계모델에서는
그러지 않는 경우도 꽤 있다.
특히 통계학에서는 goodness of fit 이라고 해서 모델의 적합도에 좀 더 신경을 쓰는 편이다.
그런데 정말 통계모델은 validation이라는 것을 하지 않아도 되는 것일까?
사실 이것이 내가 요근래 다소 혼란스러웠던 부분이고 이 글의 화두라고 볼 수 있겠다.
필자는 통계학과를 나왔는데 통계학 수업 중 회귀 분석과 시계열 분석 이라는 수업이
모델링에 가장 가까운 수업이 아니었나싶다.
(물론 기계학습 수업도 있긴 있었지만 여기선 번외로 하자)
그런데 회귀분석, 시계열분석을 각각 1학기씩 수강하면서 느낀 점은 의외로
validation작업이 거의 언급되지 않았다는 점이다.
두가지 다 모델에 대한 수업인데 어떻게 그것이 가능했을까?
여기에 대해 의문을 품게 되었다.
생각해보면 회귀분석을 배울때나 시계열 분석을 배울 때 모두 모델의 가정,
그것에 따라오는 성질을 이론적으로 푸는데 상당한 시간을 썼었고 데이터가
우리가 가정한 모델에 얼마나 잘 적합하는지 체크하기 위해 잔차(residual)
라는 것에 신경을 상당히 많이 썼던걸로 기억한다.
잔차라는 것은 데이터(y)의 실제값에서 모델의 예측값(또는 적합값) 을 뺀 것을
말하는데 이 잔차가 크게 문제가 없으면
(가정이 맞다는 전제하에 응당히 나와야할 모양이 나온다면)
모델이 크게 이상하지 않구나 라고 넘어가는 식이다.
그와 더불어 AIC(Akaike Information Criterion) 와 여러가지 검정법들을 동원한다.
이렇게 여러모로 내가 적합한 모델의 적합도 (Goodness of fit) 를 여러가지 면에서
확인하고 인정받으려 하는것에 가깝다.
이는 모델의 가정에 대한 재 확인으로써 통계 이론적 관점에서는 당연히 검증해야할
절차라고 생각된다. 하지만 문제는 그럼 다 된 것일까?
예측에 대한 재확인은 하지 않아도 될까? (향후 예측이 목적이라면)
데이터 분석에는 크게 두가지 목적이 있다고 생각한다.
첫번째, 인사이트를 얻기 위한것. 두번째, 예측을 위한 것.
둘은 비슷해보이지만 다르다. 인사이트를 얻기 위한것은 A라는 변수가 B라는 변수에
어떻게 영향을 주는지, 또는 변수들간의 인과관계를 파악하는것에 가깝지만,
예측을 위한것은 그 관계 자체보다는 그 관계가 잘 학습이 되어서
향후 예측을 하는데 이 모델이 쓸모가 있느냐 하는 것이다.
전자의 경우 모델의 가정이나 정확한 p-value 값등이 중요할 것이지만
후자의 경우에는 모델에 대한 가정보다는 예측력 자체가 더 중요할수도 있다.
즉, 예측이 목적이라면 모델의 가정에 대한 재확인보다도 validation 작업이 더
필요할수도 있다.
하지만 그럼에도 불구하고 필자의 실무 경험을 바탕으로 본다면 모델의 가정에 대한
재확인이 예측력까지도 보장해주는 경우가 꽤 많았다.
다시말해, 모델에 대한 가정이 성립하는 경우 그것이 모델의 예측력으로까지 이어지는
경우가 꽤 많았다.
예를 들어 ARIMA 모델의 p,d,q 를 찾는 문제가 있다고 하자.
머신러닝적 관점으로 보자면 이 p,d,q를 찾기 위해 validation set을 적절히 설정해주어야
할 것이고 데이터의 손실과 시간적 손실(예를 들어 그리드서치, 랜덤서치같은걸 한다면)이
필연적으로 들 수 밖에 없다.
그러나 이를 통계학적 관점으로 보자면 모델에 대한 가정을 기반으로 하므로
stationarity check, acf, pacf plot 등 통계적 툴들을 활용하여 p,d,q를
찾을 것이며 마지막으로 잔차 검정 등을 통하여
모델의 적합도까지 더블체킹할 것이다.
(또는 AIC 기반의 auto arima 를 사용할지도 모른다)
위 두가지 관점의 차이가 보이는가?
머신러닝적 관점은 좀 더 직관적이라고 생각이 들지 모르나 시간적 부담감은
물론이고 out of sample 을 따로 떼어놔야 한다는 부담감도 있고 내가 잡은
validation set이 과연 일반화를 잘 대표할 샘플인지에 대한 불안감도 있다.
특히 이는 샘플수가 적을때는 정말로 부담되는 상황일 것이다.
(예를 들면 15개 데이터로 내가 뭘 해본다고 했을때)
통계학적 관점은 그런면에서 데이터 수가 적을때 더욱 진가를 발휘할 수 있다.
그리고 경험적으로 봤을때 통계적 관점으로 모델 fitting을 한다고 하여도 overfitting
이슈는 잘 발생하지 않았다.
(필자는 이 일련의 통계학적 프로세스 자체가 일종의 regularization 역할 을 한게 아닌가 싶다)
이론적 근거가 아예 없는것은 아니다. 통계학적 관점에서 모델 선택에 자주 활용되는
지표인 AIC 는 작을수록 좋은 것으로 알려져 있는데
이는 모수 개수에 패널티를 준 로그 가능도를 최대화 하는 것이 되기 때문에
overfitting 이슈를 방지할 수 있을것으로 보인다.
또한 이 AIC가 작아진다는 것은 점근적으로(asymptotically) out of sample 의
mse가 최소가 되는것과 동치가 된다고 알려져있다.
(이 사실은 예전에 대학원 수업때 들었던 것인데 확실하지 않을수도 있다)
어쨌든 그럼에도 불구하고 모델에 대한 가정을 진단하고
(즉, goodness of fit test 를 마치고)
validation 까지 별도로 진행한다면 가장 robust한 approach가 될수 있다는 것은
나도 인정한다.
하지만 데이터수가 적다면 통계학적 관점은 아주 좋은 대안이 될 수 있고,
validation set이 제대로 지정되지 않았을때의 위험도 벗어날 수 있다.
그리고 경험상, 그렇게 통계학적 관점으로만 모델링을 진행해도 예측력이
꽤 준수하게 나온 경우가 많았다!
하지만 통계학적 관점의 가장 큰 단점은 아무래도 사람손을 많이 탄다는 것이겠다.
모델의 적합도를 평가할 여러 진단 도구들을 잘 이해하고 판단할 숙련된 연구자가
필요하다.
그래서 정리하자면 모델의 하이퍼파라미터를 정하기 위해
일반적으로 많이 쓰는 머신러닝적 관점(cross validation 등)과
별도의 validation이 필요치 않는 통계학적 관점(goodness of fit, 잔차검정) 을
고려해볼수 있으며 데이터 수가 적거나 컴퓨팅 리소스에 한계가 있거나
validation set의 대표성에 의심이 가는 경우에는 통계학적 관점이
유리하다는 것이다.
'데이터 사이언스 > 데이터사이언스(실무)' 카테고리의 다른 글
통계학이 공부할만한 충분한 가치가 있는지에 대한 고찰 (2) | 2024.09.08 |
---|---|
공부해야할것들 (개인적) (0) | 2023.06.26 |
무언가를 분명하게 말해준다는게 얼마나 어려운 일인지 (2) | 2023.03.05 |
통계학 전공자로써 현업에서 일하면서 느끼는점 (4) | 2023.01.06 |
데이터로부터 온전한 인과관계를 파악한다는 것 (0) | 2022.11.15 |