data를 분류해주는 모델을 만들면 이 모델이 data를 얼마나 잘 분류하게되었는지 성능이 궁금할 때가 있다. 그때 활용하는 것이 성능측정이다.
성능의 측정은 data에 따라서 잘못 측정될 때가 있다. 분류모델의 성능 측정에는 무엇이 있는지 정리해놓았다.
제일 많이 사용되고 쉽게 사용할 수 있는 것은 Accurancy이다. test한 전체 data를 model이 맞게 예측한 개수를 나눠서 구할 수 있다.
이 방법이면 다 해결할 수 있을 것 같지만... Accurancy가 높다고 다 해결되는 것은 아니다. data가 unbalance하게 분포되어있다면 성능이 정확하지않을 수 있다. 예를 들면 분류해야할 class가 4개가 있는데 class 1에 속하는 data들이 압도적으로 많게 된다면 class2,3,4가 아무리 분류를 잘해도 class1에 따라서 정확도가 좌지우지될 것이다.
그렇기에 우리는 F1 Score을 활용한다.
본론부터 말하면 F1 Score은 Recall과 Precision의 조화평균을 이용하여 값을 구한다.
Recall과 Precision을 이해하기위해서는 Confusion Matrix에서 나오는 TP, FP, TN, FN에대하여 알아야한다.
특정 클래스에대한 Positive는 class는 특정 클래스를 뜻하는 것이고
Negative class는 특정 클래스에 속하지않은 모든 것을 뜻한다.
True Positive는 model이 positive class를 맞게 예언한 것이 된다.
Ture Negative는 model이 negative class를 맞게 예언한 것이 된다.
False Positive는 model이 positive class를 틀리게 예언한 것이 된다.
False Negative는 model이 negative class를 틀리게 예언한 것이 된다.
Recall은 TP/(TP+FP)가 된다. FP가 작을수록Recall의 값은 커지게 된다. 실제 정답을 얼마나 맞췄는가를 나타낸다.
Precision은 TP/(TP+FN)가 된다. FN이 작을 수록 값이 커지게 된다. 즉 예측의 실수가 줄수록 커진다. 예측을 얼마나 잘하는지가 중요하다.
맞추는 것이 중요한 것인지 예측을 잘하는 것이 중요한지는 두개의 지표를 잘 확인하면된다.
classfication report를 하다보면 f1 score을 계산할 때 marco avg와 weighted avg에 대하여 나온다.
※ macro avg = 단순평균값
※ weighted avg = 각 클래스에 속하는 표본의 갯수 즉 가중평균값을 뜻함