nayeoniee
개발공부 노트
nayeoniee
전체 방문자
오늘
어제
  • 분류 전체보기 (53)
    • Deep Learning (16)
      • 개념 정리 (6)
      • 논문 리뷰 (2)
      • 논문 구현 (0)
      • Object Detection (8)
    • Algorithm (16)
      • 개념 정리 (5)
      • 이코테 (1)
      • baekjoon (5)
      • programmers (4)
      • LeetCode (1)
    • Project (4)
      • Boostcamp AI Tech (4)
    • 자격증 (16)
      • AWS (1)
      • 정보처리기사 필기 (15)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 그래프
  • 운영체제 #데이터베이스 관리시스템 #웹애플리케이션 #오픈소스 #OS #DBMS #WAS
  • LIS
  • KLUE
  • 딥러닝
  • 현행시스템파악
  • 서로소 집합
  • 프로그래머스
  • aif-c01
  • 2-stage
  • re
  • selective search
  • object detection
  • dp
  • 회고
  • F1 Score
  • wandb
  • 1-stage
  • 알고리즘
  • Anchor box
  • BFS
  • spatial pyramid pooling
  • 데이터제작
  • 이코테
  • python
  • ELECTRA
  • boostcamp
  • 백준
  • 이진탐색
  • FLOPs

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
nayeoniee

개발공부 노트

Deep Learning/Object Detection

성능 평가 지표 2

2022. 9. 3. 19:00

저번 포스팅에 이어 성능 평가 지표로 활용되는 ROC curve와 PR curve 에 대해 정리해보았다.

 

1-1. ROC curve

Receiver Operating Characteristic curve의 약자로, threshold에 따른 모델의 분류 성능을 나타낸 것이다. 

sensitivity(민감도), 특이도(specificity)로 그려지는 곡선이다.

default threshold는 0.5로 [0.0, 0.49] 값을 가지는 probability는 False, [0.5, 1.0] 값을 가지는 probability는 True로 예측한다. threshold에 따라 에러율, False Positive와 False Negative 값이 변한다.

  • True Positive Rate: recall, sensitivity라고도 부른다.
    • TPR = TP / TP + FN
  • False Positive Rate: specificity라고도 부른다.
    • negative를 positive로 착각한 경우 (실제 negative 대 맞춘 negative의 비율)
    • FPR: FP / FP + TN
  • threshold가 작아지면 positive로 에측하는 수가 증가하고, negative로 예측하는 수는 줄어든다. → TPR과 FPR 모두 증가

 

1-2. AUC

Area Under ROC Curve의 약자로, ROC curve와 x축이 이루는 면적의 넓이를 의미한다.

  • 위의 그림에서 초록색, 검은색 ROC curve의 성능을 비교하기 애매하기 때문에 ROC curve 아래 영역을 구해 성능의 지표로 삼는다.
  • 성능이 좋은 모델일수록 AUC가 1에 가깝다.

⇒ 데이터가 균형을 이루는 경우, positive 클래스와 negative 클래스 분류 중요도가 비슷한 경우에 사용한다.

 

2-1. PR curve & AP

이전 포스팅에서 다루었듯이, precision과 recall은 trade-off 관계로 하나의 지표만 보고는 모델의 전체적인 성능을 평가할 수 없다. 따라서 precision 과 recall 의 관계를 나타내는 PR(Precision-Recall) curve를 사용한다. 아래 예시는 PR curve를 그리는 과정이다.

 

위 그림은 플라스틱 클래스에(클래스 1개) 대해 10개의 예측을 수행한 예시이다.

각각의 예측은 confidence, 맞은/틀린 예측인지 여부가 들어있다. confidence는 몇 퍼센트의 확신을 갖고 positive/negative를 판단했는지를 의미한다.

confidence score 기준으로 내림차순 정렬한다.

