요약
CCC (Concordance Correlation Coefficient) Loss는 예측값과 실제값 간의 일치도(agreement)를 측정하는 손실 함수다. 상관관계뿐 아니라 평균과 분산의 차이까지 반영하여 MSE보다 더 엄격한 평가를 한다.
본문
Concordance란?
**Concordance(일치)**는 두 측정값이 얼마나 동일한 값으로 일치하는지를 나타낸다.
Correlation (상관) : 같이 올라가고 내려가는가? (방향)
Concordance (일치) : 실제로 같은 값인가? (절대적 일치)
| 실제값 | 예측값 A | 예측값 B |
|---|---|---|
| 1 | 1 | 2 |
| 2 | 2 | 4 |
| 3 | 3 | 6 |
- 예측값 A: Correlation = 1, Concordance = 1 (완벽 일치)
- 예측값 B: Correlation = 1, Concordance < 1 (패턴은 같지만 값이 다름)
어원: 라틴어 con- (함께) + cord- (마음) → "마음이 일치하다"
CCC 공식
- : Pearson 상관계수
- : 예측값, 실제값의 표준편차
- : 예측값, 실제값의 평균
CCC Loss
- CCC 범위: -1 ~ 1 (1이면 완벽한 일치)
- Loss 범위: 0 ~ 2 (0이면 완벽한 일치)
Pearson 상관계수와의 차이
| 측면 | Pearson | CCC |
|---|---|---|
| 선형 관계 | ✓ | ✓ |
| 평균 차이 반영 | ✗ | ✓ |
| 스케일 차이 반영 | ✗ | ✓ |
Pearson은 y = 2x + 100도 상관계수 1이지만, CCC는 y = x일 때만 1이다.
사용 사례
- 감정 인식: Valence, Arousal 연속값 예측
- 의료 영상: 정량적 측정값 예측
- 음성 분석: prosody feature 예측
- 평가자 간 일치도(inter-rater agreement) 측정
장단점
장점:
- 예측이 실제값과 얼마나 "일치"하는지 직접 측정
- 바이어스와 스케일 오류 모두 페널티
단점:
- 배치 크기가 작으면 불안정
- 미분 가능하지만 MSE보다 최적화 어려울 수 있음
PyTorch 구현 예시
def ccc_loss(pred, target):
pred_mean = pred.mean()
target_mean = target.mean()
pred_var = pred.var()
target_var = target.var()
covar = ((pred - pred_mean) * (target - target_mean)).mean()
ccc = (2 * covar) / (pred_var + target_var + (pred_mean - target_mean) ** 2 + 1e-8)
return 1 - ccc
참고
- MSE와 Huber 같은 회귀 loss
- Pearson Correlation Coefficient
- Lin's Concordance Correlation Coefficient (1989)