728x90
반응형
분류 모델 평가하기
이번 글에서는 분류 모델을 검증하는 단계에 쓰이는 혼동행렬 confusion matrix에 대해 설명해 보겠습니다.
분류 모델의 예로는 스팸 메일인지 아닌지 분류, 타이타닉호에서 생존자 예측하기, MNIST 손글씨 분류가 있습니다.
완벽한 분류 모델이 아닌 이상 분류하는 모델이 잘못된 분류를 할 수 돼있습니다.
예를 들면, 스팸이라고 분류를 했지만 스팸이 아니거나, 스팸이 아니라고 했지만 스팸이거나!
밑과 같이 모형이 예측한 값과 실제 값을 정리한 행렬을 혼동행렬이라고 합니다.
실제 (Actual) | |||
Positive | Negative | ||
예측 (predicted) |
Positive | True Positive (TP) | False Positive (FP) |
Negative | False Negative (FN) | True Negative (TN) |
- True Positive: 모델이 예측한 값이 positive이고 실제 값도 positive인 경우
(모델이 스팸(1)이라고 분류했는데 실제로 스팸(1)인 경우) - False Positive: 모델이 예측한 값이 positive이지만 실제 값은 negative인 경우
(모델이 스팸(1)이라고 분류했는데 실제로는 스팸이 아닌(0) 경우) - False Negative: 모델이 예측한 값이 negative이지만 실제 값은 positive인 경우
(모델이 스팸 아니라고(0) 분류했는데 실제로는 스팸인(1) 경우) - True Negative: 모델이 예측한 값이 negative이고 실제 값도 negative인 경우
(모델이 스팸 아니라고(0) 분류했는데 실제로 스팸이 아닌 (0) 경우)
R에서 혼동행렬 컴퓨팅
R에서 혼동행렬을 컴퓨팅하려면 caret 패키지가 필요합니다. 아래는 간단한 샘플 데이터를 이용해 혼동행렬을 컴퓨팅하는 데에 필요한 코드입니다.
install.packages('caret')
library(caret)
actual_label <- factor(c(1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1))
predicted <- factor(c(1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1))
confusionMatrix(data=predicted, reference = actual_label)
Output)
Python에서 혼동행렬 컴퓨팅
아래는 파이썬에서 혼동행렬을 컴퓨팅하는 코드입니다. sklearn 라이브러리를 사용하면 됩니다.
from sklearn.metrics import confusion_matrix
y_true = [1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1]
y_pred = [1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1]
confusion_matrix(y_true, y_pred)
위에 예는 이진 binary 분류를 예로 들었지만 어떤 분류 모델도 검증이 가능합니다. 밑에는 손글씨 1에서 9까지를 분류한 모델의 혼동행렬입니다.
728x90
반응형
'ᐧ༚̮ᐧ Data Science | AI > 머신러닝 및 딥러닝' 카테고리의 다른 글
[머신러닝/딥러닝] Foundation Model이란? (0) | 2024.05.28 |
---|---|
AI/머신러닝 논문 사이트 추천 (1) | 2023.02.23 |
[EPIC GAMES] 머신러닝 게임 "While True: Learn()" 리뷰 (0) | 2021.12.08 |
[인공지능 자격증] 마이크로소프트 AI Fundamentals 자격증 (AI-900) 취득 후기 (15) | 2021.10.22 |
[머신러닝] 머신러닝이란? (Feat. 지도학습 & 비지도학습) (1) | 2021.03.16 |