두번째 예측의 누적 TP, FP로 precision, recall을 계산해보면:

  • precision = 누적 TP / 누적 예측 개수 = 2 / 2 = 1
  • recall = 누적 TP / 전체 예측 개수 = 2 / 10 = 0.2

 

  • 모든 예측 쌍의 (recall, precision)을 그래프로 나타낸다. 실선이 PR curve에 해당한다.
  • 모든 예측에 대해 confidence score로 정렬하고, 누적 TP, FP로 precision과 recall을 계산한 후, (recall, precision)으로 좌표를 찍은 그래프이다.
  • 점선 아래 면접이 AP(Average Precision)에 해당하고 최소값은 0, 최대값은 1이다.
  • precision과 recall은 trade-off 관계이기 때문에 한가지 지표만 보고 판단할 수는 없다. 따라서 precision, recall 둘 다 고려한다. 또한 (클래스별) 데이터가 불균형한(imbalance) 경우에 precision과 recall을 모두 고려한다.

 

2-2. mAP

mAP는 mean Average Precision의 약자로, 각 클래스당 AP의 평균값이다.

전체 클래스가 3개라면, $mAP = (AP_1 + AP_2 + AP_3) / 3$ 이다.

 

3. ROC curve/AUC 와 PR curve/AP는 어떤 차이가 있을까?

데이터가 불균형한 경우에는 ROC curve/AUC 는 적절하지 않고 PR curve/AP를 사용한다고 한다. True Negative가 많아 FPR이 낮기 때문이다. 납득하기 어려운 부분인데 하나씩 살펴보자.

 

true 정답 라벨을 $Y$, 예측 라벨을 $Y_{hat}$ 이라고 하자. y가 주어진 상황에서 x인 경우는 $P(x|y)$로 표현할 수 있다.

 

precision

  • how many true successes are in all of our labeled successes
  • 모델이 참이라고 예측한 것 중 실제로 참인 경우
  • $P(Y=1 | Y_{hat}=1)$

recall, TPR

  • out of all the true values that went in, how many came out
  • 실제 참인 것 중 모델이 참이라고 예측한 경우
  • $P(Y_{hat}=1 | Y=1)$

FPR

  • the chance we contaminate our sample with a false positive
  • 실제로는 거짓이지만 모델이 참이라고 예측한 경우 (거짓을 참으로 착각한 경우)
  • $P(Y_{hat}=1 | Y=0)$

 

ROC curve에 사용되는 TPR, FPR의 경우 조건(condition)에 실제 정답이 들어간다.

PR curve에 사용되는 precision의 경우 조건(condition)에 예측값이 들어간다.

⇒ 주어진 데이터가 불균형한 경우 ROC curve의 조건에는 영향을 미치지만, PR curve의 조건에는 영향을 미치지 않아 데이터가 불균형한 경우에 ROC curve/AUC 보다는 PR curve/AP를 사용을 권장한다.

 

위의 내용에 대해 3가지 입장이 가능할 것 같다.

(동의) 불균형한 데이터로 모델 학습을 해도 모델이 극단적으로 편향되게 예측하지 않는다고 가정하면 makes sense 하다.

(반박) 이미 불균형한 데이터셋으로 학습한 모델이라면, 모델이 예측한 값도 불균형할 것이다. 따라서 condition이 gt가 아닌 prediction인 PR curve도 ROC curve 못지않게 데이터 불균형에 영향을 받을 것이다.

(중립) 하지만, 이렇게 단정지을 수는 없고 다양한 metric으로 성능 평가를 해 보고 적절하게 사용해야 한다.

 

→ 일반적으로 RandomForset가 LogisticRegression보다 성능이 더 좋다. PR curve에서는 차이가 극명해 어떤 분류기가 더 좋은지 판단하기 수월하지만, ROC curve에서는 애매한 예시이다.

 

참고 자료

ROC curve와 PR curve 비교

'Deep Learning > Object Detection' 카테고리의 다른 글

NMS (Non Maximum Suppression)  (0) 2022.09.04
성능 평가 지표 3(속도)  (0) 2022.09.04
IoU (Intersection over Union)  (0) 2022.09.03
성능 평가 지표 1  (0) 2022.09.03
Object Detection Overview  (0) 2022.09.03
    'Deep Learning/Object Detection' 카테고리의 다른 글
    • 성능 평가 지표 3(속도)
    • IoU (Intersection over Union)
    • 성능 평가 지표 1
    • Object Detection Overview
    nayeoniee
    nayeoniee

    티스토리툴바