오차행렬 (Confusion Metrix)
내가 예측한 클래스와 실제 클래스가 어떻게 되는지를 확인하는 쉬운 방법 중 하나이다. 오차행렬이 아니라 혼동행렬이라고도 한다.
이진분류라 하면 아래와 같이 실제값이 참(positive)인 경우와 거짓(negative)인 경우를 열로, 예측값이 참인 경우와 거짓인 경우를 행으로 넣어 아래와 같이 만들 수 있다. 행에 실제값을, 열에 예측값을 넣는 경우도 있으니 확인해야 한다.
actual positive | actual negative | |
predicted positive | $ TP $ (true positive) |
$ FP $ (false positive) |
predicted negative | $ FN $ (false negative) |
$ TN $ (true negative) |
이진분류가 아니라 다중분류라면 각 열과 행이 클래스가 된다.
정확도 (Accuracy)
총 데이터 중 예측 결과가 동일한 건수의 비율로 이진분류 케이스의 경우 다음과 같다.
$$ \mathrm{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} $$
정확도는 가장 직관적인 지표지만, 데이터의 클래스 불균형(class imbalance)이 심할 경우 오해를 불러일으킬 수 있어 주의가 필요하다. 예를 들어, 어떤 이진 분류 문제에서 전체 훈련 데이터의 $80$%가 참(positive) 클래스라고 가정하자. 이때, 모든 데이터를 무조건 참으로 예측하는 모델은 실제로 아무런 판단 능력이 없음에도 불구하고 정확도 $0.8$ 을 기록하게 된다.
정밀도 (Precision)
예측한 참 값 중에 실제로도 참인 비율이다. 실제로는 거짓인데 참으로 예측하는 $ FP $ 를 줄이고 싶을 때 중요하다.
$$ \mathrm{Precision} = \frac{TP}{TP + FP} $$
재현율 (Recall)
실제 참 값 중에 정확히 참으로 예측한 비율이다. 민감도(sensitivity)와 같다. 실제로는 참인데 거짓으로 예측하는 $ FN $ 을 줄이고 싶을 때 중요하다.
$$ \mathrm{Recall} = \frac{TP}{TP + FN} $$
정밀도와 재현율 트레이브오프 (Trade-off)
정밀도와 재현율은 이진 분류 문제에서 모델의 성능을 평가할 때 자주 사용하는 지표인데, 이 두 지표는 서로 밀접한 관련이 있지만, 기본적으로 트레이드오프(trade-off) 관계에 있다. 즉, 한 쪽을 높이면 다른 쪽이 낮아질 수 있다.
정밀도는 모델이 참이라고 예측한 결과 중 실제로 참인 비율을 나타낸다. 반면 재현율은 실제로 참인 데이터 중에서 모델이 얼마나 많이 참으로 잘 찾아냈는지를 측정한다. 이 두 지표는 모델의 예측 기준, 즉 결정 임계값(threshold)에 따라 서로 영향을 주고받는데, 예를 들어, 어떤 모델에서 임계값을 낮추면, 더 많은 데이터를 참으로 예측하게 됩니다. 그 결과 실제 참인 데이터($TP$)를 더 많이 맞출 수 있어 재현율은 높아지지만, 동시에 실제는 거짓인 데이터($FP$)까지 참으로 잘못 분류할 확률이 올라가므로 정밀도는 떨어지게 된다. 반대로 임계값을 높이면, 확신이 있는 경우에만 참으로 예측하므로 정밀도는 올라가지만, 재현율은 떨어지게 된다, 왜냐하면 놓치는 양성($FN$)이 늘어나기 때문이다.
이러한 이유로 어떤 문제에서는 정밀도를, 다른 문제에서는 재현율을 더 중요하게 여길 수 있다. 예를 들어, 이메일 스팸 필터에서는 정밀도가 중요하고, 질병 진단처럼 실제 참을 놓치면 안 되는 경우에는 재현율이 더 중요하다.
특이도 (Specificity)
실제 거짓 값 중에 정확히 거짓으로 예측한 비율이다.
$$ \mathrm{Specificity} = \frac{TN}{TN + FP} $$
F1-Score
정밀도와 재현율의 조화 평균(harmonic mean)이다. 두 지표를 모두 반영해야 할 때, 혹은 앞서 정밀도와 재현율이 트레이드오프 관계에 있기 때문에 어느 한쪽으로 극단적이지 않은 기준이 필요할 때 많이 사용한다.
$$ \text{F1-score} = 2 \times \frac{\mathrm{Precision} \times \mathrm{Recall}}{\mathrm{Precision} + \mathrm{Recall}} $$
ROC 곡선과 AUC
ROC 곡선(receiver operation characteristic curve)과 이에 기반한 AUC 스코어는 이진 분류에서 특히 중요하게 사용되는 지표이다. ROC 곡선은 $x$축에 실제 거짓 중에 참으로 예측한 비율, 즉 $ 1 - \mathrm{Specificity} $ 를 놓고, $y$축에 민감도를 놓은 상태로 임계값(threshold)을 바꿔가며 둘 관계를 시각화한 곡선이다. $ x $축을 FPR(false positive rate), $ y $축을 TPR(true positive rate)라고도 한다.
AUC(area under the curve)는 ROC 곡선 아래의 면적을 의미하며 모델이 양성과 음성을 얼마나 잘 구분하는지를 수치로 표현한다.
ROC 곡선을 그리면 위와 같이 나타난다. 모든 분류를 완벽하게 해내는 모델이 있다면 위 그림에서 perfect classifier 위치에 ROC 곡선이 있을 것이다. 반대로 분류를 무작위로 하는 모델이 있다면 위 그림에서 random classifier과 같은 곡선이 그려진다. 즉 곡선이 좌상단으로 휘어질수록 모델이 성능이 뛰어난 것이고, 평평해져서 $(0,0)$ 과 $(1, 1)$ 을 잇는 직선에 가까울수록 모델 성능이 떨어지는 것이다. 이를 수치화한 것이 AUC로 $ 1 $ 에 가까울수록 좋은 모델이고, $ 0.5 $ 에 가까울수록 나쁜 모델이며, $ 0.5 $ 이하라면 반대로 예측하는 경우일 것이다.
'Artificial Intelligence > Machine Learning' 카테고리의 다른 글
[ML] 정칙화(regularization)와 릿지회귀(ridge regression), 라쏘회귀(LASSO regression), 엘라스틱넷회귀(elastic net regression) (0) | 2025.03.31 |
---|---|
[ML] 선형회귀모델(linear regression model) (0) | 2025.03.29 |
[ML] 경사 하강법(gradient descent) (0) | 2025.03.27 |
[ML] 머신러닝 용어 및 개요 (0) | 2025.03.11 |
[ML] 머신러닝(machine learning) 개념 및 소개 (0) | 2025.02.12 |