실습 · 연습문제 2개
여러 데이터셋에서의 평균 순위와 critical difference average-ranks
방법 개를 데이터셋 개에서 비교할 때는 점수를 평균하기보다, 데이터셋마다 순위를 매긴 뒤 순위를 평균한다(Demšar, 2006). 세 함수를 완성한다.
average_ranks(scores, lower_is_better=True)scores는 shape(N, k)배열이다.scores[i, j]는 데이터셋 에서 방법 의 점수다.- 데이터셋(행)마다 가장 좋은 방법이 순위 1이다.
lower_is_better=True이면 작은 점수가 좋다(오차),False이면 큰 점수가 좋다(정확도). - 동점이면 그 순위들의 평균을 준다. 예: 두 방법이 공동 1위면 둘 다 1.5.
- 방법마다 평균 순위, 즉 shape
(k,)배열을 반환한다.
friedman_chi2(avg_ranks, n_datasets): Friedman 통계량 는 방법 의 평균 순위다.critical_difference(k, n_datasets, q_alpha): Nemenyi 사후 검정의 critical difference 두 방법의 평균 순위 차이가 CD보다 크면 차이가 유의하다고 본다.
seed 결과 요약: 표준편차, 표준오차, 짝지은 차이 seed-summary
같은 실험을 seed만 바꿔 여러 번 실행한 점수를 보고용 숫자로 요약하는 두 함수를 완성한다.
summarize(scores): 점수 배열 하나를 받아 사전{"n", "mean", "sd", "se"}를 반환한다.sd는 실행 사이의 퍼짐을 나타내는 표본 표준편차(로 나눈다).se는 평균의 표준오차 이다.
paired_summary(a, b, t_crit): 같은 seed(같은 분할)에서 얻은 두 방법의 점수a[i],b[i]를 받아 차이 를 요약한다. 사전{"mean_diff", "se", "lo", "hi", "wins_b"}를 반환한다.se는 차이 의 표준오차.lo,hi는mean_diff ∓ t_crit * se.t_crit은 호출하는 쪽이 자유도 에 맞춰 넘긴다(예: 이면 2.776).wins_b는 인 seed의 수(점수가 오차라서 작을수록 좋다고 가정한다).
테스트는 표준편차와 표준오차를 구분하는지, 짝지은 차이가 seed마다 공통인 변동을 상쇄하는지 확인한다.