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

혼동행렬(Confusion Matrix)이란 본문

Machine Learning/통계이론 훑어보기

혼동행렬(Confusion Matrix)이란

Jay김 2020. 8. 11. 10:29

우리에게 다음과 같은 정보 집합(dataset)이 주어졌다고 해보자. 우리는 혈압, 혈중 콜레스테롤 수치, 혈당 같은 변수들과 기계학습 알고리즘을 이용해 환자가 심장질환이 있을 확률을 예측하고자 한다.

이를 위한 기계학습 알고리즘으로는 로지스틱 회귀분석, K 최근접 이웃, 랜덤 포레스트 같은 다양한 알고리즘을 선택할 수 있는 선택지가 있다. 그러나 이 중 제일 적절한 알고리즘을 어떻게 고를 수 있을까?

우리는 일단 데이터를 훈련 데이터와 시험 데이터로 나누어 훈련 데이터로 기계학습 모델을 훈련시킨 뒤 시험 데이터로 그 성능을 평가할 것이다. 평가를 위해 동원되는 방법 중 하나는 혼동행렬을 만들어보는 것이다.

일단 여기서 행은 알고리즘이 예측하는 클래스(class), 열은 관측의 실제 클래스라고 하자. 이에 따라 총 네가지 상황을 행렬로 표현할 수 있다.

  • 참 양성 (True Positive): 모델이 올바르게 심장 질환이 있음을 예측했을 경우
  • 거짓 양성 (False Positive): 모델은 심장 질환이 있음을 예측했는데 실제 관측은 심장 질환이 없을 경우
  • 거짓 음성 (False Negative): 모델은 심장 질환이 없음을 예측했는데 실제 관측은 심장 질환이 있을 경우
  • 참 음성 (True Positive): 모델이 올바르게 심장 질환이 없음을 예측했을 경우

혼동 행렬

당연히 우리가 원하는 알고리즘이 올바르게 예측을 한 상황들은 참 양성과 참 음성일 것이다. 각 상황의 수를 집계해 우리는 혼동행렬을 완성한다. 그럼 예를 들어 우리가 랜덤 포레스트를 사용해서 시험자료를 상대로 예측을 하게 해서 다음과 같은 혼동행렬이 나왔다고 하자.

그리고 마찬가지로 K 최근접이웃 알고리즘을 사용해 다음과 같은 혼동행렬이 나왔다고 하자.

참 양성과 참 음성 둘 다 랜덤 포레스트가 우위인 수치를 보인다. 따라서 우리는 랜덤 포레스트를 사용하기로 할 것이다. 그러나 항상 이렇게 확실한 차이가 나는 수치가 나오지 않는다. 예를 들어 랜덤 포레스트와 비교해 로지스틱 회귀분석을 통해 참 양성 139개 참 음성 112개가 나온다면 둘 중 하나를 선택하기란 참 애매할 것이다. 이를 위해서 다음 글에서 혼동행렬에서 비롯되는 좀 더 정교한 평가 지표인 정밀도(Precision), 재현율(Recall), ROC 곡선과 AUC 곡선을 다뤄보도록 하겠다.

우선 간단한 혼동행렬을 다뤄봤으니 좀 더 복잡한 혼동행렬을 다뤄보자. 

우리에게 다음과 같은 사람들의 영화 선호 데이터가 주어졌을 때, 기계학습 알고리즘을 이용해 이들이 좋아할 만한 영화들을 예측한다고 해보자.

쥬라기 공원 III 기생충 인천상륙작전 엑스맨:다크 피닉스 좋아하는 영화
좋아함 안좋아함 좋아함 좋아함 자전거왕 엄복동
안좋아함 안좋아함 좋아함 안좋아함 엑스맨: 뉴 뮤턴트
안좋아함 좋아함  좋아함 좋아함 R2B
... ... ... ... ...

 

이때 예측하고자 하는 목표 변수가 UBD, 엑스맨, R2B 중 하나라면 우리의 혼동행렬은 다음과 비슷한 3행 3열일 것이다. 마찬가지로 대각선상에 올려져 있는 셀들이 우리가 원하는 올바른 예측이다. 추가로 예측하고자 하는 클래스가 40개라면 혼동행렬은 40 x 40 행렬일 것이다.

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

Comments