특이도
특이도(Specificity)는 실제 음성인 데이터 중에서 모델이 음성으로 올바르게 예측한 비율을 나타내는 분류 모델의 성능 평가 지표이다. 주로 질병 진단, 이상 탐지, 스팸 탐지, 보안 탐지 등에서 실제 음성을 얼마나 잘 걸러내는지를 평가할 때 사용된다.
특이도는 이진 분류 문제에서 실제로 음성인 대상을 모델이 얼마나 정확하게 음성으로 판별했는지를 나타낸다.
예를 들어 질병 진단 모델에서 음성은 "질병이 없는 사람"을 의미할 수 있다. 이때 특이도가 높다는 것은 실제로 질병이 없는 사람을 정상으로 잘 판별한다는 뜻이다.
특이도는 재현율과 함께 이진 분류 모델의 성능을 해석할 때 중요하다. 재현율이 실제 양성을 얼마나 잘 찾아내는지를 나타낸다면, 특이도는 실제 음성을 얼마나 잘 제외하는지를 나타낸다.
특이도는 실제 음성 중에서 음성으로 올바르게 예측한 비율이다.
특이도 = 실제 음성 중 음성으로 올바르게 예측한 수 / 전체 실제 음성 수
혼동 행렬 기준으로 표현하면 다음과 같다.
특이도 = TN / (TN + FP)
여기서 각 항목의 의미는 다음과 같다.
| 기호 | 의미 | 설명 |
|---|---|---|
| TN | True Negative | 실제 음성을 음성으로 올바르게 예측 |
| FP | False Positive | 실제 음성을 양성으로 잘못 예측 |
특이도는 혼동 행렬에서 실제 음성 행을 기준으로 계산한다.
| 실제 \ 예측 | 양성 예측 | 음성 예측 |
|---|---|---|
| 실제 양성 | TP | FN |
| 실제 음성 | FP | TN |
특이도는 실제 음성인 FP와 TN 중에서 TN이 차지하는 비율이다.
특이도 = TN / (FP + TN)
이진 분류 모델의 결과가 다음과 같다고 하자.
| 구분 | 개수 |
|---|---|
| True Positive | 40 |
| True Negative | 50 |
| False Positive | 10 |
| False Negative | 5 |
특이도는 실제 음성 데이터인 TN과 FP를 기준으로 계산한다.
특이도 = TN / (TN + FP) 특이도 = 50 / (50 + 10) 특이도 = 50 / 60 특이도 = 0.8333
따라서 이 모델의 특이도는 약 83.3%이다.
특이도가 높다는 것은 실제 음성인 대상을 양성으로 잘못 판단하는 경우가 적다는 뜻이다.
즉, 특이도는 다음 질문에 답하는 지표이다.
실제로 음성인 것들 중에서 모델이 얼마나 잘 음성으로 판별했는가?
예를 들어 질병 진단에서 특이도가 높으면 실제로 질병이 없는 사람을 질병이 있다고 오진하는 경우가 줄어든다.
특이도는 위양성률(False Positive Rate)과 반대되는 개념이다.
위양성률 = FP / (FP + TN) 특이도 = TN / (TN + FP)
따라서 다음 관계가 성립한다.
특이도 = 1 - 위양성률 위양성률 = 1 - 특이도
| 구분 | 의미 | 식 |
|---|---|---|
| 특이도 | 실제 음성 중 음성으로 맞힌 비율 | TN / (TN + FP) |
| 위양성률 | 실제 음성 중 양성으로 잘못 예측한 비율 | FP / (FP + TN) |
재현율은 실제 양성 중에서 양성으로 올바르게 예측한 비율이다. 반면 특이도는 실제 음성 중에서 음성으로 올바르게 예측한 비율이다.
| 구분 | 영어 | 기준 | 식 |
|---|---|---|---|
| 재현율 | Sensitivity, Recall | 실제 양성 | TP / (TP + FN) |
| 특이도 | Specificity | 실제 음성 | TN / (TN + FP) |
재현율은 양성을 잘 찾아내는 능력이고, 특이도는 음성을 잘 배제하는 능력이다.
재현율은 의료 통계나 진단 검사 분야에서 민감도(Sensitivity)라고도 부른다.
민감도와 특이도는 진단 검사의 성능을 평가할 때 함께 사용된다.
| 구분 | 의미 | 관심 대상 |
|---|---|---|
| 민감도 | 실제 양성을 양성으로 판별하는 능력 | 질병이 있는 사람을 놓치지 않는 능력 |
| 특이도 | 실제 음성을 음성으로 판별하는 능력 | 질병이 없는 사람을 오진하지 않는 능력 |
정확도는 전체 예측 중 맞힌 비율이다. 반면 특이도는 실제 음성에 대해서만 계산한다.
| 구분 | 설명 | 식 |
|---|---|---|
| 정확도 | 전체 예측 중 올바른 예측 비율 | (TP + TN) / (TP + TN + FP + FN) |
| 특이도 | 실제 음성 중 음성으로 맞힌 비율 | TN / (TN + FP) |
정확도는 전체 성능을 직관적으로 보여주지만, 클래스 불균형이 심한 경우에는 모델 성능을 왜곡할 수 있다. 특이도는 음성 클래스에 대한 모델의 판별 능력을 별도로 보여준다.
정밀도는 양성으로 예측한 것 중 실제 양성의 비율이다. 특이도는 실제 음성 중 음성으로 맞힌 비율이다.
| 구분 | 설명 | 식 |
|---|---|---|
| 정밀도 | 양성 예측 중 실제 양성 비율 | TP / (TP + FP) |
| 특이도 | 실제 음성 중 음성 예측 비율 | TN / (TN + FP) |
정밀도는 양성 예측의 신뢰도를 나타내고, 특이도는 실제 음성을 잘 걸러내는 능력을 나타낸다.
특이도는 다음과 같은 분야에서 활용된다.
질병이 없는 사람을 질병이 있다고 잘못 판단하는 오진을 줄이는 데 중요하다.
예:
- 암 검진
- 감염병 검사
- 유전 질환 검사
- 건강검진 판정
정상 메일을 스팸으로 잘못 분류하지 않는 능력을 평가할 수 있다.
정상 거래를 사기 거래로 잘못 판단하는 비율을 줄이는 데 중요하다.
정상 트래픽이나 정상 행위를 공격으로 잘못 탐지하는 오탐을 줄이는 데 활용된다.
정상 제품을 불량으로 잘못 판정하는 경우를 줄이는 데 사용된다.
특이도는 위양성, 즉 False Positive를 줄이는 것이 중요한 상황에서 특히 중요하다.
예를 들어 다음과 같은 경우 특이도가 중요하다.
- 정상 사용자를 공격자로 오탐하면 서비스 이용에 불편이 큰 경우
- 정상 거래를 사기 거래로 오탐하면 고객 불만이 커지는 경우
- 정상 제품을 불량으로 오판하면 폐기 비용이 증가하는 경우
- 질병이 없는 사람을 질병이 있다고 판정하면 추가 검사 비용과 심리적 부담이 큰 경우
이진 분류 모델은 보통 양성일 확률을 출력하고, 임계값을 기준으로 양성 또는 음성을 결정한다.
예측 확률 >= 임계값 → 양성 예측 확률 < 임계값 → 음성
임계값을 높이면 양성으로 예측하는 기준이 엄격해진다. 이 경우 FP가 줄어들 수 있으므로 특이도는 높아지는 경향이 있다.
반대로 임계값을 낮추면 양성으로 예측하는 대상이 늘어나므로 FP가 증가하고 특이도가 낮아질 수 있다.
민감도와 특이도는 서로 trade-off 관계를 가질 수 있다.
- 민감도를 높이려면 양성을 더 많이 잡아내야 한다.
- 이 과정에서 실제 음성을 양성으로 잘못 판단하는 FP가 늘어날 수 있다.
- FP가 늘어나면 특이도는 낮아질 수 있다.
반대로 특이도를 높이기 위해 양성 판정 기준을 엄격하게 하면 실제 양성을 놓치는 FN이 늘어나 민감도가 낮아질 수 있다.
ROC 곡선은 다양한 임계값에서 민감도와 위양성률의 관계를 나타낸 그래프이다.
ROC 곡선에서 사용되는 축은 일반적으로 다음과 같다.
| 축 | 지표 | 식 |
|---|---|---|
| y축 | 민감도, 재현율, True Positive Rate | TP / (TP + FN) |
| x축 | 위양성률, False Positive Rate | FP / (FP + TN) |
특이도와 위양성률은 다음 관계를 가지므로, ROC 곡선은 특이도와도 밀접하게 관련된다.
위양성률 = 1 - 특이도
PR 곡선은 정밀도와 재현율의 관계를 나타내는 그래프이다.
ROC 곡선은 민감도와 위양성률을 사용하므로 특이도와 관련이 깊다. 반면 PR 곡선은 양성 클래스 예측 성능을 더 직접적으로 보여준다.
불균형 데이터에서는 ROC-AUC보다 PR-AUC가 더 유용한 경우도 있다.
보안이나 이상 탐지에서는 FP를 오탐이라고 부르는 경우가 많다.
특이도가 낮으면 오탐이 많다는 의미가 될 수 있다.
예:
- 정상 사용자를 공격자로 탐지
- 정상 거래를 사기 거래로 탐지
- 정상 메일을 스팸으로 탐지
- 정상 서버 요청을 침입으로 탐지
오탐이 많으면 운영자가 경고를 신뢰하지 않게 되는 경보 피로가 발생할 수 있다.
어떤 진단 검사에서 실제로 질병이 없는 사람이 100명이고, 이 중 95명을 정상으로 판정하고 5명을 질병 있음으로 잘못 판정했다고 하자.
TN = 95 FP = 5
특이도는 다음과 같다.
특이도 = 95 / (95 + 5) 특이도 = 0.95
즉, 이 검사의 특이도는 95%이다.
이는 질병이 없는 사람을 정상으로 잘 판정하는 능력이 높다는 뜻이다.
scikit-learn에서는 특이도를 직접 계산하는 함수가 기본 지표명으로 제공되지 않는 경우가 많으므로, 혼동 행렬에서 TN과 FP를 구해 계산할 수 있다.
from sklearn.metrics import confusion_matrix y_true = [1, 1, 0, 0, 0, 1] y_pred = [1, 0, 0, 0, 1, 1] tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel() specificity = tn / (tn + fp) print(specificity)
위 예시에서 실제 음성 중 음성으로 맞힌 비율이 특이도이다.
특이도의 장점은 다음과 같다.
- 실제 음성 클래스에 대한 판별 능력을 확인할 수 있다.
- False Positive를 줄이는 관점에서 유용하다.
- 의료 진단, 보안 탐지, 사기 탐지 등에서 중요하다.
- 민감도와 함께 모델의 균형을 평가할 수 있다.
- ROC 분석과 연결하여 해석할 수 있다.
특이도의 한계는 다음과 같다.
- 양성 클래스를 얼마나 잘 찾는지는 보여주지 않는다.
- 특이도만 높고 민감도가 낮은 모델은 실제 양성을 많이 놓칠 수 있다.
- 클래스 불균형 문제를 완전히 해결하지는 못한다.
- 임계값에 따라 값이 크게 달라질 수 있다.
- 단독 지표로 모델 전체 성능을 평가하기 어렵다.
| 지표 | 의미 | 식 |
|---|---|---|
| 정확도 | 전체 예측 중 맞힌 비율 | (TP + TN) / (TP + TN + FP + FN) |
| 정밀도 | 양성 예측 중 실제 양성 비율 | TP / (TP + FP) |
| 재현율 | 실제 양성 중 양성으로 맞힌 비율 | TP / (TP + FN) |
| 특이도 | 실제 음성 중 음성으로 맞힌 비율 | TN / (TN + FP) |
| 위양성률 | 실제 음성 중 양성으로 잘못 예측한 비율 | FP / (FP + TN) |
특이도는 혼동 행렬에서 TN과 FP를 기준으로 계산하는 지표이므로, 혼동 행렬과 함께 학습하는 것이 중요하다.
학습할 때는 다음을 중심으로 정리한다.
- 특이도의 정의
- 특이도의 계산식
- TN과 FP의 의미
- 민감도와의 차이
- 재현율과의 관계
- 위양성률과의 관계
- ROC 곡선과의 관계
- 임계값 변화에 따른 특이도 변화
- 오탐을 줄이는 상황에서의 활용
- 특이도는 실제 음성 중 음성으로 올바르게 예측한 비율이다.
- 특이도는 TN / (TN + FP)로 계산한다.
- 특이도는 Specificity라고 한다.
- 특이도는 실제 음성을 잘 걸러내는 능력을 나타낸다.
- 민감도는 실제 양성을 잘 찾아내는 능력을 나타낸다.
- 민감도는 TP / (TP + FN)으로 계산한다.
- 특이도와 위양성률은 서로 보완 관계이다.
- 위양성률은 FP / (FP + TN)으로 계산한다.
- 위양성률 = 1 - 특이도이다.
- ROC 곡선의 x축은 위양성률이며, 이는 1 - 특이도이다.
- 특이도가 높으면 실제 음성을 양성으로 잘못 판단하는 경우가 적다.
- 특이도만 높고 민감도가 낮으면 실제 양성을 많이 놓칠 수 있다.
