cross validation에 대해서 공부해보자. 이 방법은 data mining쪽에서 아주 많이 사용되는 model measurement의 일부이다. 우리가 하나의 model을 build했을 때 그것이 얼마나 좋은 model인지 알기 위해서는 한번의 test만으로는 불가능하다. 여러번 해봐야 된다. 그런데 dataset은 하나. 방법은 k로 나눠서 생각해보는 것이다.
하나의 데이터를 위와 같이 10개(k=10)로 나누어서 그 중에 하나는 test set으로 사용하고 나머지 9개는 train set으로 사용하는 것이다. 위의 그림에서 보면 1 fold에서 data를 10개로 쪼개서 그 중 하나만(초록색) test set으로 사용하고 나머지 9개(노란색) dataset은 train set으로 사용한다는 것이다. 2-fold에서도 같은 방법으로 하되 첫번째 dataset이 아닌 두번째 dataset을 test set으로 하겠다는 것이다. 그렇게 k번 반복하는 것이다. 이렇게 하면 하나의 dataset을 가지고 k번의 test를 할 수 있다. 그러면 k개의 결과가 나오는데 그거 어떻게 평가할까?
이것이 이번 포스팅의 포인트이다. cross validation measurement에 대하여 설명해보도록 하자. 여기서 하나의 cross validation만 생각해보지 않고 여러 classifier 끼리의 measurement를 생각해보자. (덤으로 각 알고리즘의 평균/표준편차도 구했다)
자 만일 우리가 어떤 classification을 만드려고 하는데 algorithm 1, 2, 3을 써서 10 cross validation을 돌렸더니 위와 같은 Accuracy가 나왔다고 하자. 뭘 써야 할까? 위와 같은 경우에는 사실 굳이 뭐 해볼 필요도 없이 당연히 Algorithm2를 써야된다. 왜냐하면 평균도 가장 높고 분산도 algorithm3에 비해서 낮으니까. 그런데 이거를 어떻게 수학적으로 증명할 것인가? 그것을 알기 위해서 이전에 포스팅했던 confidence level을 이용한다. 본격적으로 confidence level을 통해 어떤 것이 더 좋은지 증명하기 전에 한 가지 내용만 추가해보자. 바로 null hypothesis에 대한 이야기이다.
Null hypothesis는 말 그대로 가정이다. 좋은 예가 있으니 예를 들어서 설명해보자. 가령 미국의 어린이들의 콜레스테롤 수치가 궁금하다. 미국인 전체의 콜레스테롤 수치가 평균:190, 표준편차:15 라고 해보자. 이 상태에서 100명의 어린이를 sampling하여 그 아이들의 콜레스테롤 수치를 측정했더니 그 평균이 198이었다. 이것의 Z값은 어떻게 되는가?
(단, s = 표준편차, x_bar = sample mean, u0 = real mean, n = sample size)
위와 같이 된다. t-value는 test-statistic이라고도 하며 sample에 대한 Z값이라고 생각하면 된다. 아무튼 t-value는 (198-190)/(15/sqrt(100)) = 5.33이 된다. 이 말은 무엇인가?
미국인 어린이의 콜레스테롤 수치를 190으로 기대했을 때, 100명의 sample mean을 봤더니 198이 평균이었다. 그리고 그 t-value가 5.33이라는 엄청 높은 숫자가 나왔다. 이 말은 우리가 선택한 100명의 어린이. 그 sample이 198이라는 평균을 나타낼 확률이 무지하게 작다는 것이다. 그 말은 무엇이냐? 아이들 콜레스테롤 평균을 190으로 가정했을 때, 특정 sample 100명을 실제로 계산해봤더니 198이라는 수치가 나올 확률은 극히 적다는 것이다. 거의 그럴 리가 없다는 것이다. 이 말은 미국인 어린이의 콜레스테롤 수치는 190보다는 높을 것이다라는 말로 귀결된다.
아래의 링크를 참고해보라.
https://www.ltcconline.net/greenl/courses/201/hyptest/hypmean.htm
자 이제 다시 본론으로 돌아가서 아래의 세 algorithm을 분석해보자.
(단, null hypothesis = 0)
null hypothesis를 0으로 놨는데, 이는 각각의 algorithm의 차이를 0으로 가정했다는 뜻이고 그 말은 각각의 algorithm은 차이가 없다고 가정했다는 뜻이다. 그렇게 가정하고 계산을 했을 때 위의 t-statistic이 저렇게 나왔다. 이 값을 t-statistic table을 보면서 각각 분석해보자.
A1 - A2 : 둘의 차이를 0으로 가정했다. 1-fold에서 10-fold까지 sample의 차이 평균을 구해보니 차이 평균은 -0.965였고 이것에 해당하는 t-statistic은 -2.4477이다. 위의 table에서 찾아보면 이 값은 0.05 - 0.02 사이에 존재한다. 이 말은 100% - (95% ~ 98%)의 확률이라는 것이다. 즉 우리가 선택한 이 sample은 오로지 2~5%에 해당하는 극히 드문 sample이라는 것이다. 따라서 우리가 예측한 null hypothesis "둘 차이는 0일 것이다"는 거짓으로 보는 것이 맞다. 둘 차이의 performance 차이는 명확하고 부호를 따져보면 A2가 훨씬 좋은 것으로 나타난다.
A2 - A3 : 둘의 차이를 0으로 가정했다. 1-fold에서 10-fold까지 sample의 차이 평균을 구해보니 차이 평균은 0.0295였고, 이것에 해당하는 t-statistic은 0.7308이다. 이 0.7308을 t-statistic table에서 찾아보면 대략 0.5에서 0.4 즉!! 53%정도의 확률로 A2가 더 낫다는 것이다.
A2 - A3 : 생략 -_-
다음 포스팅은 EM algorithm에 대해서 이야기해보도록 하겠다. 아 이거 어려울 것 같은데...
'Data Mining' 카테고리의 다른 글
[Data Mining] Forward-Backward algorithm (1) | 2016.04.06 |
---|---|
[Data Mining] EM algorithm (1) | 2016.04.06 |
[Data Mining] Confidence level (2) | 2016.04.02 |
[Data Mining] Ensemble : Bagging, Random Forest and Boosting (1) | 2016.04.01 |
[Data Mining] HMM : Forward algorithm and Viterbi algorithm (1) | 2016.03.30 |