0. Reference
https://www.sciencedirect.com/science/article/abs/pii/S016786550500303X
An introduction to ROC analysis
Receiver operating characteristics (ROC) graphs are useful for organizing classifiers and visualizing their performance. ROC graphs are commonly used …
www.sciencedirect.com
1. Introduction
- Receiver Operating Characteristics(ROC) graph는 classifier의 성능을 시각화, 조직화하는 기술이다.
- 최근 몇년 동안 Machine Learning에선 단순히 ACC를 보는건 나쁜 지표일 수 있다는 인식이 확산되었다.
- 그렇기에 ROC graph의 사용이 증가하였다고 한다.
- 이러한 ROC graph는 불균형한 데이터에 대해 되게 유용하게 쓰인다고 한다.
- 해당 논문에선 ROC의 개념과 ROC을 통해 분석하는 방법이 수록되어 있다.
2. Classifier performance
- 본격적으로 알아가기 전에, 우리는 binary classify에 대해 집중해보자.
- Output은 무조건 1,0 즉 Positive , Negative 중 하나가 나오게 된다.
- 이러한 결과를 바탕으로 confusion matrix를 만들면 다음과 같은 행렬이 나오게 된다.
- TP(True Positives): 모델이 참이라고 답했는데 참일 경우
- FP(False Positives): 모델이 참이라고 답했는데 거짓일 경우
- FN(False Negatives): 모델이 거짓이라고 답했는데 거짓일 경우
- TN(True Negatives) : 모델이 거짓이라고 답했는데 참일 경우
- Confusion matrix 옆의 수식들은 confusion matrix를 통해 계산 가능한 지표들이다.
- 추가적으로 다음 수식도 알고가자.
3. ROC space
- ROC graph는 2차원 그래프로 X축으로 fp rate,Y축으로 tp rate로 구성되어 있다.
- 다음 그림은 ROC space위에 5개의 classify를 나타낸 것이다.
- (0,0) : 분류기가 positive classification을 하지 않아 TP/FP를 나타내지 않음
- (0,1) : 분류기가 완벽하게 분류를 하는 경우 -> D는 완벽히 분류를 하는 모델
- (1,1) : 분류기가 positive classification만 해서, TP/FP가 전부 큰 경우
- 두 모델중 더 성능이 좋은 모델을 알수 있는 방법은 상대적으로 좌상향에 있는 모델을 지목하면 된다.
ex) B 와 C중 가장 성능이 좋은 모델은 B이다.
- Area 입장에서 생각하면 다음 두가지로 나뉜다.
i) Conservative(좌하향) : Positive classification을 확실할 때만 Return
ii) Liberal(우상향) : Positive classifacation을 마구잡이로 진행
3.1. Random performance
- 대각선 y = x위의 있는 점들은 무작위로 클래스를 추측하는 모델을 의미한다.
- 예를 들어, classify가 positive calss를 절반의 확률로 무작위로 추측한다면,
- Positive의 절반, Negative의 절반을 맞출 것으로 기대할 수 있다.
- 즉, ROC space에서의 (0.5, 0.5) 지점에 해당한다.
- 위의 graph에서 모델 C는 무작위로 예측하는 모델이라고 답할 수 있다.
- 여기서 무작위로 예측하는 모델보다 더 낮은 성능이 존재하게 된다.
- 위의 graph에서 모델 E가 속하게 되는데,
- 이럴 경우 negation 즉, 결과를 반대로 return 하면 된다.
4. Curves in ROC space
- 많은 classifier들은 각 데이터에 대해 Yes or No와 같은 이산적인 output을 반환한다.
- 이러한 이산형 classifier를 test set에 적용하여 confusion matrix를 만들어내면,
- 이를 이용해 ROC space 에서의 하나의 점으로 나타낼 수 있다.
- 즉, 이산형 classifier는 ROC space에서 오직 한 점만 생성하게 된다.
- naive bayes classifier나 Neural network는 확률이나 점수를 출력하는데,
- 이는 해당 데이터가 특정 class에 속할 가능성을 나타낸다.
- 이러한 classifier를 probablistic classifier(확률적 분류기)이라고 정의한다.
- 이와 같은 probablistic classifier들은 임계값을 사용하여 이산형 classifier을 생성할 수 있다.
- 즉, 특정 확률이 임계값보다 높으면 Y, 아니면 N을 출력하는 것이다.
- 각 임계값들은 ROC space에서 서로 다른 점을 생성하게 된다.
- 그래서 이를 이용해서 임계값을 음의 무한대부터 양의 무한대까지 증가시켜 ROC curve를 그릴 수 있다.
- 다만, 이는 비효율적이기에 현재는 이런 방식은 사용하지 않는다.
- 다음 그림은 test set의 20개의 sample에 대한 ROC curve의 예를 보여준다.
- 해당 sample은 positive 10, negative 10개로 구성되어 있다.
- 유한한 sample에서 생성된 ROC curve는 Step Function(계단 함수)으로 이루어져 있다.
- 다음 예시를 보면서 한번 이해해보자.
i) 임계값 = 1일때,
- (0,0)에 점이 생성된다.
ii) 임계값 = 0.9 일때,
- 첫번째 sample만 positive로 분류되어 (0,0.1)이 된다.
- 임계값이 낮아지면 낮아질수록 곡선은 위로올라가고 오른쪽으로 이동하게 된다.
- 임계값 = 0.1이면, (1,1)에 점이 생성되게 된다.
- 즉, 임계값을 낮춘다는 것은 graph의 "conservative"영역에서 "liberal"영역으로 이동하는 것을 의미한다.
4.1. Relative versus absolute scores
- ROC graph에서 중요한 점은 classifier의 상대적인 인스턴스 socre를 생성하는 능력을 평가한다는 점이다.
- 즉, Positive를 확실하게 positive로 negative를 확실하게 negative로 예측하는 능력을 의미한다.
- 다음 그림처럼 Naive Bayes classifer에서 나온 결과를 한번 봐보자.(sample 10개)
- sample 7, sample8만 오답이기에 ACC는 80%라고 말할 수 있다.
- 그렇다면 ROC curve를 봐보자.
- 해당 ROC curve는 정말 완벽하게 classification을 했다는 것을 의미한다.
- 왜 이러한 불일치가 발생할까?
- ROC Curve는 classify가 positive sample을 negative sample에 비해 얼마나 잘 순위를 매기는지 보여준다.
- 반면에, ACC는 임계값 (score > 0.5)을 적용하고, 점수에 따라 결과로 나온 분류를 측정한다.
- 즉, classifier의 score는 확률을 나타내는 것이 아니기 때문에 상대적이다. 그렇기 때문에 0.5를 기준으로 나누는것은 부적절하다.
- classifier의 score는 상대적이기 때문에 모델 class간에 비교되어선 안된다고 한다.
4.2. Class skew
- ROC graph는 class의 분포에 둔감한 특성을 가지고 있다.
- 즉, positive와 negative의 비율이 바뀌더라도 곡선은 크게 변하지 않는다는 것이다.
- 그 이유는 ROC를 계산할 때 한 열에서만 계산을 하기 때문이다.
- 반면에 ACC, F1-score등등은 두 열에서 계산이 되기 때문에 class의 분포에 민감한 특성을 가지고 있다.
- 다음 graph 4개는 이에 대한 시각적 자료라고 생각하면 된다.
- ROC curve가 상대적으로 precision-recall curve에 비해 변화가 적은 것을 알 수 있다.
5. Efficient generation of ROC curves
- 주어진 test set에서 우리는 ROC curve를 효율적으로 그리고 싶을 것이다.
- 논문에선 특정 인스턴스가 어떤 임계값에서 positive로 분류되었다면,
- 그보다 작은 임계값에서는 모두 positive로 분류된다는 것을 이용하여 알고리즘을 구현 하였다.
- score를 내림차순으로 정렬(O(nlogn)) --> linear search( O(N)) --> ROC curve
6. The ROC convex hull
- ROC graph의 장점은 불균형한 분포에 상관없이 classifier의 성능을 시각화하고 정리할 수 있다는 점이다.
- 해당 방정식은 iso-performance line의 기울기를 정의한다.
- iso-performance line위에 해당되는 모든 점들은 동일한 expected cost을 가지게 된다.
- ROC curve 내의 모든 point 들의 Iso-performance Line을 구하고,
- 북서쪽에 가장 가까운 선들만 남겨 최소 비용의 Boundary를 나타낼 수 있다.
cf) ROC Convex hull 밑에 있으면, Optimal이 아니라고 할 수 있음.
- A~D : 4개의 classifier들의 ROC Curve를 의미
- CH : ROC Convex Hull
- B와 D는 Convex Hull 밑에 있기 때문에 Sub-optimal이다.
- Convex Hull에 닿거나 외부에 있어야 optimal한 ROC Point라고 할 수 있다.
7. Area under an ROC curve(AUC)
- 기존의 ROC curve는 Classifier의 성능을 2차원 graph로 표현되었다.
- Classifier 들 간의 성능을 비교하기 위해선 ROC curve를 하나의 숫자로 표기를 할 필요가 있다.
- 이러기 위해 나오게 된 개념이 AUC이다.
- AUC는 ROC curve의 아래의 면적에 해당하며, Classifier의 성능을 단일 값으로 표현한 지표이다.
- AUC의 값은 항상 0부터 1.0 사이에 위치한다.
cf) AUC == 0.5 이면 random Guessing을 한다. (0.5보다 작으면 분류를 정말 개판으로 한다는 걸 의미한다.)
- Randomly selected positive instance를 Randomly selected negative instance보다 더 높게 Rank한다.
- (a) 해당 그림에서 B가 A보다 AUC가 더 크기 때문에 좀더 성능이 좋다라고 볼 수 있는 것이다.
- (b) 똑같은 classifier이라고 할 지라도 임계값의 개수와 AUC는 비례한다. (B > A)
8. Averaging ROC curves
- 일부 연구자들은 ROC graph에서 "가장 좋아보이는 curve"를 선택하여 classifier의 성능을 비교하려고 한다.
- 하지만 이는 "단일 test set에서 가장 ACC가 높은 Classifier를 고르는 것" 과 유사한 오류를 범할 수 있다.
- Variance 측정없이 이러한 비교는 의미가 없으며, 통계적으로 유의미하지 않다고 한다.
- 그래서 ROC curve를 평균화하여 극복하게된다.
- Test set T1,T2,...,Tn이 주어진 경우, 이들의 샘플을 합쳐 하나의 Test set Tm을 생성하고 ROC curve를 계산할 수 있다.
- 하지만, 이 방식은 test set간의 Variance를 측정하지 못한다.
- 따라서 논문에서는 2가지의 Averaging 방식에 대해 서술한다.
8.1. Vertical Averaging
- 동일 FPR 선 상의 모든 TPR에 평균을 취한다. (평균산과 함께 분산을 구할 수 있음)
- tp rate = Ri(fp rate) -> mean(Ri(fp rate))
8.2. Threshold Averaging
- Threshold마다 ROC point들을 평균내 Curve를 구성
- fp rate와 다르게 Threshold는 연구자가 조정이 가능하다.
- fp,tp 모두에 대하여 분산을 파악할 수 있다.
9. Decision problems with more than two classes
- 우리는 앞서서 Binary classification일때의 상황만 확인헀었다.
- 만약 class가 2개보다 많으면 어떻게 해야할까?
- 즉, Multi-class classificaiton을 하고자 할때의 ROC graph를 어떻게 그리는 지 생각해보자.
- 각 n개의 [Class와 Not Class ROC Graph]를 생성한다.(밑에 사진에서 각 3개의 ROC curve를 그린다.)
- 그 후 Averaging ROC curve를 해주면 된다.
'Paper Review(논문 리뷰) > Deep Learning' 카테고리의 다른 글
[논문 리뷰] [Deep Learning] Group Normalization (1) | 2025.01.21 |
---|---|
[논문 리뷰] [Deep Learning] Layer Normalization (0) | 2025.01.21 |
[논문 리뷰] [Deep Learning] Adam : A method for stochastic optimization (0) | 2025.01.10 |
[논문 리뷰] [Deep Learning] An overview of gradient descent optimization algorithms (1) | 2025.01.10 |
[논문 리뷰] [Deep Learning] Deep Learning - Yann LeCun, Yoshua Bengio, Geoffrey Hinton (4) | 2025.01.01 |