재현율(recall)에 대해 정확히 알기

1. 문제제기

 

class간 불균형 데이터를 classification할 때 모델이 데이터가 많은 class(다수 class)에 분류하려는 경향이 있다는 것은 잘 알려진 사실

 

왜냐하면 class 1과 0이 97:3으로 나뉘어져있다고 해보자

 

모델이 전체 데이터를 예측할 때 전부 class 1로 예측하면 무려 97% 정확도를 얻는다

 

그러면 여기서 문제

 

데이터가 적은 소수 클래스의 민감도가 낮아지는가??

 

2. 생각

 

소수 클래스의 민감도라는 것이 도대체 무슨 말이지?

 

https://m.blog.naver.com/pmw9440/221760675118

 

내가 아는건 이런 혼동행렬에서 민감도는 실제 긍정인 것중에 모델이 긍정이라고 예측한 것의 비율

 

TP/(TP+FN)

 

특이도는 실제 부정인 것중에서 모델이 부정이라고 예측한 것의 비율

 

TN/(FP+TN)

 

정밀도는 모델이 긍정이라고 예측한 것중에서 실제 긍정인 것의 비율

 

TP/(TP+FP)

 

소수 클래스의 민감도가 무슨 말이지??

 

긍정이 소수라고하면 상관없는데... 부정이 소수라고한다면..??

 

여기서 혼란이 생긴다

 

3. recall과 precision

 

https://www.koreascience.or.kr/article/JAKO202025863869781.pdf

 

https://stackoverflow.com/questions/14117997/what-does-recall-mean-in-machine-learning

 

What does recall mean in Machine Learning?

What's the meaning of recall of a classifier, e.g. bayes classifier? please give an example. for example, the Precision = correct/correct+wrong docs for test data. how to understand recall?

stackoverflow.com

 

여러가지 인터넷 검색해본 결과로 정확하다?고 말하기는 어렵지만 이게 맞는것 같아

 

분류 모델의 성능 평가지표로 accuracy, recall, precision이 있다.

 

accuracy = (TP+TN)/(TP+TN+FP+FN)

 

전체 데이터에 대해서 모델이 정확히 예측한 것의 비율이 정확도

 

여기까지는 알기 쉬운데 여기서부터는 생각을 바꿔야한다

 

-----------------------------------------------------------------------------------------

precision = TP/(TP+FP)

 

recall = TP/(TP+FN)

 

정밀도는 모델이 긍정이라고 예측한 것중에서 실제 긍정인 것의 비율

 

민감도 = 재현율은 실제 긍정인 것중에 모델이 긍정이라고 예측한 것의 비율

 

긍정과 부정이라는 말에 주목하지 말고 긍정과 부정을 특정 class라고 바꿔서 생각하면

 

정밀도는 특정 클래스로 예측한 자료 중 올바르게 예측한 비율

 

재현율은 실제 특정 클래스에 속한 자료 중 올바르게 해당 클래스로 예측한 비율을 의미한다

 

이런 일반적인 의미에서는 재현율을 민감도라고 하지 않는다

 

재현율은 '재현하다'라는 의미를 생각한다면 상당히 잘 지었다고 볼 수 있는데

 

모델이 실제 class에서 올바르게 해당 class로 예측했다는 것은 올바르게 해당 class로 재현했다는 의미니까

 

 

아무튼 수식으로부터 우리는 재현율은 분모 TP, FN이 긍정 class에 속하고 TP도 긍정 class에 속하므로 오직 하나의 class에서만 결정되는데

 

정밀도는 TP, FP가 각각 긍정과 부정 class에 속하므로 불균형 데이터에서 반드시 다수 class에 영향을 받는다

 

이는 정확도도 마찬가지다.

 

재미있는 부분이 불균형 자료에서 재현율이 어떻게 변하는지 설명한 그래프가 있다

 

불균형도 IR = (다수 클래스의 데이터 수)/ (소수 클래스의 데이터 수)

 

정확도

 

정밀도

 

재현율

 

불균형도가 심해질수록 소수 class의 재현율이 상당히 감소한다

 

이는 불균형도가 심해질수록 모델이 실제로 소수 class에 속하는 데이터임에도 불구하고 다수 class로 예측하기 때문에 소수 class에 대한 재현율이 떨어짐을 의미한다

 

하지만 정밀도는 소수 class의 경우 낮긴한데 큰 의미는 없다고 한다

 

왜냐하면 소수 class를 다수 class로 오인하는 경우가 있지만 그만큼 소수 class의 데이터 비율도 적어지기 때문에 효과가 서로 상쇄되기 때문이라고 설명하고 있다

 

 

4. 민감도(sensitivity)와 특이도(specificity)

 

명확한 설명은 없지만 여러가지 인터넷 검색해보고 결론을 내린 결과

 

민감도와 특이도는 class의 긍정과 부정에 주목할때 특별히 생각하는 지표이다.

 

서로 상반되는 특징을 가지는 class라는 점에 주목할 때 사용한다고 생각하면 좋다.

 

민감도는 실제로 긍정인 class의 자료에 대해서 모델이 긍정이라고 예측한 비율

 

특이도는 실제로 부정인 class의 자료에 대해서 모델이 부정이라고 예측한 비율

 

 

그러면 여기서 생각할 수 있는 부분은 재현율이 "특정 클래스의 자료에 대해서 모델이 해당 클래스로 올바르게 예측한 비율"이라고 정의한다고 했는데

 

그렇다면 재현율과 특이도도 결국 같은 의미이지 않은가?

 

이에 대해 명확히 설명하고 있는 부분은 없는데

 

여러가지 찾아본 결과는 긍정과 부정에 특별히 주목할때는 '민감도와 특이도' >>> 그리고 여기서 '민감도=재현율'이라고도 하지만

 

여기서 재현율은  "특정 클래스의 자료에 대해서 모델이 해당 클래스로 올바르게 예측한 비율"이 아니고 "실제로 긍정인 class의 자료에 대해서 모델이 긍정이라고 예측한 비율"이라고 생각해야한다

 

-----------------------------------------------------------------------------------------------------------------------

TAGS.

Comments