본문 바로가기
AI/Machine Learning

분류 vs 회귀 모델 평가 지표

by comflex 2025. 4. 13.
728x90
반응형

머신러닝 모델을 만들었는데,
"정확도가 90%인데도 결과가 이상해요."
"이 문제는 accuracy보다 recall이 중요하지 않나요?"
"roc_auc_score는 무슨 뜻이죠?"

이런 질문들, 한 번쯤 들어보셨을 거예요.

오늘은 머신러닝과 딥러닝 모델을 만들 때 반드시 알아야 하는
모델 평가 지표(Metric)에 대해 제대로 정리해볼게요.
특히 accuracy_score, roc_auc_score, r2_score, mean_squared_error
각 지표가 분류(Classification)와 회귀(Regression) 중 어디에 쓰이는지를 중심으로 설명드릴게요.


왜 평가 지표가 중요할까?

우리는 모델을 학습시키고 난 뒤 반드시 평가해야 합니다.
모델이 얼마나 잘 맞췄는지, 실제 상황에서 유용한지를 판단해야 하기 때문이죠.
이때 사용하는 수치화된 기준이 바로 평가 지표(metric)입니다.

하지만!
모델의 종류(분류 or 회귀)에 따라 지표도 달라져야 합니다.
잘못된 지표를 사용하면 성능을 왜곡되게 판단할 수 있어요.


모델 유형에 따라 사용하는 지표가 다르다

1. 분류(Classification) 모델

결과가 카테고리(클래스) 중 하나로 나오는 문제
예: 스팸 메일인지 아닌지, 고양이/강아지 구분, 질병 유무 판단 등

2. 회귀(Regression) 모델

결과가 연속적인 숫자로 나오는 문제
예: 내일 기온 예측, 주가 예측, 집값 예측 등


분류 모델에서 자주 쓰는 평가 지표

지표 이름 설명 사용 예시
accuracy_score 전체 예측 중 맞춘 비율 클래스 간 데이터 비율이 비슷할 때
precision_score 양성이라고 예측한 것 중 실제 양성의 비율 스팸 필터, 암 진단에서 "양성 예측"의 정확도가 중요할 때
recall_score 실제 양성 중에서 모델이 양성이라고 맞춘 비율 암 진단 등에서 "진짜 양성"을 놓치면 안 되는 경우
f1_score precision과 recall의 조화 평균 둘 다 중요할 때
roc_auc_score 이진 분류에서 모델이 양성/음성을 얼마나 잘 구분하는지 클래스 불균형 문제에 강함
confusion_matrix TP, FP, TN, FN 등 모든 경우의 수를 표로 표현 분류 성능을 시각적으로 파악할 때 유용

예를 들어, 질병 예측에서는 recall이 중요한 이유는?
진짜 환자를 놓치면 안 되기 때문입니다.

반대로 스팸 필터는 precision이 중요하죠.
정상 메일을 스팸으로 분류하면 큰일이니까요.


회귀 모델에서 자주 쓰는 평가 지표

지표 이름 설명 사용 예시
mean_squared_error (MSE) 예측값과 실제값의 차이를 제곱한 평균 예측 오차를 크게 벌점 주고 싶을 때
mean_absolute_error (MAE) 예측값과 실제값의 절대값 평균 이상치(outlier)에 덜 민감한 평가
r2_score (결정 계수) 예측값이 실제값을 얼마나 잘 설명하는지 (1에 가까울수록 좋음) 모델 전체 설명력 판단
mean_squared_log_error (MSLE) 로그로 변환한 후 MSE를 계산 예측값이 작고 음수 예측이 없는 경우
huber loss MAE + MSE의 하이브리드 안정적인 회귀 평가가 필요할 때

반응형
728x90

어떤 지표를 써야 할까? (요약표)

지표 분류 회귀
accuracy_score
roc_auc_score
precision_score
recall_score
f1_score
r2_score
mean_squared_error
mean_absolute_error

실전에서 지표를 고르는 팁

  • 데이터 불균형 문제가 있으면 accuracy는 피하자. → f1_score, roc_auc_score 추천
  • 양성 클래스 놓치면 안 되는 경우recall_score 중시
  • 정확히 양성만 잘 맞춰야 하는 경우precision_score 중요
  • 회귀 문제에서 이상치가 많다면?MAE 또는 Huber Loss 사용
  • 모델의 전체적인 설명력을 알고 싶다면?r2_score

실습 예시 (Scikit-learn 기준)

from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, r2_score, mean_squared_error

# 분류 예시
y_true = [0, 1, 1, 0]
y_pred = [0, 1, 0, 0]

print(accuracy_score(y_true, y_pred))      # 0.75
print(precision_score(y_true, y_pred))     # 1.0
print(recall_score(y_true, y_pred))        # 0.5

# 회귀 예시
y_true_reg = [3.0, -0.5, 2.0, 7.0]
y_pred_reg = [2.5, 0.0, 2.0, 8.0]

print(mean_squared_error(y_true_reg, y_pred_reg))  # 0.375
print(r2_score(y_true_reg, y_pred_reg))            # 0.948

마무리

모델을 잘 학습시키는 것도 중요하지만,
올바른 평가 지표를 선택하는 것이야말로
정말 "좋은 모델"을 만들기 위한 마지막 관문이에요.

같은 accuracy 90%라도,
어떤 문제에서는 훌륭한 결과일 수 있지만,
어떤 문제에서는 위험한 착각일 수 있습니다.

모델 종류에 따라 적절한 지표를 골라 사용하고,
그 지표가 말하는 의미를 잘 해석할 수 있어야
진짜 의미 있는 AI 모델을 만들 수 있습니다

728x90
반응형

'AI > Machine Learning' 카테고리의 다른 글

머신러닝에서 L1, L2 규제  (0) 2025.04.13
원핫 인코딩(One-Hot Encoding)  (1) 2025.04.13
머신러닝에서의 정규화(Regularization)  (0) 2025.04.09
데이터 변환  (0) 2025.04.08
로그(log)와 지수(exp)의 관계  (1) 2025.04.08