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도 높아지는 방향으로 설계하는 것이 맞는 것 같긴하다!
'CODING > AI & ML & DL' 카테고리의 다른 글
[AI] XAI(explainable AI)란? (0) | 2022.08.02 |
---|---|
[MacOs / Error] xcrun: error: invalid active developer path 해결법 (0) | 2022.02.13 |
[Python/sklearn] Scaler 별 특징 / 사용법 / 차이 / 예시 (0) | 2021.10.07 |
[Python/데이터분석] 상관계수 해석 (0) | 2021.09.05 |
[NLP] python / Keras를 사용한 챗봇 만들기 (0) | 2021.06.06 |
댓글