군더더기 없는 기계학습 백과사전

수신자 조작 특성(ROC) 곡선과 곡선 아래 면적 (AUC) 본문

Machine Learning/통계이론 훑어보기

수신자 조작 특성(ROC) 곡선과 곡선 아래 면적 (AUC)

Jay김 2020. 9. 9. 15:54

※해당 설명에서 사용되는 로지스틱 회귀 분석은 이해를 돕기 위한 단순 예시이다. 해당 개념은 다른 기계학습 분류 알고리즘에도 적용할 수 있다.

ROC(Receiver Operating Characteristics) 곡선

여러분에게 다음과 같은 쥐의 몸무게 데이터가 주어졌다고 하자. 푸른색 점들은 비만인 쥐들이고 붉은색 점들은 정상 몸무게 쥐들이다. 

그럼 이 관측들을 이용해 로지스틱 회귀 곡선을 그리자. 

그럼 y 축은 이제 0과 1 사이의 값으로 표현되는 관측 개체가 비만일 확률이다. 여기서 한 가지 문제가 생길 것이다. 비만일 확률은 아는데 쥐들을 비만으로 분류는 어떻게 할까? 한 가지 방법은 0.5이라는 임계값을 설정해 그 이상인 관측 개체들을 비만으로 분류하고 그 이하는 정상 몸무게로 분류하는 것이다. 그럼 이 임계값에 따라 우리가 비만인지 정상 몸무게인지 알고 있는 새로운 관측 개체들을 분류해보자.

그럼 순서대로 정상, 정상, 정상, 정상, 비만, 비만, 비만, 비만으로 분류될 것이다. 그럼 이중 둘은 실제로 비만이거나 정상임에도 불구하고 잘못된 분류가 된 것을 볼 수 있을 것이다. 이를 토대로 혼동 행렬을 만들어보면 (혼동 행렬이 기억이 안 나면 전 글 참고)

예측\실제 비만 비만 아님
비만 3 1
비만 아님 1 3

인 것을 확인할 수 있다. 여기서 임계값 0.5를 가지는 로지스틱 회귀 분석에 대한 민감도와 특이도를 계산할 수 있다. 그럼 임계 값을 이리저리 움직여보자. 그림에서는 수평으로 그어진 곡선을 위아래로 움직여보면 된다.

임계 값을 낮추면 다음과 같은 혼동 행렬을 얻을 수 있다. 양성 개체를 상대로 나은 성능을 얻고 그 대가로 음성 개체에 대한 성능이 낮아지는 것을 확인할 수 있다. 여기서 왜 임계값을 바꾸냐고 의문이 드는 사람들을 위한 예로 에볼라 같은 무서운 질병을 상대하고 있을 때 양성 개체를 판별해내는 것이 더 중요한 상황이 생길 수도 있다는 것을 상기하면 된다.

예측\실제 비만 비만 아님
비만 4 2
비만 아님 0 2

 

반대로 임계 값을 높이면 다음과 같은 혼동 행렬을 얻을 수 있을 것이다. 마찬가지로 음성 개체에 대한 더 나은 성능을 대가로 양성 개체에 대한 성능이 낮아지는 것을 확인할 수 있다.

예측\실제 비만 비만 아님
비만 3 0
비만 아님 1 4

그러나 0과 1 사이에 있는 임계 값들은 당연히 실수(real numbers)이기 때문에 셀 수 없이 많다. 몇몇 구간에서는 임계값을 얼마나 바꾸든 혼동 행렬이 바뀌지 않을지도 모르지만 모든 가능한 임계 값을 상대로 일일이 혼동 행렬을 만들어서 민감도와 특이도를 비교하기에는 곤란하다. 따라서 혼동 행렬을 만드는 대신 수신자 조작 특성(ROC) 곡선은 이 모든 정보를 한 번에 요약할 수 있는 방법이다.

통상적으로 ROC 곡선의 y 축은 참 양성 비율(True Positive Rate, TPR)이다. 우리는 이를 민감도(Sensitivity)라고 부르기도 한다. 우리의 예에서는 실제 비만인 개체 중 제대로 비만으로 분류된 개체들의 비율이다.

