Single Number Evaluation Metric
단일 스코어로 기준을 가져가는 것이 효율적이다
ML Model의 결과를 나타내는 척도로 흔히 많이 사용하는 것이 Precision과 Recall이다. 굳이 우리말로 표현하면 정확도와 재현율이다. ( 여담이지만 인공지능 공부를 할 때는 영어 단어 그대로 공부를 하자. 인공지능은 태생적으로 영미권 국가에서 출발한 것이며, 모든 개념들이 영어로 표현이 시작되었다. 영어 단어를 굳이 한국말로 번역해서 이해하는 것이 이해를 오히려 더 어렵게 만들 때가 많다)
고양이 맞추기 문제를 예시로 들어 Precision, Recall의 개념을 쉽게 설명해보자면,
Precision이란 ML Model이 예측한 고양이 이미지 중에, 실제로 몇 %가 고양이 이미지 인가?
Recall 이란 실제 고양이 이미지 중에, 몇 %를 ML Model이 정확히 맞춘 것인가?
의미가 좀 와 닿는가? 솔직히 말하면 나도 종종 헷갈린다.
그런데 이 Precision이나 Recall이 워낙에 보편화되고 많이 쓰이는 평가 척도이다 보니, 딱히 둘 중에 어느 것을 우선순위로 두고 더 나은 Model을 선정해야 하는지 판단하기가 어렵다. (물론, 비즈니스 케이스에 따라서 둘의 우선순위를 선정할 수 있는 경우도 있기는 하지만...)
Recall의 경우 A가 우수하고, Precision은 B가 우수하게 나온 경우, 그리고 아무리 패러미터들을 변경하고 데이터셋을 변경해서 다시 테스트해 봐도 이러한 식으로 결과가 나오면 모델 선정이 어렵게 된다. 이런 경우가 Single Number Evaluation Metric을 써야 하는 이유이다. 앤드류 응 교수의 말을 그대로 빌려 쓰다 보니 영어로 표기한 것이나, 쉽게 말하면 그냥 평가 기준을 하나로 잡자는 것이다.
이를 위하여 세 번째 열에 보면 F1 Score라는 녀석이 있다. 수식은 아래와 같다. 핵심은 Precision과 Recall의 수치를 모두 활용한다는 것이다. (https://en.wikipedia.org/wiki/F1_score). 둘의 조화를 이루었다고 해서 Harmonic mean이라고 도 하며, 통계학에서 Binary Classification의 정확도를 나타내기 위한 척도로 활용이 되는 개념이다.
F1 Score 기준으로 본다면 선택 결과는 분명하다. A가 B보다 높은 수치를 보이기 때문에 A로 선택하면 되는 것이다. 적절하게 분류된 Validation set으로 학습을 하고 Single Number Evaluation Metric으로 평가를 하면 적절한 Model을 찾아내기 위한 반복 과정을 줄일 수 있다.
다른 예시로 아래를 참조해보자.
예를 들어 고양이를 분류하는 스마트폰 앱을 하나 만들었고, 이 앱에 사용된 A부터 F의 알고리즘 각각의 고양이 분류 정확도가 각 국가별로 아래의 에러율로 나왔다고 하자. (국가별로 사용자가 앱에 업로딩 하는 고양이 사진은 제 각각일 것이다)
여기서 미국, 중국, 인도, 기타 국가들의 에러율이 어떤 특정 알고리즘에서 모두 가장 낮게 나온 것이 아니라서, 이 앱에 어떠한 알고리즘을 선택해야 하는 것인지 판단이 어려운 상황이다. 이때에 활용해 볼 수는 있는 Single Number Evaluation Metric 은, 아주 단순하게 국가별 에러율의 평균이 가장 적합할 것이다. 이에 따르면 최적의 알고리즘은 다름 아닌 C가 되는 것이다.
ML 모델링을 하다 보면 너무 모델의 아키텍처, 파라미터 등에만 몰두한 나머지, 이러한 단순하면서도 중요한 요소들을 때로 간과하면서 작업을 할 수가 있다. 그러한 의미에서 앤드류 응 교수가 이 부분을 이 강의의 초반에 짚고 넘어간 것이라 생각한다.