본문 바로가기
CODING/AI & ML & DL

Precision과 Recall의 차이 및 예시

by 밍톨맹톨 2022. 5. 22.
728x90
728x90

Precision과 Recall 차이

이 두 가지의 차이를 아는 것이 중요한 이유는 내가 예측하는 모델을 만들 때 어디에 더 집중을 해서 모델링을 할 것인가에 중요한 지표가 되기 때문이다. 두 개가 집중하는 포인트가 다른데 그 부분은 아래에서 예시와 함께 설명하도록 하겠다.

 

우선 이 두 가지의 차이를 알기 위해서는 아래와 같은 Confusion Matrix를 봐야한다. 

이 표를 보면 4가지의 class가 존재한다. 

 

Precision은 예측한 값들이 실제랑 얼마나 같냐를 의미한다.

 

말로 설명하는 것보다 예를 들어보도록 하겠다. 

 

🔻 elephant의 precision를 구하는 방법

elephant라고 예측한 데이터의 개수 ➡️ (25 + 3 + 2 + 1) = 31개
이 중 진짜 elephant인 수 ➡️ 25개

예측한 애들 중에 진짜 elephant인 데이터 / elephant라고 예측한 데이터
= 25/31 = 0.81%

recall은 실제 내가 가지고 있는 데이터를 다 잘 찾아냈니?를 의미하는데

이 부분도 예를 들어 설명을 하도록하겠다. 

🔻 elephant의 Recall을 구하는 방법

내가 가지고 있는 elephant 데이터 개수 ➡️(25 + 3 + 0 + 2) = 30개 
이 중 내가 예측해서 찾아낸 elephant의 개수  ➡️ 25개

예측해서 찾아낸 개수 / 원래 가지고 있는 데이터 개수 
= 25/30 = 0.83

그래서 이 둘의 차이는 알았다고 치자 그럼 언제 뭐가 더 중요한데? 라고 생각이 들 수 있다.


예시

예를 들어서 화재(우리가 찾고 싶은 것)를 예측해서 알람을 보내는 기계가 있다고 하자. 

 

10일 동안 화재는 총 5번 났다. 

 

🔻 Case 1. Precision이 높은 경우 

 

화재가 날 것이라고 4번을 예측했는데 그 중 3번은 진짜 화재가 났고, 한 번은 나지 않았다. 

이 경우 Precision이 3/4라서 0.75이지만 recall은 3/5 = 0.6

그래서 알람이 울리면 거~진 무조건 불이 난 거라고 생각할 수 있고, 나의 모델의 신뢰도는 높아지지만

화재가 난 5번중에 2번은 잡아내지 못해서 피해가 막심했을 것이다. 


🔻 Case 2. Recall이 높은 경우 

 

첫번째 경우로 가다가 공장장이 이대로는 너무 피해가 심할 것 같으니 알람을 엄청 올려도 되니까 무조건 화재를 예측해라라고 

지시를 내렸고 그래서 10일동안 8번의 알람을 울리게 되었다. 

그 결과 모든 화재는 찾을 수 있었지만, 불이 나지도 않았는데 수시로 불이 났다는 알람이 울려 작업자들은 확인하느라 피로도가 증가했다. 

그렇게 되면 작업자들이 나의 모델에 대한 신뢰도가 매우 낮아졌을 것이다. 

 

위 결과에서 모든 화재를 찾았다는 소리는 recall이 1이라는 소리이다.

그렇지만 예측한 8번 중에 실제로 맞은 것은 5번이니까 5/8로 precision은 0.625가 된다. 

 


결론은 내가 어디에 집중을 해서 모델링을 할 것인가가 중요한데 일반적으로는 내가 잘못된 예측결과가 많더라도 꼭 찾아야하는 게 있다면 (사기자, 화재, 암...) recall을 높이는 것이 중요하고, 사실 Precision이 더 중요한 경우를 생각해내고 싶지만 생각나는 사례가 없네,,

 

어찌됐든 처음엔 모델의 신뢰성을 높이기 위해서라도 precision을 높이는 것이 중요하고 차차 recall도 높아지는 방향으로 설계하는 것이 맞는 것 같긴하다! 

 

728x90

댓글