티스토리 뷰
혼동행렬(confusion matrix)은 모델의 성능을 평가할 때 사용되는 지표입니다.
처음에 이해하기가 좀 헷갈렸는데 굉장히 이해가 잘되는 자료를 보고 정리해봤어요!
먼저 모델의 성능을 평가하기 위해 혼동행렬과 함께 필요한 네 가지 개념이 있습니다.
- TP(True Positive) - 맞는 것을 올바르게 맞다고 예측한 것
- TN(True Negative) - 아닌 것을 올바르게 틀리다고 예측한 것
- FP(False Positive) - 아닌 것을 올바르지 않게 맞다고 예측한 것
- FN(False Negative) - 맞는 것을 올바르지 않게 틀리다고 예측한 것
이건 ADSP공부할 때 나왔던 개념인데 솔직히 이해도 제대로 못하고 무작정 외웠었어요!
이해를 돕기 위해
'질병이 있는 사람(맞는 것)'과 '질병이 없는 사람(아닌 것)'을
질병 진단기가
'올바르게(True) 혹은 올바르지 않게(False)'
'맞다고(Positive) 혹은 틀리다고(Negative)'
판단하는지 그림과 같이 예를 들어볼게요!
1.TP(True Positive) - 맞는 것을 올바르게 맞다고 예측한 것
질병이 있는 사람이 진단기에게 검사를 받았는데 Positive라는 예측을 하였습니다.
이 진단기는 질병이 있는 사람(맞는 것)을 '올바르게(True) 맞다고(Positive) 예측'하였으니 이 경우는 TP입니다.
2.TN(True Negative) - 아닌 것을 올바르게 틀리다고 예측한 것
질병이 없는 사람이 진단기에게 검사를 받았는데 Negative라는 예측을 하였습니다.
이 진단기는 질병이 없는 사람(아닌 것)을 '올바르게(True) 틀리다고(Negative) 예측'하였으니 TN입니다.
3.FP(False Positive) - 아닌 것을 올바르지 않게 맞다고 예측한 것
질병이 없는 사람이 진단기에게 검사를 받았는데 Positive라는 예측을 하였습니다.
이 진단기는 질병이 없는 사람(아닌 것)을 '올바르지 않게(False) 맞다고(Positive) 예측'하였으니 FP입니다.
4.FN(False Negative) - 맞는 것을 올바르지 않게 틀리다고 예측한 것
질병이 있는 사람이 진단기에게 검사를 받았는데 Negative라는 예측을 하였습니다.
이 진단기는 질병이 있는 사람(맞는 것)을 '올바르지 않게(False) 틀리다고(Negative) 예측'하였으니 FN입니다.
혼동행렬 표 이해하기
혼동행렬을 통해 모델이 다소 B를 C로 혼동하는 것과, C를 A로 혼동한다는 등의 정보를 알아낼 수 있고
그에 따른 모델 개선을 생각해볼 수 있습니다. 더불어 대략적인 모델의 성능도 눈으로 확인할 수 있어요!
위에서 이해가 되셨다면 이제 실제 혼동행렬을 보면서 정리해봅시다!
이 모델은 A,B,C,D를 보여주면 A,B,C,D중에 하나를 예측하는 기계라고 생각해볼게요.
A : 10번 A를 보여줬을 경우, 9번은 A로 정확하게 맞췄으나, 1번은 B라고 대답함
B : 20번 B를 보여줬을 경우, 15번은 B로 맞췄으나, 1번은 A, 3번은 C, 1번은 D라고 대답함
C : 30번 C를 보여줬을 경우, 24번은 C로 맞췄으나, 5번은 A, 1번은 D라고 대답함
D : 20번 D를 보여줬을 경우, 15번은 D로 맞췄으나, 4번은 B, 1번은 C라고 대답함
1. TP
TP는 맞는 것을 올바르게(True) 맞다고(Positive)예측 하는 거였죠?
각 클래스별로 A는 A, B는 B, C는 C, D는 D라고 올바르게 예측한 부분들이 TP겠네요!
2. TN
TN은 아닌 것을 올바르게(True) 틀리다고(Negative) 예측하는 개념이였습니다.
A클래스에서 봤을 때 A가 아닌 것(B,C,D)을 올바르게 틀리다(B,C,D)고 예측한 부분이 어느부분일까요?
B클래스에서는 15 , 3 , 1
C에서는 0 , 24 , 1
D에서는 4 , 1 , 15
이해가 되시나요 ? 그럼 이번엔 B클래스에 대한 TN을 찾아봐요!
B가 아닌 것(A,C,D)을 올바르게 틀리다(A,C,D)라고 예측한 부분을
한줄 한줄 차례 보면,
A에서는 9 , 0 , 0
C에서는 5 , 24 , 1
D에서는 0 , 1 , 15
이 부분들이 B가 아니라고 예측한 값이 되겠죠?
3.FP
FP는 아닌 것을 올바르지 않게 맞다고 예측해버린다는 개념이었습니다.
A가 아닌 것(B,C,D)을 A라고 올바르지 않게 예측한 값들은
B에서는 1
C에서는 5
D에서는 0
입니다.
한번 더 볼게요.
B가 아닌 것(A,C,D)을 B라고 올바르지 않게 예측해버린 값들은
A에서는 1
C에서는 0
D에서는 4
가 되겠죠?
4.FN
A라는 실제값에 대해서 맞는 것을 올바르지 않게 틀리다고 예측해버린 값들은 어디일까요?
맞는 것(A)을 올바르지 않게 틀리다고 예측한 값은 A클래스에 대해선 B,C,D가 되겠네요!
이상으로 혼동행렬의 기본적인 4가지 개념에 대해 알아봤습니당
이해가 되셨다면 좋겠네요! (●'◡'●)
<참고 문헌>
-https://www.youtube.com/watch?v=VAogHvCqf3E
-Minseok-Heo, [나의 첫 머신러닝/딥러닝], Wikibooks, 2019.
이 글은 저자님과 출판사의 참고 허가를 받고 작성되었습니다.
'Data Science > Machine Learning' 카테고리의 다른 글
[Machine Learning] 선형 회귀와 경사하강법 (0) | 2019.04.14 |
---|---|
[Machine Learning] K-최근접 이웃(KNN) 알고리즘 (0) | 2019.04.04 |
[Machine Learning] 서포트 벡터 머신 - SVM (0) | 2019.04.03 |
[Machine Learning] 과대적합과 과소적합 (0) | 2019.03.28 |
[Machine Learning] 지도학습과 비지도학습 (0) | 2019.03.27 |