본문 바로가기

Database/Statistics

[통계] 혼동 행렬(Confusion Matrix) + Python

혼동 행렬(Confusion Matrix)

  • 모델의 성능을 평가할 때 사용되는 지표
  • 예측값이 실제 관측값을 얼마나 정확히 예측했는지 보여주는 행렬
  • 분류 모델을 평가하는 기준
  • 모델이 얼마나 정밀한지, 얼마나 실용적인지, 얼마나 정확한지를 평가

레이블 0, 1을 가진 데이터를 분류한다고 할 때 관심 범주를 1이라고 한다

  1. True Positives : 1인 레이블을 1이라 하는 경우 → 관심 범주를 정확하게 분류한 값
  2. False Negatives : 1인 레이블을 0이라 하는 경우 → 관심 범주가 아닌 것으로 잘못 분류
  3. False Positives : 0인 레이블을 1이라 하는 경우 → 관심 범주라고 잘못 분류
  4. True Negatives : 0인 레이블을 0이라 하는 경우 → 관심 범주가 아닌 것을 정확하게 분류
import numpy as np

df = pd.read_excel('test.xlsx')
m = logit('종속변수 ~ 독립변수1 + 독립변수2', df).fit()
m.summary()

# 예측
prob = m.predict(df)
pred = np.where(prob>0.5, 1, 0) # 문턱값 = 50%

# 혼동 행렬
from sklearn.metrics import confusion_matrix
confusion_matrix(df.y, pred)

이 정보를 바탕으로 3가지의 척도 평가

1️⃣ 정확도(Accuracy)

  • 모델이 입력된 데이터에 대해 얼마나 정확하게 예측하는지를 나타냄
  • 예측값 결과와 실제값이 동일한 건수 / 전체 데이터 수
  • 정확도는 1을 1로, 0을 0으로 정확하게 분류해낸 것
from sklearn.metrics import accuracy_score
accuracy_score(df.y, pred)

2️⃣ 정밀도(Precision)

  • 모델이 1로 분류해낸 그룹 A가 있을 때, 모델이 얼마나 믿을만한 정도로 A를 만들어 냈는지 평가하는 척도
  • 양성 예측 중에 맞은 비율
  • 예측 중에 얼마나 맞았는지를 측정
  • 예시 : 추천 알고리즘
from sklearn.metrics import precision_score
precision_score(df.y, pred)

3️⃣ 재현도(Recall)

  • 정밀도와 비교되는 척도
  • 전체 예측 중에 TP가 얼마나 많은가에 관한 것
  • 실제 중에 얼마나 맞았는지를 측정
  • 양성을 찾아 내는 것이 중요한 경우
  • 관심 영역을 얼마나 추출해냈는지를 말함
  • 즉, 모형의 실용성과 관련된 척도
  • 예시 : 코로나 자가키트
from sklearn.metrics import recall_score
recall_score(df.y, pred)

참고

 

Confusion Matrix를 통한 분류 모델의 평가

분류 모델을 학습하는 것의 목적은, 주어진 데이터를 의도에 맞게 잘 분류해내기 위한 것이다. 그렇다면 이러한 모델을 평가하는 기준이 필요할 것이다. 모델을 평가할때는 모델이 얼마나 정밀

yamalab.tistory.com

 

Confusion Matrix (혼동행렬)

지난주 토요일(4/17) 빅데이터분석기사 필기시험을 치렀다 데이터분석전문가(ADP)를 딴지 얼마 안돼서 그런지 체감 난이도는 그저 그런 수준? (어차피 출제기관은 한국데이터산업진흥원으로 동일

yogyui.tistory.com

 

반응형