혼동행렬
앞서 학습한 로지스틱 회귀 모델의 혼동행렬과 정확도·정밀도·재현도·F1 해석
혼동행렬
🤖 AI 프롬프트
앞서 학습한 model을 테스트 데이터에 적용해서 혼동행렬을 출력하고, 정확도, 정밀도, 재현도를 계산해라
- 혼동 행렬(confusion matrix): 실제값과 예측값의 조합을 표로 정리한 분류 성능 요약
sklearn.metrics.confusion_matrix로 계산- 이진 분류에서는 실제 음성/양성과 예측 음성/양성의 조합으로 네 칸이 만들어짐
from sklearn.metrics import confusion_matrix
y_pred = model.predict(X_test)
confusion_matrix(y_test, y_pred)
실행 결과
array([[1200, 157],
[ 357, 286]])
- 행: 실제 클래스
- 열: 예측 클래스
진/위 양성/음성
- 혼동행렬에서 양성/음성은 예측을 기준으로 말함
- 진(True): 예측이 맞음
- 위(False): 예측이 틀림
- 주요 용어
- 진음성(TN): 실제 음성, 예측 음성
- 위양성(FP): 실제 음성, 예측 양성
- 위음성(FN): 실제 양성, 예측 음성
- 진양성(TP): 실제 양성, 예측 양성
정확도
- 정확도(accuracy): 전체 중 예측이 맞은 비율
- 음성/양성 구분 자체보다 전체 정답률에 관심이 있을 때 사용
- 실습: 2,000개 중 정상과 불량을 맞힌 1,486개의 비율, 74.3%
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_pred)
실행 결과
0.743
정밀도
- 정밀도(precision): 양성이라고 예측한 것 중 실제로 맞은 비율
- 실습: 불량으로 예측한 443개 중 실제 불량 부품 286개의 비율, 약 64.6%
- 양성 예측 자체가 중요한 경우 사용
- 예: 채용, 투자, 결혼, 추천 등
from sklearn.metrics import precision_score
precision_score(y_test, y_pred)
실행 결과
0.6455981941309256
재현도
- 재현도(recall): 실제 양성 중 찾아낸 비율
- 실습: 실제 불량 부품 643개 중 찾아낸 286개의 비율, 약 44.5%
- 양성을 빠뜨리지 않고 찾아내는 것이 중요한 경우 사용
- 예: 방역
- 의학 등에서는 민감도(sensitivity)라고도 하며, TPR(True Positive Rate)와 같음
from sklearn.metrics import recall_score
recall_score(y_test, y_pred)
실행 결과
0.4447900466562986
F1
- F1: 정밀도(p)와 재현도(r)의 조화 평균
- 조화평균: 역수의 평균의 역수
- 산술평균에 비해, 둘 중에 하나만 낮아져도 크게 낮아짐
- 예: 0.9와 0.1인 경우, 산술평균 0.5, 조화평균 0.18
- 정밀도와 재현도가 모두 0일 때 scikit-learn의 F1은 0
from sklearn.metrics import f1_score
f1_score(y_test, y_pred)
실행 결과
0.5267034990791897
퀴즈
confusion_matrix(y_test, y_pred)의 행과 열은 무엇을 뜻하나요?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.