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단계: 분할표(Contingency Table) 구성
| 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)
특정 범주가 지배적으로 많은 데이터셋에서는 평가자들이 거의 완벽하게 일치해도 값이 매우 높아져 가 기대보다 낮게 산출될 수 있다. 이 현상은 [[카파의 역설]]로 별도 관리한다. 따라서 불균형 데이터에서는 단순 일치율, label prevalence, positive/negative agreement, [[카파 계수의 prevalence와 bias 효과]]를 함께 확인해야 한다.
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 — 의미적 유사도 평가 지표 (자동 평가 메트릭과의 비교군)
- [[카파의 역설]] — 높은 관찰 일치율에도 kappa가 낮아지는 marginal imbalance 현상
- [[카파 계수의 prevalence와 bias 효과]] — kappa를 관찰 일치율, prevalence, bias로 분해하는 관점
- [[Gwet’s AC1]] — high agreement 상황에서 kappa paradox에 덜 민감하도록 제안된 대안 계수
- [[Krippendorff’s Alpha]] — 결측치가 있거나 다양한 척도를 다루는 더 유연한 대안 지표
- [[Weighted Kappa]] — 오차의 크기를 반영해야 하는 순서형 범주용 지표
- [[ICC]] — 연속형/점수형 데이터에서의 평가자 간 일치도 지표


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