데이터 분석 초보자를 위한 Accuracy, Precision, Recall

Gayeon Kim·2020년 10월 23일
0

데이터 분석

목록 보기
6/9

1. "이 모델은 정확도가 90%입니다."


어느 날, 한 발명가가 당신에게 찾아와서 이렇게 말했다. "제가 당신이 암에 걸렸는지 걸리지 않았는지 맞히는 기기를 발명했습니다. 이 기기의 정확도는 90%입니다. 이것만 있으면 당신이 암에 걸렸는지 걸리지 않았는지 집에서도 쉽게 알 수 있습니다. 사시겠습니까?" 어떤가. 상당히 혹하지 않는가? 내가 암에 걸렸는지 걸리지 않았는지 90%의 정확도로 알 수 있다니. 많은 사람들이 당장에라도 지갑을 열고 싶을 것이다. 하지만 여기서 당신이 주목해야 할 부분이 있다. 바로 저 발명가가 '정확도가 90%'라고 말했다는 점이다. 정확도는 말 그대로 '얼마나 정확하게 예측했는가'를 알려주는 평가지표이다. 그러니까 정확도가 90%면 좋은 거 아니냐고? 당신이 이 글을 다 읽은 뒤에는 저 말에 담긴 비밀을 알 수 있을 것이다.

발명가가 발명했다는 기기는 암인지, 아닌지 분류를 하는 것이므로 일종의 분류 모델이다. 분류 모델의 성능을 평가 하는 지표에는 여러가지가 있다. 발명가가 언급한 정확도도 분류 모델의 성능 평가 지표 중 하나이다. 오늘은 이 기기 사례를 통해서 분류 모델의 성능 평가 지표 중 정확도(Accuracy)와 정밀도(Precision), 그리고 재현율(Recall)에 대해 알아보려 한다.



2. Confusion Matrix


만약 당신이 발명가의 기기를 사용했다면 그 결과는 아래 4가지 중 하나일 것이다.

  • 실제로 암이고, 암으로 예측한 경우
  • 실제로 암인데, 암이 아니라고 예측한 경우
  • 실제로 암이 아닌데, 암이라고 예측한 경우
  • 실제로 암이 아닌데, 암이 아니라고 예측한 경우

암인 경우를 Positive, 암이 아닌 경우를 Negative라고 한다면, 위의 내용은 아래와 같이 표로 표현할 수 있다.

Predicted PositivePredicted Negative
Actual PositiveTrue Positive (TP)False Negative (FN)
Actual NegativeFalse Positive (FP)True Negative (TN)

위와 같이 분류 모델의 예측 값과 실제 값의 관계를 정리한 표를 Confusion Matrix라고 한다. Confusion Matrix는 각 칸마다 TP, TN, FP, FN라는 이름을 가지고 있다. 만약 이 표를 처음 본다면 각 칸의 이름이 다 비슷비슷하게 보여서 헷갈릴 수 있다. 그럴 때는 예측 값이 진짜인지, 가짜인지를 생각해보면 조금 쉽게 이해할 수 있다. 예를 들어, 암이 아니라고(Negative) 예측했는데 실제로는 암이었다면(Positive) 예측 값인 Negative는 가짜이므로 False Negative(FN)이다. 반대로 암이라고(Positive) 예측했는데 실제로는 암이 아니었다면(Negative) 예측 값인 Positive는 가짜이므로 False Positive(FP)이다. Confusion Matrix는 분류 모델의 성능을 이야기할 때 유용하게 사용되므로 친숙해지도록 하자.



3. 분류 모델의 성능 평가 지표 살펴보기


당신은 발명가에게 기기의 정확도가 90%가 나온 근거를 보여달라고 말했다. 그랬더니 발명가는 아래와 같은 표를 제시했다.

Predicted PositivePredicted Negative
Actual Positive(TP) 50(FN) 80
Actual Negative(FP) 20(TN) 850

이 표는 발명가가 기기의 정확도를 계산하기 위해서 1,000명을 대상으로 테스트한 결과를 Confusion Matrix로 정리한 것이다. 1,000명 중에서 진짜로 암인 사람은 130명이고, 암이 아닌 사람은 870명이다. 실제로 암이었고 암이라고 예측된 사람은 50명, 실제로 암이었는데 암이 아니라고 예측된 사람은 80명이다. 실제로 암이 아니었는데 암이라고 예측된 사람은 20명, 실제로 암이 아니었는데 암이 아니라고 예측된 사람은 850명이다.


1) 정확도 (Accuracy)

Accuracy=TP+FPTotal=50+8501000=0.9Accuracy = \frac{TP + FP}{Total} = \frac{50 + 850}{1000} = 0.9

정확도(Accuracy)란 앞에서 언급했듯이 분류 모델이 얼마나 정확하게 분류했는지 평가하는 지표이다. 따라서 정확하게 분류한 값에 해당하는 TP와 FP를 전체 샘플의 수로 나누어 계산한다. 위 공식을 사용해서 발명가가 만든 기기의 정확도를 계산해보았더니 0.9가 나왔다. 발명가의 말대로 기기를 사용하면 정확도 90%로 사람들을 암인지 암이 아닌지 분류할 수 있다. 그럼 발명가의 말이 맞으니 이제 기기를 사도 되는 것일까? 그렇지 않다. 앞에서도 언급했듯이 우리는 발명가가 '정확도가 90%'라고 말했음에 주목해야 한다. 발명가가 보여준 실험 결과에서 연구대상자 1,000명 중에서 실제로 암인 사람이 130명, 암이 아닌 사람이 870명이었던 것을 기억하는가? 이렇게 target이 편향되어 있으면 TP와 FP가 정확도에 미치는 영향이 동일하지 않다. 예를 들어, 발명가의 기기가 아래와 같이 암이 아닌 경우는 모두 맞혔지만 암인 경우는 하나도 맞히지 못했다고 생각해보자.

