분류(Classification) 모델

“이 데이터가 어떤 종류(범주) 인가를 구분하는 모델”

즉: 결과값이 글자나 라벨(label) 형태 데이

(예: 합격/불합격, 고양이/강아지, 스팸/일반메일 등)

🔹 예시

공부시간 결과

20시간 합격
10시간 불합격
  • 이 데이터를 학습해서
  • “15시간 공부한 학생은 합격일까 불합격일까?” 를 맞추는 문제 👉 분류 문제

🔹 대표 알고리즘

  • Logistic Regression (이름은 회귀지만, 분류용!)
  • Decision Tree Classifier
  • Random Forest Classifier
  • K-Nearest Neighbors (KNN)
  • XGBoost Classifier

🔹 성능 평가 지표

  • 정확도 (Accuracy) → 얼마나 많이 맞췄는가
  • 정밀도 (Precision) → 맞다고 한 것 중 진짜로 맞은 비율
  • 재현율 (Recall) → 실제 정답 중 모델이 잘 찾아낸 비율
  • F1-score, Confusion Matrix 등

분류 모델 평가란?

분류 모델은 정답(실제값) 과 예측값 이 같은지 다른지를 비교해서

“얼마나 정확하게 맞췄는가”로 성능을 평가

💡핵심 아이디어

분류 모델은 어떤 데이터가 0인지(부정), 1인지(긍정) 를 예측하는 모델

예를 들어:

  • 스팸메일(1)인가 아닌가(0)
  • 환자가 병이 있다(1) 없다(0)
  • 시험 합격(1) 불합격(0)

분류 모델 평가 지표(Accuracy, Precision, Recall)

실제값 예측값 이름 뜻

1 1 TP (True Positive) 실제 1을 1로 예측함 (정답)
0 0 TN (True Negative) 실제 0을 0으로 예측함 (정답)
1 0 FN (False Negative) 실제 1을 0으로 예측함 (놓침)
0 1 FP (False Positive) 실제 0을 1로 예측함 (잘못 탐지)

Confusion Matrix 혼동행렬 = cross tab

# 모듈 불러오기
from sklearn.metrics import confusion_matrix

# 성능 평가
confusion_matrix(y_test, y_pred)

(1) 정확도 (Accuracy) 또는 정분류율

전체 중에 모델이 정답을 맞춘 비율

# 모듈 불러오기
from sklearn.metrics import accuracy_score

# 성능 평가
accuracy_score(y_test, y_pred)

(2) 정밀도 (Precision)

모델이 ‘1’이라고 예측한 것 중에 실제로 1인 비율

 

# 모듈 불러오기
from sklearn.metrics import precision_score

# 성능 평가
precision_score(y_test, y_pred, average=None)

(3) 재현율 (Recall) 또는 민감도

실제로 1인 것 중에서 모델이 1이라고 맞춘 비율

# 모듈 불러오기
from sklearn.metrics import recall_score

# 성능 평가
recall_score(y_test, y_pred, average=None)

(4) F-1 Score

정밀도(Precision)재현율(Recall) 을 한 번에 고려해서 평가하는 지표를 설명

모델이 얼마나 정확하게 예측했는지(Precision) 와

얼마나 놓치지 않고 잘 찾아냈는지(Recall)

두 가지를 균형 있게 잘하고 있는가를 나타내는 점수

정밀도(Precision)재현율(Recall)조화평균(Harmonic Mean)

조화평균(Harmonic Mean) 을 쓰는 이유는,

둘 중 하나라도 값이 작으면 전체 점수도 확 떨어지게 만들기 때문

지표 값

Precision 1.0
Recall 0.1

모델이 "맞다고 한 건 다 맞긴 하지만" 거의 다 놓침 (Recall 낮음)

F1이 낮다 → 균형이 안 맞다는 뜻

지표 값

Precision 0.8
Recall 0.8

둘 다 고르게 좋을 때

 

F1도 높음 → 균형이 잘 맞는 좋은 모델

한 줄 요약

지표 의미 F1-Score와 관계

Precision “맞다고 한 것 중 진짜 맞은 비율” 너무 높고 Recall 낮으면 불균형 ⚠️
Recall “진짜 맞는 것 중 맞게 예측한 비율” 너무 높고 Precision 낮으면 불균형 ⚠️
F1-Score “두 성능의 균형” 둘 다 적당히 높을 때 최고

언제 F1-Score를 쓰냐면

✔️ 정답(1)이 적은 불균형 데이터일 때

✔️ Precision과 Recall 둘 다 중요할 때

예: 스팸메일 분류, 질병 진단, 이상 탐지 등

F1-Score는 “정확히 맞춘 비율(Precision)”과

놓치지 않은 비율(Recall)”을 균형 있게 평가하는 점수

값이 1에 가까울수록 → 완벽한 분류 모델!

# 모듈 불러오기
from sklearn.metrics import f1_score

# 성능 평가
f1_score(y_test, y_pred, average=None)

 

+ Recent posts