일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Bayes Theorem
- 퍼셉트론
- ANOVA
- 인공신경망
- 통계
- 컴퓨터 조립
- Stack
- 확률
- Neural Network
- 심층학습
- 인공지능
- p-value
- 인공지능 겨울
- 베이즈 정리
- AI Winter
- AI
- 딥러닝
- 30 Day Challenge
- 컴퓨터
- Bayes Rule
- 분산분석
- 편향
- 조건부 확률
- p 값
- knn
- LeetCode
- Today
- Total
군더더기 없는 기계학습 백과사전
혼동행렬(Confusion Matrix)이란 본문
우리에게 다음과 같은 정보 집합(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 ⓒ 블로그채널 무단전재 및 재배포 금지]
'Machine Learning > 통계이론 훑어보기' 카테고리의 다른 글
수신자 조작 특성(ROC) 곡선과 곡선 아래 면적 (AUC) (1) | 2020.09.09 |
---|---|
민감도(Sensitivity)와 특이도(Specificity) (2) | 2020.08.15 |
교차검증(Cross Validation)이란 (0) | 2020.08.10 |
통계 표본이 커진다고 편향이 작아질까? (0) | 2020.07.08 |
조건부 확률을 파이썬에서 사용해보자 (0) | 2020.05.02 |