23.11 투고와 동료 심사

실습 · 연습문제 1개

심사자 간 일치도: Cohen kappa cohen-kappa

두 심사자가 같은 논문 NN편에 범주 판정(예: "accept", "weak", "reject")을 내렸다. 두 판정이 같은 비율인 관측 일치율 pop_o는 범주가 한쪽에 쏠려 있으면 우연만으로도 높아진다. Cohen kappa는 우연히 일치할 비율 pep_e를 빼고 남은 일치를 잰다.

κ=po−pe1−pe,pe=∑kp1k p2k\kappa = \frac{p_o - p_e}{1 - p_e}, \qquad p_e = \sum_{k} p_{1k}\, p_{2k}

p1kp_{1k}, p2kp_{2k}는 각각 심사자 1과 2가 범주 kk를 고른 비율이다. 합은 두 심사자 중 한 명이라도 쓴 모든 범주에 대해 한다.

함수 cohen_kappa(a, b)를 완성한다.

인자 설명
a 심사자 1의 판정. 길이 NN인 리스트 또는 배열(정수·문자열 범주 모두 가능)
b 심사자 2의 판정. 길이 NN
  • 반환값은 float인 kappa다.
  • 두 심사자가 모두 같은 한 범주만 썼다면 pe=1p_e = 1이라 kappa가 정의되지 않는다. 이때는 float("nan")을 반환한다.
  • a와 b의 길이가 다르면 ValueError를 낸다.

테스트는 완전 일치(kappa = 1), 본문의 예(0.375), 무조건 같은 판정을 내리는 심사자(kappa = 0), 세 범주 문자열 판정, 정의되지 않는 경우를 확인한다.

힌트: np.union1d(a, b)로 두 심사자가 쓴 범주를 모은다.