F1 ScoreF1 점수
30초 요약
모델이 맞췄는지 틀렸는지만 보면 한쪽으로 치우친 데이터를 제대로 평가하기 어렵다. F1 점수는 ‘정말 맞다고 한 것 중에 얼마나 진짜 맞았나(정밀도)’와 ‘정말 맞아야 하는 걸 얼마나 놓치지 않았나(재현율)’를 동시에 본다. 두 값을 하나로 합쳐 균형을 내는 방식이라, 한쪽이 너무 낮으면 전체 점수도 낮게 나온다. 다만 문제의 성격에 따라 다른 지표와 함께 봐야 상황을 제대로 파악할 수 있다. -> 뉴스에선 분류 모델 성능을 한 줄로 요약할 때 자주 등장한다.
쉽게 이해하기
현실의 데이터는 한쪽 범주가 훨씬 많은 경우가 흔하다. 예를 들어 정상 거래는 수백만 건인데 사기 거래는 극소수뿐인 경우, 단순 ‘정확도’만 보면 거의 전부를 정상이라고 예측해도 높은 점수가 나와 버린다. 이러면 모델이 중요한 소수를 놓쳐도 티가 안 난다. 이 문제를 해결하는 방식이 F1 점수다. F1은 “맞다고 한 것 중 진짜가 얼마나 되나(정밀도)”와 “진짜를 얼마나 놓치지 않았나(재현율)”를 함께 따져서 둘의 균형을 본다. 비유로 말하면, 경찰이 범인을 잡을 때 ‘잡은 사람 중에 범인이 얼마나 되나’와 ‘실제 범인을 얼마나 놓치지 않았나’를 동시에 점수로 내는 것이다. 한쪽만 잘하면 안 된다. 무고한 사람을 많이 잡아도 문제고, 진짜 범인을 놓쳐도 문제다. F1은 이 두 기준을 하나로 묶어 평가한다. 구체적 메커니즘은 이렇다. 먼저 정밀도는 참 양성(TP)을 TP+거짓 양성(FP)으로 나눈 값, 재현율은 TP를 TP+거짓 음성(FN)으로 나눈 값이다. F1 점수는 이 둘의 ‘조화 평균’으로 계산되어, 둘 중 하나가 낮으면 평균도 크게 낮아진다. 그래서 불균형 데이터에서 단일 지표로 균형 잡힌 성능을 파악하는 데 특히 유용하다.
예시와 비유
-
신용카드 사기 탐지: 결제 대부분은 정상이고, 사기는 극히 일부다. 정확도만 보면 대부분을 정상으로 예측해도 점수가 높아진다. F1 점수로 평가하면 사기를 놓치지(재현율) 않으면서도 정상 거래를 잘못 사기로 판단하지(정밀도) 않도록 균형을 맞춘 모델을 고를 수 있다.
-
희귀 질환 판별: 병원 검사에서 양성 사례는 드물다. 재현율만 높이면 양성을 많이 잡지만 오진(거짓 양성)이 늘 수 있다. F1 점수는 두 오류를 함께 반영해 실제 진료 환경에서 더 실용적인 모델을 가려낸다.
-
콘텐츠 정책 위반 탐지: 플랫폼에서 위반 사례는 전체 대비 적지만 놓치면 리스크가 크다. F1 점수를 보면, 위반을 잘 찾아내되(재현율) 정상 게시글을 불필요하게 막지(정밀도) 않도록 모델을 튜닝할 수 있다.
-
신규 고객 이탈 예측: 이탈 고객 비율이 낮을 때, 정확도는 높게 보이기 쉽다. F1 점수로 평가하면 ‘놓치는 이탈’과 ‘잘못 찍은 이탈’을 동시에 줄이는 방향을 비교적 공정하게 파악할 수 있다.
한눈에 보기
F1 vs 정확도 → 불균형 데이터에서 균형 평가 vs 전체 정답률 위주 F1 vs 정밀도/재현율 → 단일 오류 관점 vs 두 오류를 동시에 반영 F1 vs PR/ROC 곡선 → 단일 수치 요약 vs 임곗값 전반의 성능 곡선
| F1 점수 | 정확도(Accuracy) | 정밀도(Precision) | 재현율(Recall) | |
|---|---|---|---|---|
| 핵심 의미 | 정밀도와 재현율의 조화 평균 | 전체에서 맞춘 비율 | 양성 예측 중 진짜 비율 | 실제 양성 중 맞춘 비율 |
| 민감한 오류 | FP와 FN 모두에 민감 | 다수 클래스에 치우침 | FP에 민감 | FN에 민감 |
| 불균형 데이터 | 강점 큼(균형 평가) | 신뢰도 낮아짐 | 단독 사용 시 불완전 | 단독 사용 시 불완전 |
| 해석 용이성 | 단일 수치로 균형 요약 | 직관적이지만 함정 존재 | 특정 비용(오탐) 최적화 | 특정 비용(미탐) 최적화 |
| 값의 범위 | 0~1 (1이 최상) | 0~1 | 0~1 | 0~1 |
알아야 하는 이유
-
불균형 데이터 환경에서 정확도만으로는 보이지 않던 모델 간 차이를 드러내는 지표로 널리 쓰이게 됐다. (Refs: Encord, Arize)
-
거짓 양성/거짓 음성 두 오류를 동시에 고려해 한 줄 수치로 비교를 쉽게 만들었다. (Refs: Arize, W&B)
-
모델 선택과 임곗값 튜닝의 목표를 ‘정밀도-재현율 균형’으로 정렬시키는 기준을 제공했다. (Refs: W&B)
-
오픈소스 라이브러리에서 표준 함수로 제공되어 실무 워크플로에 손쉽게 통합된다. (Refs: scikit-learn docs, Catalyst docs)
실제로 어디서 쓰이나
-
scikit-learn의 f1_score 함수로 분류 모델 평가에 바로 사용된다. 공식 문서에 값의 범위와 정의가 명시되어 있어 실험 자동화에 적합하다. (Ref: scikit-learn 1.8.0)
-
Catalyst 프레임워크에서 f1_score/FBeta 스코어 유틸을 제공해 딥러닝 학습 루프에서 손쉽게 지표를 기록할 수 있다. (Ref: Catalyst docs)
-
Arize의 교육용 블로그는 사기 방지 등 불균형 데이터 사례에서 F1이 왜 유용한지 설명한다. 실제 서비스 평가지표 설계 시 참고 자료로 활용될 수 있다. (Ref: Arize blog)
-
Encord 블로그는 불균형 데이터에서 정확도 대신 F1을 고려해야 한다는 맥락을 소개해, 데이터 라벨링·평가 파이프라인의 기준 설정에 참고할 수 있다. (Ref: Encord blog)
뉴스에서 만났다면
뉴스에서 'F1 점수'라고 나오면 → 정밀도와 재현율을 함께 반영한 분류 성능 지표를 의미한다. '불균형 데이터에서 F1을 사용'이라고 나오면 → 정확도 대신 FP/FN 균형을 보려는 평가 전략이라는 뜻이다. (Refs: Encord, Arize) 'scikit-learn f1_score로 평가'라고 나오면 → 파이썬 표준 라이브러리 함수로 성능을 계산했다는 의미다. (Ref: scikit-learn) '추가 지표와 함께 본다'라고 나오면 → F1만으로는 불충분하여 해석 가능성, 비용, 지연시간 등도 고려한다는 맥락이다. (Ref: W&B)
주의할 점
-
❌ 오해: F1 점수만 높으면 모델이 전반적으로 우수하다 → ✅ 실제: F1은 분류 성능의 한 단면일 뿐이며, 해석 가능성, 지연시간, 비용 등 추가 요소를 함께 봐야 한다. (Ref: W&B)
-
❌ 오해: 데이터가 균형적일 때도 정확도보다 항상 F1이 낫다 → ✅ 실제: 데이터 특성과 요구사항에 따라 적합한 지표가 다르며, F1은 특히 불균형 데이터에서 강점이 크다. (Refs: Encord, Arize)
-
❌ 오해: F1은 거짓 양성/거짓 음성의 비용 차이를 반영한다 → ✅ 실제: F1은 두 오류를 ‘대칭적으로’ 다룬다. 비용이 한쪽에 더 크다면 다른 지표나 설정이 필요하다. (Refs: Arize, W&B의 균형 개념)
-
❌ 오해: 다중 분류에선 F1을 쓸 수 없다 → ✅ 실제: 라이브러리에서 평균 방식(예: average 파라미터)을 제공해 다중 분류도 다룰 수 있다. (Ref: GeeksforGeeks 설명)
이해 체크리스트
□ 왜 F1 점수는 정밀도와 재현율의 ‘조화 평균’을 쓰는가? 평균 방식이 주는 효과는 무엇인가? □ 불균형 데이터에서 정확도 대신 F1을 쓰면 어떤 의사결정이 더 분명해지는가? □ 거짓 양성(FP)과 거짓 음성(FN)의 trade-off를 조정할 때 F1은 어떻게 변하는가? □ 다중 분류 문제에서 F1을 계산할 때 average 설정이 필요한 이유는 무엇인가? (Ref: GfG) □ F1 점수만으로 모델 선정이 위험할 수 있는 상황과, 함께 봐야 할 추가 요소는 무엇인가? (Ref: W&B)
대화에서는 이렇게
-
이번 이탈 예측은 정확도가 96%인데 클래스가 치우쳐서 의미가 약합니다. F1 기준으로 비교해보죠.
-
임곗값을 0.5에서 0.3으로 내리니 재현율은 올랐는데 정밀도가 떨어져서 F1이 거의 변동 없어요.
-
모델 후보 세 개 중 F1이 가장 높은 B안을 채택하고, 세부 로그는 scikit-learn f1_score 계산 기준으로 맞출게요.
-
운영 환경에서는 지연시간과 비용도 보아야 하니, F1 외에 대체 지표도 대시보드에 추가합시다. (Ref: W&B 맥락)
-
다중 분류 리포트는 average 파라미터를 macro/micro로 각각 뽑아서 비교해 주세요. (Ref: GfG 언급)
함께 알면 좋은 용어
-
정확도 (Accuracy) — 전체 정답률 한눈에 보기 좋지만, 불균형 데이터에서는 허수가 될 수 있다. F1과 함께 보면 함정을 피할 수 있다. (Refs: Encord, Arize)
-
정밀도 (Precision) — 오탐(FP) 비용이 클 때 중요. 하지만 재현율을 희생할 수 있어, F1로 균형 점검이 필요하다. (Refs: Arize, W&B)
-
재현율 (Recall) — 미탐(FN) 비용이 클 때 중요. 단독 최적화는 오탐 증가 위험이 있어 F1로 보완한다. (Refs: Arize, W&B)
-
혼동 행렬 (Confusion Matrix) — TP/FP/FN/이 핵심 원천. F1 계산의 기초가 되는 지표 집합이다. (Refs: Arize, W&B의 정의 흐름)
-
Fβ 점수 (F-beta) — 재현율이나 정밀도 쪽에 가중을 더 줄 때 쓰는 일반화. Catalyst 문서에서 beta=1이 F1임을 명시. (Ref: Catalyst docs)
-
PR 곡선 — 다양한 임곗값에서 정밀도-재현율 변화를 시각화. F1은 이 곡선의 한 지점을 수치로 요약한다. (Refs: Arize, W&B 맥락)
직군별 활용 포인트
주니어 개발자: scikit-learn의 f1_score를 사용해 베이스라인 모델을 평가해 보세요. 불균형 데이터셋에서 정확도와 F1의 차이를 직접 비교해 함정을 체감하세요. PM/기획자: 지표 목표를 “정확도 95%”가 아닌 “F1 0.x 이상”처럼 정의하는 것을 검토하세요. 서비스 리스크(오탐/미탐 비용)에 맞춰 보조 지표도 함께 요구하세요. 시니어 엔지니어/리드: 임곗값 튜닝 실험을 설계하고, F1 외에 해석 가능성, 지연시간, 비용을 포함한 종합 평가지표 세트를 운영 대시보드에 반영하세요. (Ref: W&B) 데이터 애널리스트: 혼동 행렬을 기반으로 정밀도·재현율을 분해 보고하고, 다중 분류에서는 average 설정을 달리한 F1을 병행 보고하세요. (Ref: GfG)
더 깊이 알고 싶다면
정석 자료
-
scikit-learn f1_score 공식 문서 (공식문서) — F1의 정의, 사용법, 값의 범위를 가장 표준적으로 확인할 수 있다. (Ref: scikit-learn 1.8.0)
-
Understanding and Applying F1 Score (Arize) (블로그/강의형) — 불균형 데이터에서 F1이 왜 필요한지 사례 중심으로 이해할 수 있다. (Ref: Arize)
-
An Introduction to the F1 Score (W&B) (블로그) — 계산 절차와, 단일 지표에 의존하지 말아야 하는 이유를 함께 배울 수 있다. (Ref: W&B)
다음에 읽을 용어
- 정밀도 (Precision) — 오탐 비용을 어떻게 수치화하는지 이해해야 F1의 균형 개념이 분명해진다.
- 재현율 (Recall) — 미탐 비용과의 트레이드오프를 알아야 임곗값 조정이 보인다.
- 혼동 행렬 (Confusion Matrix) — TP/FP/FN/를 정확히 이해하면 F1 계산과 해석이 단단해진다.