12.5 모델 비교의 통계

실습 · 연습문제 2개

여러 데이터셋에서의 평균 순위와 critical difference average-ranks

방법 kk개를 데이터셋 NN개에서 비교할 때는 점수를 평균하기보다, 데이터셋마다 순위를 매긴 뒤 순위를 평균한다(Demšar, 2006). 세 함수를 완성한다.

  1. average_ranks(scores, lower_is_better=True)
    • scores는 shape (N, k) 배열이다. scores[i, j]는 데이터셋 ii에서 방법 jj의 점수다.
    • 데이터셋(행)마다 가장 좋은 방법이 순위 1이다. lower_is_better=True이면 작은 점수가 좋다(오차), False이면 큰 점수가 좋다(정확도).
    • 동점이면 그 순위들의 평균을 준다. 예: 두 방법이 공동 1위면 둘 다 1.5.
    • 방법마다 평균 순위, 즉 shape (k,) 배열을 반환한다.
  2. friedman_chi2(avg_ranks, n_datasets): Friedman 통계량 χF2=12Nk(k+1)[∑jRj2−k(k+1)24]\chi^2_F = \frac{12N}{k(k+1)}\left[\sum_j R_j^2 - \frac{k(k+1)^2}{4}\right] RjR_j는 방법 jj의 평균 순위다.
  3. critical_difference(k, n_datasets, q_alpha): Nemenyi 사후 검정의 critical difference CD=qαk(k+1)6N\mathrm{CD} = q_\alpha\sqrt{\frac{k(k+1)}{6N}} 두 방법의 평균 순위 차이가 CD보다 크면 차이가 유의하다고 본다.

seed 결과 요약: 표준편차, 표준오차, 짝지은 차이 seed-summary

같은 실험을 seed만 바꿔 여러 번 실행한 점수를 보고용 숫자로 요약하는 두 함수를 완성한다.

  1. summarize(scores): 점수 배열 하나를 받아 사전 {"n", "mean", "sd", "se"}를 반환한다.
    • sd는 실행 사이의 퍼짐을 나타내는 표본 표준편차(n−1n-1로 나눈다).
    • se는 평균의 표준오차 sd/n\mathrm{sd}/\sqrt{n}이다.
  2. paired_summary(a, b, t_crit): 같은 seed(같은 분할)에서 얻은 두 방법의 점수 a[i], b[i]를 받아 차이 di=bi−aid_i = b_i - a_i를 요약한다. 사전 {"mean_diff", "se", "lo", "hi", "wins_b"}를 반환한다.
    • se는 차이 did_i의 표준오차.
    • lo, hi는 mean_diff ∓ t_crit * se. t_crit은 호출하는 쪽이 자유도 n−1n-1에 맞춰 넘긴다(예: n=5n = 5이면 2.776).
    • wins_b는 bi<aib_i < a_i인 seed의 수(점수가 오차라서 작을수록 좋다고 가정한다).

테스트는 표준편차와 표준오차를 구분하는지, 짝지은 차이가 seed마다 공통인 변동을 상쇄하는지 확인한다.