Tuesday, December 10, 2013

Significant test (t-test)

오래만에 글을 게시합니다.

오늘은 significant test에 대해서 이야기를 하려고 합니다.
요즘은 논문을 쓰고 실험 결과를 비교할 때 단순히 성능만을 보이는 것이 아니라, 성능의 차이가 우연히 일어나지 않은 의미있는 차이를 만들었는지에 대한 평가를 해봐야 합니다.

이것을 significant test라고 하고 종류로는 여러가지가 있습니다.
그중 가장 많이 쓰이는 것이 t-test입니다.
이 테스트는 비교하려는 두 성능 분포가 정규분포라는 가정하에 평가를 진행하는 것이라서,
정규분포가 아니면 다른 방법을 써야 합니다.

t-test는 엑셀로도 계산을 할 수 있지만, 아래 사이트를 사용하면 쉽게 계산을 할 수 있습니다.

http://studentsttest.com/
http://www.graphpad.com/quickcalcs/ttest1.cfm

두 사이트를 보면 선택해야 될 옵션들이 있는데 두가지 옵션을 이해하시면 됩니다.

1. unpaired vs. paired : 비교하는 방식에 사용된 데이타가 같은지, 다른지의 구분입니다. 만약 두 기법에서 사용된 실험 데이터가 같다면 paired, 다르다면 unpaired를 선택하시면 됩니다. (위에 첫번째 사이트에서 groups are matched가 paired를 의미합니다.)
2. one-tailed (one-sided) vs. two-tailed (two-sided): 두 정규 분포의 차이를 볼때 양쪽 끝을 다 고려할 것이냐? 아니면 한쪽만을 고려할 것이냐? 구분입니다. 만약 제안한 기법이 기존 기법보다 더 성능이 좋다는 것을 알고 있다면 한쪽만 보면 되기 때문에 one-tailed를 선택하면 됩니다. (두번째 사이트의 단점은 two-tailed t-test 결과만을 제공한다는 점입니다.)

* 논문작성 시 baseline과 proposed method와 성능의 차이를 significant test를 한다면 보통 제안 기법이 더 성능이 좋고 같은 데이터 안에서 실험하는 경우가 대부분이기 때문에 one-tailed paired t-test를 선택하면 됩니다.

마지막으로 일반적으로 정보검색에서는 topic(query)별 성능 결과를 짝을 맞추어 입력하면 되고, 분류에서는 10/5 folds cross-validation을 했을 때는 폴더 별 성능을 짝을 맞추어 넣으면 되고, train과 test구분이 되어 있어서 cross-validation을 하지 않은 경우에는 category별 성능을 짝을 맞추어 입력하면 됩니다.

오늘은 여기까지 하고, 다른 significant test기법 등은 다음 기회에 다시 올리겠습니다.