Predicted PositivePredicted Negative
Actual Positive(TP) 0(FN) 130
Actual Negative(FP) 0(TN) 870

이 기기는 암인 사람을 하나도 맞히지 못했는데도 정확도는 (0 + 870) / 1000 = 0.87이라는 높은 값이 나온다. 반대로 아래처럼 암인 경우는 모두 맞히고 암이 아닌 경우는 하나도 맞히지 못한다면 어떨까.

Predicted PositivePredicted Negative
Actual Positive(TP) 130(FN) 0
Actual Negative(FP) 870(TN) 0

이 기기는 암인 사람은 모두 맞혔음에도 정확도가 (130 + 0) / 1000 = 0.13밖에 되지 않는다. 이처럼 target이 편향되어 있을 때는 정확도만으로는 모델의 성능을 파악하기 어렵다. 그러므로 이런 경우에는 모델의 성능 평가를 위해서 뒤에서 다룰 정밀도(Precision)과 재현율(Recall)을 확인하는 게 좋다.


2) 정밀도 (Precisoin)

Precision=TPTP+FP=5050+200.71Precision = \frac{TP}{TP+FP} = \frac{50}{50 + 20} \approx 0.71

정밀도(Precisoin)란 Positive라고 분류한 것 중에서 실제로 Positive인 게 얼마나 되는지 알고 싶을 때 확인하는 지표이다. 정밀도를 구해보면 발명가의 기기가 암이라고 했을 때, 진짜 암인 경우가 얼마나 되는지 알 수 있다. 위 공식을 사용해서 발명가의 기기의 정밀도를 구해보았더니 약 0.71이 나왔다. 즉, 기기가 암이라고 분류한 사람 중에 71% 정도가 진짜 암에 걸린 사람이다. 정밀도가 꽤 높긴 하지만, 이제 당신은 발명가의 말을 처음 들었을 때와는 달리 기기를 살 필요가 있을지 조금 고민이 될 것이다.


3) 재현율 (Recall)

Recall=TPTP+FN=5050+800.38Recall = \frac{TP}{TP+FN} = \frac{50}{50 + 80} \approx 0.38

정밀도를 확인한 당신은 실제 암인 경우에 기기가 이를 얼마나 잘 맞히는지 알아보고 싶어졌다. 이럴 때 사용하는 지표가 바로 재현율이다. 재현율(Recall)은 실제 Positive 중에서 Positive라고 분류한 게 얼마나 되는지 알고 싶을 때 사용하는 지표이다. 기기의 재현율을 계산해 보았더니 약 0.38밖에 되지 않았다. 즉, 만약 암에 걸렸을 때 기기가 암이라고 분류하는 경우가 약 38% 밖에 되지 않는 것이다. 어떤가. 기기를 사야겠다는 생각이 바뀌지 않았는가?



4. "제일 중요한 평가 지표가 무엇인가요?"


지금까지 가상의 한 발명가가 발명한 기기 이야기를 통해서 분류 모델의 평가 지표에 대해서 알아보았다. 위의 내용을 통해서 정확도가 0.9인 분류 모델이라도 정밀도와 재현율을 살펴보면 그렇게 성능이 좋지 않을 수 있음을 확인하였다. 여기까지 글을 읽은 누군가는 '이제 재현율만 확인해야지'하고 생각할 수도 있다. 그러나 그건 좋지 않은 생각이다. 오늘 예시로 든 사례는 분류 모델의 성능 평가 지표에는 여러가지가 있음을 보여주기 위해서 데이터의 target이 편향되어 정확도가 적절한 역할을 하지 못하도록 만든 것이다. target이 고르게 분포한 경우라면 정확도도 유용한 성능 평가 지표가 될 것이다. 즉, 데이터의 성격과 분류 모델의 목적에 따라서 중점적으로 살펴봐야 할 평가 지표가 달라진다. 예를 들어, 암에 걸렸는지 걸리지 않았는지 분류하는 모델의 경우 실제 암인 사람들을 놓치지 않고 파악하는 게 중요하므로 재현율이 조금 더 중요한 평가 지표일 것이다. 하지만 당신의 취향에 맞춰 상품을 추천해주는 온라인 쇼핑몰의 경우에는 당신이 좋아할 것이라고 추천한 상품이 진짜 당신의 취향에 맞는 게 중요하다. 당신이 실제로 좋아할 상품 중 몇 개는 놓친다고 하더라도 추천의 적중률이 높은 게 중요하기 때문이다. 그러므로 정밀도가 조금 더 중요한 평가 지표일 것이다. 적절한 평가 지표를 선택하는 것은 모델의 성능을 높이는 데 도움이 될 것이며, 적절한 평가 지표를 선택하기 위해서는 데이터의 성격을 잘 아는 것이 중요하다. 그러므로 데이터 전처리와 EDA를 게을리 하지 말도록 하자.



0개의 댓글