벤치마크 결과값이 유의미하게 다른지 검증하기

Written on July 9, 2018

당신이 특정 프로그램의 성능을 향상시키는 기막힌 방법을 찾아서 구현에 성공하였다고 하자. 물론 당신은 천재이기 때문에 당신이 만든 수정이 성능 향상을 가져온다는 것은 명약관화하다. 그러나 당신만큼 똑똑하지 못한 사람들을 위해 당신이 만든 수정이 정말로 성능 향상을 가져왔는지 검증하는 것은 필요하다.
벤치마크는 성능 테스트를 위한 훌륭한 모의 수단이다. 기존의 프로그램의 벤치마크 결과는 XX이고, 당신의 수정을 반영한 프로그램은 XX보다는 높은 YY라는 결과를 내놓았다. 한 번의 결과는 신뢰할 수 없다고 보고, 여러번 수행한 결과 일관되게 보다 높은 수치를 관찰할 수 있었다.
그런데 YY가 XX보다 높긴 하지만, 이 정도의 차이가 유의미한지는 어떻게 검증할 수 있을까? 즉, YY에서 관찰된 성능 향상이 확률적 운에 의한 결과가 아니라는 것을 증명할 수 있는가? 디헹이 통계학에서는 이러한 상황을 위한 기법들을 자세히 마련해 놓았기에, 우리는 그것들을 그져 가져다 쓰기만 하면 된다.

영가설

먼저, 무엇인가가 유의미한가를 따지기 위해서는 영가설(null hypothesis)를 세우는 것이 필요하다. 검증은 영가설을 기각함으로서 이루어진다. 영가설을 기각하는 것의 자세한 의미는 통계학 교과서를 참고하기를 바란다. 우리가 알아야할 것은 한가지 뿐인데, 즉 우리가 통계적으로 얻을 수 있는 결과는 영가설을 기각할 수 있는 가능성(probability)뿐이라는 사실이다. 이것만 명심하자. 따라서 지금 세워볼만한 영가설은 다음과 같다.

수정된 프로그램의 벤치마크 결과값(실험군)의 모집단과 기존 프로그램의 벤치마크 결과값(대조군)의 평균의 차이가 0이다.

이 가설을 기각하면, 우리는 두 집단의 결과값이 서로 다르다는 명제에 가까운 결과값을 얻을 수 있다.

Independent two-sample t-test1

모집단의 분포를 알지 못하는 상황에서 집단을 비교하기 위해서는 t-test를 이용해야 한다. 우리의 실험의 경우, 두 표본 집단을 비교하게 되므로 two-sample에 해당한다. 그리고 자료들이 어떤 짝 관계를 이루는 것이 아니기 때문에, independent를 이용하면 된다.

그런데 independent two-sample t-test는 두 집단의 분산이 서로 같은지에 따라 계산법이 다르다. 분산이 다른 경우의 t-test를 따로 Welch’s t-test 라고 부르기도 한다.2
분산이라는 것은 모집한 표본에 따라 다른 것이기 때문에, 해당 표본에 대해서 두 분산이 같은 지 여부를 검증해 주어야 한다. 이를 equality of variances 를 검증한다고 한다.

F-test of equality of variances3

F-test는 두 집단의 분산이 동일한지 여부를 검증하는 테스트 중 하나이다. f-test 이외에도 다른 테스트가 있다. Levene’s test, Bartlett’s test, Brown–Forsythe test 등이 가능한 옵션이다. 하지만 엑셀에서 기본적으로 지원하는 것이 f-test이므로 그냥 f-test를 사용한다.
F-score를 계산하여 분산이 같거나 같지 않음을 보이면, 그 결과에 따라 t-test를 수행하면 된다.

example ressult

P-Value significance T-Score d.f. Variance Equality F-Score d.f.1 / d.f.2 F Critical one-tail ( α = 0.05)
.001863 p < .01 (99%) 5.9875 5 False 13.65217085 4 / 4 6.388232909

이 결과에 따라, 당신이 만든 수정은 매우 유의미하게 성능을 향상시킨다.

논의

이러한 방식의 한계는 f-test가 데이터의 분포가 normal인지 여부에 매우 민감하며, 원래 t-test 도 central limit theorem에 의해 보완된다 뿐이지 normal distribution을 요구한다. 하지만 우리는 벤치마크 결과가 normal인지 확신하기는 어렵다… 하지만 답이 없으므로 그냥 쓰는게 맞지 않을까.

  1. https://en.wikipedia.org/wiki/Student%27s_t-test#Independent_two-sample_t-test 

  2. https://en.wikipedia.org/wiki/Welch%27s_t-test 

  3. https://en.wikipedia.org/wiki/F-test_of_equality_of_variances