Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 데이터 전처리
- 활성화 함수
- GRU
- 강화 학습
- 인공지능
- CNN
- AI
- 머신러닝
- 머신 러닝
- 최적화
- 인공 신경망
- 과적합
- 교차 검증
- 자연어 처리
- 정규화
- 딥러닝
- 회귀
- reinforcement learning
- 차원 축소
- 신경망
- rnn
- q-러닝
- 지도 학습
- 강화학습
- Machine Learning
- python
- LSTM
- Deep learning
- 손실 함수
- Q-Learning
Archives
- Today
- Total
move84
머신러닝 기초 – 혼동 행렬(Confusion Matrix) 분석 본문
반응형
머신러닝에서 모델의 성능을 평가할 때 혼동 행렬(Confusion Matrix)은 필수적인 개념이다. 특히, 이진 분류(Binary Classification) 문제에서 모델이 얼마나 정확하게 분류했는지를 분석하는 데 유용하다. 이 글에서는 혼동 행렬의 개념, 각 지표의 의미, 그리고 실제 파이썬 코드 예제를 통해 혼동 행렬을 효과적으로 활용하는 방법을 설명한다.
🧐 혼동 행렬(Confusion Matrix)이란?
혼동 행렬(Confusion Matrix)은 모델의 예측값과 실제값을 비교하여 정리한 표다. 이를 통해 모델이 맞춘 데이터와 틀린 데이터를 직관적으로 분석할 수 있다.
✅ 혼동 행렬의 기본 구조
실제 값 \ 예측 값 | 양성(Predicted Positive) | 음성(Predicted Negative) |
---|---|---|
양성(True Positive, TP) | 모델이 맞게 양성으로 예측 | 모델이 양성을 음성으로 잘못 예측 (False Negative, FN) |
음성(False Positive, FP) | 모델이 음성을 양성으로 잘못 예측 | 모델이 맞게 음성으로 예측 (True Negative, TN) |
- True Positive (TP): 실제 양성을 양성으로 정확히 예측한 개수
- False Positive (FP): 실제 음성을 양성으로 잘못 예측한 개수 (오탐)
- False Negative (FN): 실제 양성을 음성으로 잘못 예측한 개수 (누락)
- True Negative (TN): 실제 음성을 음성으로 정확히 예측한 개수
📌 혼동 행렬의 주요 성능 지표
혼동 행렬을 활용하면 다양한 성능 지표를 계산할 수 있다.
1️⃣ 정확도(Accuracy)
모델이 전체 데이터에서 올바르게 분류한 비율.
Accuracy = (TP + TN) / (TP + TN + FP + FN)
✅ 언제 유용한가?
- 데이터가 균형 잡혀 있을 때(양성과 음성 데이터 개수가 비슷할 때)
2️⃣ 정밀도(Precision)
모델이 양성이라고 예측한 것 중에서 실제 양성의 비율.
Precision = TP / (TP + FP)
✅ 언제 유용한가?
- 스팸 필터: 정상 메일을 스팸으로 분류하는 FP(오탐)를 줄이는 것이 중요함.
- 광고 추천: 잘못된 광고 추천(FP)이 많으면 사용자 경험이 나빠질 수 있음.
3️⃣ 재현율(Recall, Sensitivity)
실제 양성 중에서 모델이 양성으로 정확하게 예측한 비율.
Recall = TP / (TP + FN)
✅ 언제 유용한가?
- 의료 진단: 암 환자를 음성으로 잘못 분류하는 FN(누락)을 최소화해야 함.
- 보안 시스템: 공격을 놓치지 않는 것이 중요(FN 최소화).
4️⃣ F1-Score
정밀도(Precision)와 재현율(Recall) 사이의 균형을 맞춘 조화 평균.
F1-Score = 2 * (Precision * Recall) / (Precision + Recall)
✅ 언제 유용한가?
- 정밀도와 재현율 간의 균형이 필요한 경우
- 불균형 데이터에서 성능을 평가할 때
🛠 혼동 행렬을 파이썬으로 계산하는 방법
파이썬에서 scikit-learn
을 활용하면 혼동 행렬을 쉽게 생성할 수 있다.
✅ 혼동 행렬 시각화 예제
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix
# 실제값과 예측값 정의
y_true = np.array([1, 0, 1, 1, 0, 1, 0, 0, 1, 1]) # 실제 값
y_pred = np.array([1, 0, 1, 0, 0, 1, 0, 1, 1, 1]) # 예측 값
# 혼동 행렬 계산
cm = confusion_matrix(y_true, y_pred)
# 시각화
plt.figure(figsize=(5,4))
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=["Negative", "Positive"], yticklabels=["Negative", "Positive"])
plt.xlabel("Predicted Label")
plt.ylabel("True Label")
plt.title("Confusion Matrix")
plt.show()
🎯 혼동 행렬 기반 모델 평가 방법
혼동 행렬을 기반으로 한 평가 방법을 이해하기 위해, 암 진단 모델을 예로 들어보자.
실제 \ 예측 | Positive(암) | Negative(정상) |
---|---|---|
Positive(암 환자) | 90 (TP) | 10 (FN) |
Negative(정상인) | 5 (FP) | 95 (TN) |
- 정확도(Accuracy)
(90 + 95) / (90 + 95 + 10 + 5) = 92.5%
- 정밀도(Precision)
90 / (90 + 5) = 94.7%
- 재현율(Recall)
90 / (90 + 10) = 90.0%
- F1-Score
2 * (94.7 * 90.0) / (94.7 + 90.0) = 92.3%
이처럼 정밀도, 재현율, F1-Score를 함께 분석해야 모델의 성능을 정확히 평가할 수 있다.
📊 불균형 데이터에서 혼동 행렬 활용
불균형 데이터란?
- 한 클래스(예: 정상 데이터)가 다른 클래스(예: 사기 거래)에 비해 훨씬 많은 데이터셋.
✅ 불균형 데이터 문제 해결 방법
- Oversampling – 적은 클래스의 데이터를 복제하여 균형 맞추기 (SMOTE 사용)
- Undersampling – 다수 클래스를 일부 삭제하여 균형 맞추기
- 클래스 가중치 조정 – 손실 함수에서 적은 클래스에 가중치 부여
- 정확도(Accuracy) 대신 F1-Score, Precision, Recall 사용
🚀 정리
성능 지표 | 공식 | 의미 | 중요성 |
---|---|---|---|
정확도(Accuracy) | (TP + TN) / (TP + TN + FP + FN) | 전체 예측 중 올바르게 분류된 비율 | 데이터가 균형 잡혔을 때 유용 |
정밀도(Precision) | TP / (TP + FP) | 양성으로 예측한 것 중 실제 양성의 비율 | FP(오탐)를 줄이는 것이 중요할 때 |
재현율(Recall) | TP / (TP + FN) | 실제 양성 중에서 올바르게 예측한 비율 | FN(누락)을 줄이는 것이 중요할 때 |
F1-Score | 2 * (Precision * Recall) / (Precision + Recall) | Precision과 Recall의 균형 | 불균형 데이터에서 유용 |
🔑 주요 용어 정리
- TP (True Positive): 실제 양성을 양성으로 예측
- FP (False Positive): 실제 음성을 양성으로 예측 (오탐)
- FN (False Negative): 실제 양성을 음성으로 예측 (누락)
- TN (True Negative): 실제 음성을 음성으로 예측
- F1-Score: Precision과 Recall의 균형을 맞춘 성능 지표
🔥 키워드
- 혼동 행렬
- 정밀도
- 재현율
- 머신러닝 평가
반응형
'머신러닝' 카테고리의 다른 글
머신러닝 하이퍼파라미터 튜닝: 랜덤 서치(Random Search)의 이해 (0) | 2025.02.25 |
---|---|
머신러닝 기초 – 하이퍼파라미터 튜닝과 그리드 서치(Grid Search) (0) | 2025.02.25 |
머신러닝 기초 – ROC 곡선과 AUC 지표 (0) | 2025.02.25 |
머신러닝 기초 – 정밀도(Precision), 재현율(Recall), F1-Score (0) | 2025.02.25 |
인공지능과 생명공학의 융합 (1) | 2025.02.23 |