'머신러닝'에 해당되는 글 1건

  1. 2022.02.03 이진 분류 - 정밀도, 재현율

1. 오차행렬(confusion matrix)

실제 값이 행이 되고 예측값이 열이 되며, 해당 좌표에 실제 값과 예측값의 조합의 수를 넣어서 만든 행렬을 오차행렬이라 한다. 예를 들어 다음과 같은 3 x 3 오차행렬을 보자.

  predict
1 2 3
actual 1 5 3 4
2 21 10 9
3 16 17 15


좌표 (1, 1)에 해당하는 값 5는 정답이 1인 것을 1로 정확히 맞춘 것이 5개 있다는 뜻이다. 좌표 (1, 2)에 해당하는 값 3은 정답이 1인 것을 2라고 잘못 맞춘 것이 3개 있다는 뜻이다. 즉 이 테이블에서 정답은 (1, 1), (2, 2), (3, 3) 좌표에 해당하는 값이 된다. 전체가 100개이고 이 중 대각선 요소를 합하면 5 + 10 + 15 = 30이니 정답률은 30%가 될 것이다.

 

2. 이진 분류(binary classification)

위에 있는 분류 문제가 데이터셋을 세 가지 클래스로 분류하는 다중 분류(multiple classification)였다면 데이터셋을 두 가지 클래스로 분류하는 문제를 이진 분류(binary classification)이라 한다. 위에 있는 문제로 이진 분류로 변환할 수 있다. 예를 들어, 데이터셋을 1, 2, 3 세 가지로 분류할 게 아니라, 1인 것과 그 나머지(2, 3)로 분류한다고 해보자. 그럼 오차행렬을 다음과 같이 2 x 2 행렬로 변환할 수 있다.

 

  1 Not 1
1 5 7
Not 1 37 51

 

머신러닝에서는 이진 분류에서 '1'과 'Not 1'을 'Positive', 'Negative'로 부른다. 내 생각에는 어차피 이진 분류니 P와 N을 뒤바꿔 불러도 상관없을 것 같은데 통상 'Not'에 해당하는 것을 'Negative'라 한다. 이진 분류의 오차행렬은 다음과 같이 쓸 수 있다.

 

  (predict) Positive (predict) Negative
(actual) Positive TP (True Positive) 5 FN (False Negative) 7
(actual) Negative FP( False Positive) 37 TN (True Negative) 51

 

3. 정확도 측정 지표

정확도 측정 지표는 네 종류가 있다.

3-1. 정확도(accuracy)

3-2. 정밀도(precision)

3-3. 재현율(recall) 또는 민감도(sensitivity) = 진짜양성비율(True Positive Rate, TPR)

3-4. 특이도(specificity) = 진짜음성비율(True Negative Rate, TNR)

3-5. 거짓양성비율(False Positive Rate, FPR)

 

3-6. F1 스코어

 

정확도 하나만 있으면 될 거 같은데 왜 이렇게 많은 지표가 있는 걸까. 그 이유는 데이터의 실제 값이 어느 한 값이 압도적으로 많은 불균형 데이터인 경우에 성능이 나빠도 정확도는 높게 나올 수가 있기 때문이다. 위의 예를 보면 실제 값이 Positive인 비율은 12%이다. 즉, 무조건 Negative라고 예측해도 정확도가 88%는 나오는데 이걸 성능이 좋다고 말할 수는 없다. 일반적으로 정밀도와 재현율을 같이 보며, 둘은 트레이드오프 관계가 있다. 어느 한쪽이 너무 낮으면 좋은 분류기라고 볼 수 없다.

 

4. 분류기 성능을 볼 수 있는 두 개의 곡선

4-1. PR 곡선(정밀도/재현율 곡선)

그림에서 보는 것처럼 재현율을 높이다 보면 어느 지점에서 정밀도가 급격하게 떨어지기 시작한다. 아마도 정밀도가 급격하게 떨어지기 직전의 임계값을 갖도록 하는 것이 가장 이상적일 것이다.

 

4-2. ROC 곡선

FPR에 대한 TPR의 곡선을 ROC 곡선이라고 한다. 아래와 같이 생겼다.

곡선 아래의 면적(Area Under Curve, AUC)이 분류기의 성능이 된다. 즉, AUC=1이면 완전한 분류기이고, 완전히 랜덤한 분류기인 경우 45도 대각선(그림의 점선)이 되기 때문에 AUC=0.5가 된다.

 

1) 양성이 적거나, 거짓 음성보다 거짓 양성이 더 중요하면 → PR 곡선을 사용한다.

2) 그렇지 않으면 → ROC 곡선을 사용한다.

 

참고) 핸즈온 머신러닝 2판(오렐리앙 제롱 저, 박해선 역), 한빛미디어 pp.133-143

Posted by jujaeuk
,