F1 score 수식 , **AI stage(평가 방법)**

F1 score 수식 , **AI stage(평가 방법)**

위의 이미지는 F1 score의 수식으로, 대회에서 사용하는 Macro F1 score는 각 클래스 값에 대해 별도의 F1 score를 계산 한 다음 평균을 낸다. F1 loss를 선택한 이유는,대회에서 Macro F1 score를 사용하여 순위를 산정하기에 대회의 취지와 맞지 않을까 하는 생각과, train 과정에서 나오는 많은 모수들이 중심극한 정리를 통해 정규분포로 근사화되고, 이를 음수화한다음 1을 더해줄경우, 확률로 가정할 수 있다는 생각으로 단순하게 접근하였다.

이후에는 수식에 대해서 공부했고, **캐글** 과 기술블로그 에 따르면, loss를 metric으로 쓰는 것은 최고의 선택이며, 임계값을 지정하거나 F1 score를 loss 함수에 포함시키면 성능을 향상시킬 수 있다는 근거가 뒷받침 되어있다. 하지만 일반적으로 잘 쓰이지 않는데, 그 이유는 f1 loss함수는 미분이 불가능한 cost function이기 때문이다. 하지만, 주어진 F1 score 식을 0과 1의 정수값 예측이 아닌 확률 값으로 대신하여 예측할 경우 미분이 가능하게 할 수 있다.

예를 들어, ground truth가 1이고 모델의 예측이 0.4일 경우, 우리는 0.4의 true positive와 0.6의 false negative를 얻을 수 있고, 만약 ground truth가 0이고 모델의 예측이 0.4일 경우, 0.6의 true negative와 0.4의 false positive 값을 얻을 수 있을 것이다. 이러한 확률예측을 통해 f1 loss함수를 밑의 그림과 같이 미분이 가능하게 만들 수 있다.

Macro F1 score 함수 개형 , 기술 블로그

Macro F1 score 함수 개형 , 기술 블로그

또, baseline의 loss.py파일에 있는 loss식을 참고하면, return 값이 1-f1.mean()이기에 (1-f1)을 최소화 한다는 것은 f1 score를 최대화 하는것과 같기에, 대회의 취지에 맞을 것이고 실제로 성능향상에 큰 도움을 주었다.