TL;DR
- Cohen’s Kappa () 는 두 평가자 간의 범주형 판정 일치도를 우연에 의한 일치 확률을 보정하여 측정하는 지표다.
- 단순 일치율의 한계를 보완하여 데이터 라벨링의 신뢰성이나 사람 평가(Human Evaluation)의 객관성을 검증하는 데 필수적으로 사용된다.
Cohen’s Kappa: 평가자 간 신뢰도 지표
데이터 사이언스 및 연구 방법론에서 평가자 간의 판단 일관성은 데이터의 신뢰성을 결정하는 핵심 요소다. Cohen’s Kappa는 두 평가자가 우연히 같은 선택을 했을 가능성(Chance Agreement)을 배제하고 순수한 일치도를 정량화한다.
1. 이론적 배경: 단순 일치율의 한계
단순 일치율(Percent Agreement)은 각 범주의 출현 빈도가 극단적으로 편향된 경우, 실제 합의 없이도 높게 측정되는 경향이 있다.
핵심 공식
- (Observed agreement): 실제 관찰된 일치율.
- (Expected agreement): 각 평가자의 범주 선택 확률을 바탕으로 계산된 기대 우연 일치율.
2. 산출 프로세스 (Step-by-Step)
50개의 샘플을 두 명의 평가자(A, B)가 Safe / Unsafe로 분류한 시나리오를 가정한다.
1단계: 오차 행렬(Confusion Matrix) 구성
| B: Safe | B: Unsafe | 합계 (A) | |
|---|---|---|---|
| A: Safe | 37 | 3 | 40 |
| A: Unsafe | 2 | 8 | 10 |
| 합계 (B) | 39 | 11 | 50 |
2단계: 및 계산
- (관찰 일치율):
- (우연 일치율):
- 둘 다
Safe일 확률: - 둘 다
Unsafe일 확률:
- 둘 다
3단계: 도출
- 해석: 단순 일치율은 90%이나, 우연 효과를 보정한 실제 합의도는 약 0.698 (Substantial) 수준이다.
3. 해석 가이드라인 (Landis & Koch, 1977)
| Kappa () | 일치도 수준 |
|---|---|
| < 0.00 | Poor (우연보다 낮음) |
| 0.00 ~ 0.20 | Slight |
| 0.21 ~ 0.40 | Fair |
| 0.41 ~ 0.60 | Moderate |
| 0.61 ~ 0.80 | Substantial (상당함) |
| 0.81 ~ 1.00 | Almost Perfect |
4. 확장 규격
- Weighted Kappa: 범주 간 거리가 유의미한 순서형(Ordinal) 데이터에서 오차의 크기에 따라 차등 가중치를 부여할 때 사용한다.
- Fleiss’ Kappa: 평가자가 3명 이상인 다중 평가 상황에서 사용되는 범주형 일치도 지표다.
5. 실무 고려사항 및 한계
5.1. 카파의 역설 (Prevalence Problem)
특정 범주가 지배적으로 많은(예: 99%가 ‘정상’) 데이터셋에서는 평가자들이 거의 완벽하게 일치해도 값이 매우 높아져 가 기대보다 낮게 산출될 수 있다. 따라서 불균형 데이터에서는 단순 일치율과 카파를 반드시 병행 표기해야 한다.
5.2. 낮은 카파 점수의 해석
점수가 낮다고 해서 반드시 평가자의 숙련도 문제로 단정할 수는 없다. 다음과 같은 복합적 원인을 검토해야 한다.
- 가이드라인 부재: 라벨링 기준이 모호하여 평가자마다 주관이 개입됨.
- 태스크 난이도: 문제 자체가 전문가조차 판단하기 어려운 고난도 영역임.
- 범주 정의 중첩: 선택지 간의 경계가 불분명함.
5.3. 생성 데이터 검수 관점 (LLM Context)
LLM 응답의 사실성(Factuality), 안전성(Safety), 품질(Helpfulness) 평가 시 카파는 “검수 기준이 객관적으로 작동하고 있는가” 를 증명하는 척도가 된다. 두 전문가가 독립적으로 검수한 결과의 카파 값이 높을수록, 해당 벤치마크나 리더보드의 신뢰도가 확보된다.
6. 구현 예시 (Python)
from sklearn.metrics import cohen_kappa_score
# 평가자 A와 B의 판정 결과 (0: Safe, 1: Unsafe)
rater_a = [0, 0, 1, 0, 1, 0, 0, 0]
rater_b = [0, 1, 1, 0, 1, 0, 0, 1]
# Cohen's Kappa 계산
kappa = cohen_kappa_score(rater_a, rater_b)
print(f"Cohen's Kappa: {kappa:.3f}")Connections
- BERTScore — 의미적 유사도 평가 지표 (자동 평가 메트릭과의 비교군)
- [[Krippendorff’s Alpha]] — 결측치가 있거나 다양한 척도를 다루는 더 유연한 대안 지표
- [[Weighted Kappa]] — 오차의 크기를 반영해야 하는 순서형 범주용 지표
- [[ICC]] — 연속형/점수형 데이터에서의 평가자 간 일치도 지표


Discussion
Comments
댓글은 승인 후 공개됩니다.