본문 바로가기
BigData

머신러닝 성능평가지표 (기계학습 F1 Score)

by 굿햄 2022. 5. 7.

요즘 머신러닝, 딥러닝을 활용한 프로그램 관련 글을 쓰고있는데,

3학년 때 배운내용이라 잘 기억이 안나서 다시 생각해 볼 겸 글 남깁니다.

 

지도 학습 중에 선형 회귀 분석같은 분류의 성능평가 측도(Performance measures)는 기계학습(Machine learning)을 통해 만들어진 모델이나 패턴의 성능을 테스트하는데 사용합니다.

 

이진 분류 정오분류표 or 오차행렬 (Confusing matrix)

보통 위와 같은 표로 점수를 측정하고 모델 성능 향상을 위해 F1 Score을 사용합니다.

Accuracy & Error

정분류율(Accuracy): 예측과 실제가 일치하는 개수 / 전체 개수

$$(truepos.+trueneg.)/total $$

오분류율(Error): 1에서 정분류율을 뺀 값

$$1 - accuracy$$

Precision & Recall

정밀도(precision): 실제와 예측이 모두 긍정인 개수 / 예측이 긍정인 개수

 예측값이 얼마나 정확한 지

$$ \frac{(true pos.)}{(true pos. + false pos.)} $$

 

재현율(recall): 실제와 예측이 모두 긍정인 개수 / 실제로 긍정인 개수

 정답을 얼마나 맞추는 지

$$ \frac{(true pos.)}{(true pos. + false neg.)} $$

 

보통 WDBCWisconsin Diagnostic Breast Cancer라 불리는 유방암 데이터셋으로 많이 연습하므로 이것을 예시로 들겠습니다.

 

기계가 유방암이라고 진단했을 때, 실제로 유방암인 사람과 아닌 사람이 공존할 것 입니다.

이 때 기계가 몇명이나 잘 맞췄는지 퍼센티지로 나타낸게 정밀도(Precision)입니다.

 

근데, 실제로 유방암인데 기계가 놓칠 수도 있습니다.

그래서 총 유방암 환자중에 기계가 얼마나 Catch했는가를 나타낸게 재현율(Recall)입니다.

 

문제는 이 둘은 Trade-off 관계, 즉 둘이 반비례하는 성향을 가졌습니다.

예를 들어, 기계의 암환자를 판단하는 기준을 까다롭게 만듭니다.

그렇다면 기계의 예측은 정확해지고 거짓긍정(false pos.)은 감소하니 정밀도는 향상합니다.

 

하지만 기준이 까다로워진 탓에 실제 암환자가 많이 누락될 것입니다.

결국 거짓부정(false neg.)가 증가하며 재현율은 감소합니다.

F1-Score

결국 모델의 성능을 제대로 평가하기 위해 두 지표의 평균을 구할 필요가 있습니다.

일반적인 산술 평균(arithmetic mean)은 특정값에 치우쳐지기도 하고, 오히려 편향된 데이터에 좋은 점수를 줍니다. 그래서 여러 값들이 어느 값에 치우쳐져있는지, 즉 집중경향값을 계산할 때 주로 사용됩니다.

 

저희는 두 값이 공평하게 높길 바라며, 이를 위해 낮은 값에 좀 더 가중치를 주어야 둘 다 점수가 높은 최선의 결과에 도달할 수 있습니다.

따라서 조화평균(Harmonic Mean)을 사용합니다.


조화평균이란?

https://wikidocs.net/23088

조금 더 쉽게 풀이하자면 아래와 같습니다.

1. 일반적인 공식 $$Speed = \frac{2*distance}{time}$$

2. 역수화 $$Time = \frac{2*distance}{speed_m}$$

3. 시간의 평균 $$Time = \frac{distance}{speed_a}+\frac{distance}{speed_b}$$

4. 일반화

$$\frac{2*distance}{speed} = \frac{distance}{speed_a}+\frac{distance}{speed_b}$$

$$\frac{2*distance}{speed_m} = \frac{(distance)*(speed_a+speed_b)}{speed_a*speed_b}$$

$$\frac{2}{speed_m} = \frac{speed_a+speed_b}{speed_a*speed_b}$$

$$\frac{speed_m}{2} = \frac{speed_a*speed_b}{speed_a+speed_b}$$

$$speed_m = \frac{2*(speed_a*speed_b)}{speed_a+speed_b}$$


위와 같은 원리로 F1 score정밀도와 재현율 모두 높은 점수를 낼 수 있도록 아래의 식이 성립합니다.

$$F-measure = 2\frac{precision*recall}{precision+recall}$$


Fall-out, ROC-curve, AUC, RSS, MSE, MAE, R^2(결정계수) 등은 시간상 다음에 다루어 볼 예정입니다.


 

ⓒ 굿햄 2022. daryeou@gmail.com all rights reserved.

 

댓글