평균 정밀도(AP)란? AI에서 재현율의 변화로 정밀도를 모아 순위를 평가하는 지표
TL;DR
평균 정밀도(AP)는 판정 임계값을 낮추며 얻는 정밀도에 재현율의 증가량을 가중치로 곱해 더하는 순위 평가 지표입니다. 찾으려는 양성을 높은 점수에 잘 모았는지 살핍니다. 한 임계값의 정밀도나 정밀도와 재현율의 단순 평균이 아닙니다. 이 글은 scikit-learn의 비보간 AP를 기준으로 설명하며 사다리꼴 PR 면적, 확률 보정, 실제 운영 임계값과 구분합니다.
핵심 3줄 요약
- 핵심 1
정밀도를 똑같이 평균내지 않습니다. 재현율이 얼마나 늘었는지에 따라 각 정밀도의 기여가 달라집니다. - 핵심 2
최종 라벨 대신 연속 점수를 씁니다. 양성 확률이나 결정 점수로 순서를 평가하며 같은 점수는 함께 처리합니다. - 핵심 3
계산 규칙과 자료 구성을 기록합니다. AP와 사다리꼴 PR 면적은 다를 수 있고 양성 비율도 해석에 영향을 줍니다.
이 글에서 다룰 내용
- 평균 정밀도의 한 문장 정의
- 네 문의의 정답과 점수로 계산하는 쉬운 예시
- 정렬·동점 처리·정밀도·재현율 합산의 순서
- 양성 라벨·표본 가중치·클래스 평균의 뜻
- 정밀도·F1·ROC-AUC·PR 면적과의 차이
- 분류 점수 평가와 검토 대기열의 사용처
- 양성 비율·평가 누수·운영 임계값의 주의점
평균 정밀도를 한 문장으로 정의하면 무엇인가요?
평균 정밀도는 점수 임계값을 바꾸며 얻은 정밀도들을 재현율 증가량으로 가중평균해, 양성 사례를 높은 점수에 배치한 정도를 요약하는 지표입니다.
영문명은 Average Precision이고 약어는 AP입니다. 여기서 평균은 임계값별 숫자를 모두 더해 개수로 나눈다는 뜻이 아닙니다. average_precision_score 공식 문서는 재현율의 변화량과 정밀도의 곱을 합산하며 점 사이를 직선으로 보간하지 않는다고 명시합니다.
양성은 좋다는 뜻이 아니라 찾으려는 대상입니다. 긴급 문의를 찾는다면 긴급이 양성이고 일반 문의가 음성입니다. 정답 라벨과 각 행의 양성 점수를 함께 준비해야 합니다. AP는 모델을 학습하는 알고리즘이 아니라 이미 나온 예측을 평가하는 기준입니다.
한 줄 정리: AP는 양성을 더 많이 찾아가는 동안 선택한 후보의 정밀도가 어떤 수준이었는지를 한 숫자로 모읍니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 문의 네 건의 긴급 여부를 평가한다고 가정해 보겠습니다. 원래 행 순서의 정답은
[0, 0, 1, 1]
이고 긴급 점수는
[0.1, 0.4, 0.35, 0.8]
입니다. 1이 긴급이며 점수가 높을수록 먼저 확인합니다. 아래 수치는 Python 표준 라이브러리로 고정 배열의 산술을 확인한 설명용 결과이지 모델 학습 성능을 측정한 값은 아닙니다.
점수를 높은 순서로 읽으면 정답은 1, 0, 1, 0입니다. 첫 후보를 선택하면 긴급 한 건을 맞혀 정밀도는 1이고 재현율은 0.5입니다. 두 번째 후보는 일반 문의이므로 정밀도는 0.5로 내려가지만 재현율은 그대로입니다. 세 번째 후보까지 선택하면 긴급 두 건을 모두 찾아 정밀도는 2/3, 재현율은 1이 됩니다.
재현율이 늘어난 두 지점의 기여를 합치면
AP = 0.5 × 1 + 0.5 × (2/3) = 5/6
이며 약 0.8333입니다. 네 번째 일반 문의를 더 선택해도 재현율 증가량이 0이므로 추가 기여는 없습니다. 그렇다고 일반 문의가 무관한 것은 아닙니다. 양성보다 앞선 일반 문의는 그 양성을 포함할 때의 정밀도를 낮춥니다.
쉬운 예시: 이 배열의 AP가 약 0.8333이라는 말은 모든 문의의 83.33%를 맞혔거나 각 문의가 그 확률로 긴급이라는 뜻이 아닙니다. 정답 두 건이 놓인 순서의 요약값입니다.
왜 AI에서 평균 정밀도가 중요한가요?
판정선을 정하기 전에 점수의 순서를 비교합니다
모델이 같은 수의 긴급 문의를 표시하더라도 어떤 문의에 높은 점수를 줬는지는 다릅니다. AP는 하나의 판정선에 고정되지 않고 점수별로 양성이 얼마나 앞에 모였는지 비교합니다. 다만 실제로 몇 건을 검토할지는 별도 기준으로 정합니다.
드문 대상의 오탐 부담을 함께 봅니다
공식 Precision-Recall 예제는 클래스가 크게 불균형할 때 정밀도와 재현율의 관계를 살피는 용도를 설명합니다. 실제 양성을 더 찾는 과정에서 일반 문의가 얼마나 함께 들어오는지 드러납니다. 높은 전체 정확도만 보고 소수 대상을 잘 찾는다고 판단하는 문제를 보완합니다.
요약 숫자와 곡선을 함께 남깁니다
AP가 같은 두 모델도 필요한 재현율 구간의 정밀도는 다를 수 있습니다. 검토 인력이 감당할 구간이 중요하면 PR 곡선의 해당 지점과 실제 건수를 따로 확인합니다. 전체 요약값으로 업무 구간의 우열까지 자동 확정하지 않습니다.
핵심 인사이트: AP는 후보 모델의 점수 배열을 비교하는 출발점입니다. 자동 처리의 허용 범위와 사람의 검토 용량은 별도로 정합니다.
평균 정밀도는 어떤 순서로 계산하나요?
1. 양성 라벨과 점수의 방향을 맞춥니다
정답 한 행과 점수 한 행이 같은 문의인지 확인합니다. 입력 점수는 양성 확률이나 임계값을 적용하지 않은 결정 점수입니다. 음성 확률을 잘못 넣으면 순서가 뒤집힙니다. 클래스별 확률 배열에서는 어떤 열이 양성에 해당하는지 먼저 봅니다.
2. 점수를 정렬하고 같은 값은 묶습니다
높은 점수부터 임계값을 낮추며 후보를 늘립니다. 같은 점수는 같은 판정선에서 한꺼번에 포함됩니다. 1.9.1 공식 구현도 점수가 달라지는 위치를 찾아 임계값을 구성합니다. 동점 안에서 정답을 먼저 놓아 점수를 좋게 만드는 계산은 이 구현과 다릅니다.
3. 각 임계값의 정밀도와 재현율을 구합니다
정밀도는 선택한 후보 중 실제 양성의 비율이고 재현율은 전체 실제 양성 중 찾은 비율입니다. 판정선을 낮추면 재현율은 유지되거나 증가합니다. 새 후보가 양성인지 음성인지에 따라 정밀도는 오르거나 내릴 수 있어, 재현율이 늘 때 정밀도는 무조건 내려간다고 설명하지 않습니다.
4. 재현율 증가량에 정밀도를 곱해 더합니다
계산식은
AP = Σ [(현재 재현율 - 이전 재현율) × 현재 정밀도]
입니다. 같은 데이터에서 점수의 엄격한 단조 증가 변환이 순서와 동점을 그대로 유지하면 이 AP도 유지됩니다. 하지만 반올림으로 동점이 새로 생기면 결과가 달라질 수 있습니다.
실전 팁: 점수와 라벨을 행 식별자로 연결하고 원본 점수의 자릿수도 보관하세요. 화면 표시용 반올림을 평가 입력에 적용하지 않는 편이 안전합니다.
주요 설정과 결과는 어떻게 읽나요?
양성 라벨과 두 함수의 반환값을 구분합니다
average_precision_score
는 요약 AP를 계산하고
precision_recall_curve
는 이진 분류의 정밀도·재현율·임계값 배열을 반환합니다. 곡선 함수의 공식 API에 따르면 임계값은 오름차순이고 재현율은 감소하는 순서입니다. 마지막 정밀도 1·재현율 0에는 대응 임계값이 없으므로 배열 길이를 같다고 가정하지 않습니다.
이진 AP의
pos_label=1
은 어떤 정답을 양성으로 볼지 정합니다. 문자열 라벨을 쓴다면 해당 값을 명시하고 점수 열의 뜻도 맞춥니다. 곡선 함수의 생략 규칙과 AP 함수의 기본값을 같은 것으로 외우지 말고 각각의 문서를 확인합니다.
클래스 평균과 임계값 합산은 별개입니다
현재 AP API는 다중 클래스·다중 라벨을 지원하지만 곡선 함수 자체는 이진용입니다.
average="macro"
는 클래스별 AP를 같은 비중으로 평균내고
average="weighted"
는 실제 양성 수를 반영합니다.
average="micro"
는 표본과 라벨의 모든 칸을 모아 하나의 이진 평가로 계산합니다. 이진 입력에서는 이 평균 설정을 무시합니다.
다중 클래스의 점수 열은 정답 클래스의 순서와 일치해야 합니다. 공식 평가 가이드의 클래스별 일대나머지 계산과 평균 방식을 확인하고, 사용 중인 버전의 입력 형식도 대조합니다. 현재 문서의 지원을 오래된 설치 환경에 그대로 가정하지 않습니다.
표본 가중치와 무양성 자료를 따로 봅니다
sample_weight
는 평가 표본의 비중입니다. 클래스별 AP를 합치는 평균 설정과 다른 조절이며 각 임계값의 집계에도 영향을 줍니다. 실제 양성이 없는 분할은 양성을 앞에 놓는 능력을 평가할 근거가 없습니다. 반환값이나 경고만 저장하지 말고 양성 건수와 해당 분할의 평가 불가 사유를 기록합니다.
평균 정밀도와 헷갈리는 용어는 무엇이 다른가요?
한 임계값의 정밀도·F1과 다릅니다
정밀도는 정해진 판정에서 양성이라고 고른 결과의 적중 비율입니다. F1은 같은 판정의 정밀도와 재현율을 조화평균합니다. AP는 판정선을 바꾸며 얻은 정밀도와 재현율 변화를 합칩니다. 정밀도와 재현율 두 숫자의 산술평균도 아닙니다.
사다리꼴 PR 면적·ROC-AUC와 다릅니다
PR-AUC라는 이름만으로 계산법을 확정할 수 없습니다. scikit-learn AP는 비보간 계단 합산이며 사다리꼴 방식은 지점 사이를 직선으로 잇습니다. 앞의 네 문의에서는 사다리꼴 PR 면적이 약 0.7917로 AP와 다릅니다. 다른 배열에서는 직선 보간이 낙관적인 값을 줄 수도 있으므로 두 지표의 크기 관계를 일반화하지 않습니다.
ROC-AUC는 진양성률과 위양성률의 관계를 요약합니다. AP는 정밀도·재현율을 사용하므로 축과 양성 비율에 대한 해석이 다릅니다. 어느 지표가 모든 불균형 문제에서 우월하다는 식으로 고르기보다 필요한 오류와 운영 구간을 정합니다.
확률 보정·mAP와 계산 범위를 나눕니다
순서가 좋다고 점수 0.8이 실제 80% 발생률과 맞는 것은 아닙니다. 확률 품질은 브라이어 점수나 보정 곡선으로 별도 살핍니다. 여러 클래스나 질의의 AP를 다시 평균한 mAP는 평균 대상과 규칙이 추가됩니다. 객체 탐지 보고서도 정답 매칭·보간 규칙을 확인해야 하며 이 글의 분류 AP와 이름만 보고 같은 수치로 취급하지 않습니다.
비교 정리: 정밀도·F1은 선택한 판정의 결과, AP는 PR 관계의 비보간 합산, 사다리꼴 PR 면적은 직선 보간, 확률 보정은 점수와 실제 빈도의 일치를 봅니다.
실전에서는 어디에 쓰이나요?
긴급 문의와 드문 문서 유형을 평가합니다
확인 라벨이 있는 문의에 연속 점수를 붙여 긴급 사례를 위에 모으는지 봅니다. 개인정보 포함 문서처럼 드문 대상을 찾는 분류에도 비교 후보가 됩니다. AP만 공개하지 말고 같은 평가 자료의 양성 수, PR 곡선과 잘못 상위에 놓인 원문도 검토합니다.
사람 검토 대기열과 모델 변경을 비교합니다
버전이 바뀐 분류기가 검토할 대상을 더 잘 정렬하는지 같은 자료로 비교합니다. AP가 올랐어도 하루 검토 가능한 상위 구간에서 성능이 떨어질 수 있습니다. 고정 검토량에서의 정밀도와 발견 건수도 남기며 자유로운 생성 답변 전체의 정확도를 AP 하나로 대신하지 않습니다.
평균 정밀도를 적용할 때 어떤 순서로 확인하나요?
1. 평가 자료와 양성의 정의를 고정합니다
표본의 단위·기간·중복 기준을 정하고 라벨과 점수의 행을 맞춥니다. 같은 고객이나 문서의 비슷한 기록이 학습과 테스트에 섞이지 않게 나눕니다. 모델 선택에 쓴 자료와 최종 평가 자료도 구분합니다.
2. 원본 점수와 계산 규칙을 보관합니다
양성 점수 열, 동점 처리, AP 구현과 버전, 표본 가중치, 클래스 평균 방식을 함께 저장합니다. 사다리꼴 면적을 계산했다면 AP로 이름을 바꾸지 않습니다. 전체 모델을 비교할 때 일부 상위 후보만 먼저 잘라 나머지 양성을 평가에서 지우지 않습니다.
3. 요약 점수와 운영 구간을 함께 확인합니다
동일 자료의 AP·PR 곡선·양성 비율을 비교하고 선택한 판정선에서 정밀도·재현율·오탐·미탐 건수를 확인합니다. 중요한 언어와 문서 유형을 나누어 살피며 작은 표본의 점수 차이를 검증 없이 확정적인 개선으로 보고하지 않습니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 양성 비율이 다른 점수를 바로 비교하지 않습니다. PR 관계는 자료의 클래스 구성에 영향을 받습니다. 모든 점수가 같으면 이 비보간 AP는 해당 자료의 양성 비율과 같습니다. 이를 임의의 작은 무작위 표본이 항상 정확히 같은 AP를 낸다는 주장으로 넓히지 않습니다.
둘째, 최종 라벨을 원본 점수로 착각하지 않습니다. 0과 1만 남긴 입력은 원래의 여러 순위를 잃습니다. 계산이 실행되더라도 연속 점수로 만든 평가와 같은 질문에 답하지 않습니다. 동점도 임의로 풀지 않습니다.
셋째, 전체 AP로 자동 조치를 승인하지 않습니다. 특정 운영 구간의 오탐·미탐 비용은 요약값 하나에 담기지 않습니다. 사람에게 영향을 주는 차단이나 문서 삭제에는 별도의 검토와 정정 경로를 둡니다.
넷째, 라벨 누락과 자료 유출을 확인합니다. 미확인 항목을 전부 음성으로 넣으면 실제 양성을 오탐으로 셀 수 있습니다. 반복 실험으로 평가 자료에 과하게 맞추는 일도 피합니다. 독립 자료와 원본 오류를 함께 보아야 점수의 상승 이유를 설명할 수 있습니다.
주의: 높은 AP는 확률의 정확성, 모든 집단의 성능, 새 환경의 품질이나 안전한 자동 처리를 보증하지 않습니다. 데이터와 계산 규칙이 같은지부터 확인하세요.
자주 묻는 질문
Q1. 평균 정밀도는 정밀도와 재현율을 평균한 값인가요?
아닙니다. 재현율이 늘어난 양을 가중치로 삼아 해당 지점의 정밀도를 더합니다. 두 지표의 산술평균이나 F1의 조화평균과 계산이 다릅니다.
Q2. AP와 PR-AUC는 항상 같은 값인가요?
아닙니다. PR-AUC라는 표현이 비보간 AP인지 사다리꼴 면적인지부터 확인합니다. 보고서에는 함수와 보간 방식을 적어 같은 예측에 서로 다른 계산법을 섞지 않습니다.
Q3. 확률을 출력하지 않는 모델도 AP를 구하나요?
양성 방향의 연속 결정 점수를 출력한다면 평가할 수 있습니다. 모델의 결정 점수와 확률은 같은 뜻이 아니며 AP가 높아도 그 점수를 확률로 바꾸어 읽을 수는 없습니다.
Q4. 동점인 양성을 먼저 세면 더 정확한가요?
이 글의 구현은 같은 점수를 같은 임계값에서 함께 처리합니다. 양성 하나와 음성 하나가 같은 점수뿐이라면 AP는 0.5입니다. 정답을 보고 동점 순서를 유리하게 바꾸지 않습니다.
Q5. average 설정은 이진 AP도 바꾸나요?
이진 정답 입력에서는 평균 설정을 무시합니다. 여러 클래스나 라벨을 요약할 때 클래스별 AP를 어떻게 결합하는지 정하는 설정이며, 임계값별 정밀도를 단순 평균하라는 지시가 아닙니다.
Q6. AP가 0.5면 무조건 무작위 수준인가요?
보편적인 기준점은 아닙니다. 양성 비율과 자료 구성을 먼저 봅니다. 양성이 절반인 상수 점수 예시와 양성이 드문 실제 과제의 0.5는 같은 기준선으로 해석하지 않습니다.
출처
마무리
평균 정밀도는 양성 점수의 임계값을 바꾸며 재현율이 늘어난 만큼 정밀도를 합산하는 지표입니다. 정렬·동점·계산 규칙을 이해하면 한 판정선의 정밀도나 PR 면적과 혼동하지 않고 평가표를 읽을 수 있습니다.
감자나라ai님이 AP를 비교한다면 양성 정의와 원본 점수, 같은 평가 자료부터 확인해 보세요. 구현·평균 방식·양성 건수를 남기고 PR 곡선과 실제 검토 구간을 함께 보는 것이 출발점입니다.