반대로 x 축은 거짓 양성 비율(False Positive Rate, FPR)이다. 이는 1에서 특이도(Specificity)를 뺀 값이다. 우리의 예에서는 실제 정상 몸무게인 개체 중 비만으로 분류된 개체들의 비율이다.

각 임계 값들을 상대로 참 양성 비율과 거짓 양성 비율을 계산하여 그래프를 그리면 다음과 같은 곡선이 생성된다. 이해를 위해서는 몇 개의 임계 값에 대해 혼동 행렬을 만든 뒤 TPR과 FPR를 각각 구한 뒤 점을 찍어서 엇비슷한 곡선을 그리면 된다.

일단 임계 값 0부터 시작해보자. 그래프에는 좌표 (1,1)에 점이 찍힐 것이다. 이는 곧 모든 양성 개체(비만)들을 올바르게 분류했고 모든 음성 개체(정상 몸무게)들을 틀리게 분류했음을 의미한다. 마찬가지로 (1,1)부터 원점까지 그어진 직선은 TPR과 FPR의 비율이 1대 1인 같은 상황들이다.

임계 값을 올리다 보면 (0.75, 1) 좌표쯤에 점을 찍을 것이다. 초록 곡선으로부터 멀어진 것을 확인할 수 있을 것이다. 여기서부턴 양성 개체를 올바르게 분류하는 사례가 음성 개체를 틀리게 분류하는 사례보다 많음을 의미한다. 해당 임계 값은 0보다 낫다. 계속 임계 값을 1까지 올리면 다음과 같은 곡선을 얻을 수 있다.

여기까지 왔다면 우리는 혼동 행렬들을 일일이 만들 필요도 없이 (0, 0.75)에 해당하는 임계 값이 그 오른쪽 점에 해당하는 임계 값보다 낫다는 것을 확인할 수 있다. 그리고 여러분이 얼마나 많은 음성 개체 분류 오류를 허용하냐에 따라 (0, 0.75)이나 (0.5, 1)에 상응하는 임계 값들이 최상의 선택이라고 할 수 있겠다.

ROC 곡선은 임계 값 성능 비교 방법 중 하나이다. 대표적으로 사람들은 거짓 양성 비율 대신 정밀도(Precision)를 사용하기도 한다. 이는 곧 양성으로 분류된 개체 중 제대로 분류된 개체, 그리니까 참 양성들의 비율이다.

이는 자연스럽게 음성 개체가 양성 개체보다 훨씬 적은 희귀 질환 환자들을 분류하는 것과 같은 상황에 대해 더 적절하다고 볼 수 있겠다. 우리가 진짜 희귀 질환 환자를 제대로 분류해내는 것에 관심이 더 큰 상황에서 음성 개체에 대한 분류 성능이 뛰어난 것은 상대적으로 의미가 적다. FPR와 달리 정밀도는 분모에서 참 음성(True Negative)이 빠져있기 때문에 이런 음성 개체가 넘쳐나 그에 대한 분류를 당연히 잘하기 때문에 전반적으로 분류기가 뛰어나 보이게 하는 착시 현상을 배제하기 때문이다. 

AUC

이제 이 곡선 아래의 면적(Area Under the Curve)에 대해서 말해보자. 우리가 지금 그린 ROC 곡선 아래의 면적은 0.9이다. 이는 우리가 여러 분류 알고리즘 중 하나를 선택하는데 도움을 준다. 만약 로지스틱 회귀 말고 랜덤 포레스트 같은 분류를 사용해 다른 ROC 곡선이 그려졌다고 하자. 그리고 그 ROC 곡선의 면적이 로지스틱 회귀 곡선의 ROC 곡선의 면적보다 좁다면? 우리는 로지스틱 회귀 분석이 해당 쥐들을 분류하는 과제에 대해 더 성능이 뛰어나다는 결론을 내린다. 

[Copyright ⓒ 블로그채널 무단전재 및 재배포 금지]

Comments