일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 과적합
- 머신 러닝
- 딥러닝
- 강화학습
- python
- 인공 신경망
- reinforcement learning
- 머신러닝
- 최적화
- 회귀
- 교차 검증
- AI
- 차원 축소
- 손실 함수
- 활성화 함수
- Machine Learning
- 데이터 전처리
- CNN
- 자연어 처리
- 신경망
- GRU
- 지도 학습
- q-러닝
- Deep learning
- rnn
- Q-Learning
- 강화 학습
- LSTM
- 인공지능
- 정규화
- Today
- Total
move84
머신러닝 기초 - 평가 지표 본문
🔎 개요 및 소개
머신러닝 모델의 성능을 평가할 때, 단순히 정확도(Accuracy)만으로는 모델의 전반적인 성능을 파악하기 어렵다. 평가 지표(Evaluation Metrics)는 분류 모델과 회귀 모델 등 다양한 문제 유형에 따라 여러 가지가 존재하며, 각 지표는 모델의 강점과 약점을 드러내준다. 본 글에서는 분류 문제를 중심으로 정확도 외에도 정밀도(Precision), 재현율(Recall), F1 점수(F1 Score), ROC AUC(Receiver Operating Characteristic - Area Under Curve) 등의 평가 지표를 소개하고, 간단한 파이썬 코드 예제를 통해 초보자가 각 지표의 역할과 의미를 이해할 수 있도록 설명한다.
🔥 정확도(Accuracy)와 그 한계
정확도는 모델이 올바르게 분류한 샘플의 비율로, 가장 기본적이면서 직관적인 평가 지표다.
- 정확도 (Accuracy): 전체 샘플 중 모델이 올바른 예측을 한 비율.
- 장점: 이해하기 쉽고 계산이 간단하다.
- 단점: 클래스 불균형 문제에서 높은 정확도를 보여주더라도, 실제 중요한 소수 클래스를 놓칠 수 있다.
예를 들어, 90% 이상의 샘플이 한 클래스에 속하는 경우, 단순히 해당 클래스만 예측해도 높은 정확도를 기록할 수 있다. 따라서 이 경우에는 정확도 외의 추가적인 평가 지표가 필요하다.
💻 파이썬 코드 예시: 다양한 평가 지표 계산
아래 코드는 사이킷런(scikit-learn)을 사용하여 이진 분류 문제에서 정확도, 정밀도, 재현율, F1 점수, ROC AUC를 계산하는 예제다.
import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score, confusion_matrix
# 이진 분류를 위한 임의 데이터 생성
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=5, random_state=42)
# 학습 데이터와 테스트 데이터 분할 (70% 학습, 30% 테스트)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 로지스틱 회귀 모델 학습
model = LogisticRegression(max_iter=1000, solver='lbfgs')
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
y_pred_prob = model.predict_proba(X_test)[:, 1]
# 평가 지표 계산
acc = accuracy_score(y_test, y_pred)
prec = precision_score(y_test, y_pred)
rec = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
roc_auc = roc_auc_score(y_test, y_pred_prob)
cm = confusion_matrix(y_test, y_pred)
print("정확도 (Accuracy):", acc)
print("정밀도 (Precision):", prec)
print("재현율 (Recall):", rec)
print("F1 점수 (F1 Score):", f1)
print("ROC AUC:", roc_auc)
print("혼동 행렬 (Confusion Matrix):\n", cm)
이 코드는 make_classification 함수를 통해 이진 분류용 데이터를 생성하고, 로지스틱 회귀 모델을 학습시킨 후 테스트 데이터에 대한 예측 결과를 바탕으로 다양한 평가 지표를 계산한다. 혼동 행렬(Confusion Matrix)도 함께 출력하여, 모델이 어떤 종류의 오차를 범하는지 파악할 수 있다.
📊 정밀도(Precision), 재현율(Recall), F1 점수(F1 Score)의 이해
정확도가 높은 모델이 반드시 좋은 모델은 아니다. 특히 클래스 불균형 문제에서 모델이 소수 클래스의 예측에 실패할 수 있다.
정밀도 (Precision):
- 양성으로 예측한 것 중 실제로 양성인 샘플의 비율.
- 높은 정밀도는 모델이 잘못된 양성(False Positive)을 줄였음을 의미한다.
재현율 (Recall):
- 실제 양성 중 모델이 양성으로 올바르게 예측한 비율.
- 높은 재현율은 모델이 놓친 양성(False Negative)이 적음을 의미한다.
F1 점수 (F1 Score):
- 정밀도와 재현율의 조화 평균으로, 두 지표 간의 균형을 평가한다.
- F1 점수는 특히 정밀도와 재현율 사이의 trade-off를 고려할 때 유용하다.
ROC AUC:
- Receiver Operating Characteristic 곡선 아래의 면적으로, 모델의 분류 임계값(threshold) 변화에 따른 성능을 평가한다.
- AUC 값이 높을수록 모델의 분류 능력이 우수함을 나타낸다.
이러한 지표들은 각각의 상황에서 중요한 역할을 하며, 단일 지표만으로 모델 성능을 평가하기보다는 여러 지표를 종합적으로 고려하는 것이 좋다.
🔍 평가 지표 선택 시 고려 사항
모델 평가에 사용되는 지표는 문제의 특성, 데이터의 분포, 그리고 비즈니스 목표에 따라 달라진다.
- 클래스 불균형 문제:
- 정확도만으로는 모델의 성능을 제대로 평가할 수 없으므로, 정밀도, 재현율, F1 점수 등을 함께 고려해야 한다.
- 비용 민감도:
- 잘못 분류한 경우의 비용이 다를 때, 정밀도와 재현율 중 어느 쪽을 더 중시할 것인지 결정해야 한다.
- 모델 튜닝:
- 하이퍼파라미터 조정을 통해 여러 평가 지표에서 균형 잡힌 성능을 내도록 모델을 최적화해야 한다.
실제 프로젝트에서는 교차 검증과 같은 기법을 통해 다양한 지표에 대한 평균 성능을 측정하고, 최적의 모델을 선택하는 것이 중요하다.
🧪 초보자를 위한 실습 및 이해 포인트
초보자가 분류 모델의 평가 지표를 이해하기 위해 다음의 실습 포인트를 추천한다.
- 데이터셋 준비 및 분할:
- 임의 데이터셋이나 공개 데이터셋(예: Iris, MNIST)을 사용해 학습과 테스트 데이터를 준비한다.
- 기본 모델 학습:
- 로지스틱 회귀, SVM, 또는 결정 트리 등 다양한 분류 모델을 학습시켜본다.
- 평가 지표 계산 및 비교:
- accuracy, precision, recall, F1 score, ROC AUC 등 다양한 지표를 계산하고, 모델별로 비교해본다.
- 혼동 행렬 분석:
- 혼동 행렬을 활용해 모델이 어떤 종류의 오류를 범하는지 분석하고, 개선점을 도출해본다.
- 하이퍼파라미터 튜닝:
- 정규화 강도나 분류 임계값 등을 조절하며 평가 지표가 어떻게 변화하는지 실험해본다.
이러한 과정을 통해 단순히 정확도만으로 평가할 때 놓칠 수 있는 모델의 세부 성능을 명확하게 파악할 수 있으며, 실제 상황에서 더 나은 모델 선택에 도움을 받을 수 있다.
📚 주요 용어 정리
이번 블로그에서 다룬 주요 용어들을 간단히 정리하면 다음과 같다.
- 손실 함수 (Loss Function): 모델의 예측과 실제 값 간의 차이를 측정하는 함수로, 모델 학습에 활용된다.
- 정확도 (Accuracy): 전체 샘플 중 올바르게 예측한 샘플의 비율.
- 정밀도 (Precision): 모델이 양성으로 예측한 샘플 중 실제 양성의 비율.
- 재현율 (Recall): 실제 양성 샘플 중 모델이 올바르게 예측한 비율.
- F1 점수 (F1 Score): 정밀도와 재현율의 조화 평균으로, 두 지표 간의 균형을 나타낸다.
- ROC AUC: 모델의 분류 임계값 변화에 따른 성능을 평가하는 지표로, ROC 곡선 아래 면적을 의미한다.
- 혼동 행렬 (Confusion Matrix): 모델 예측 결과의 세부 오차를 나타내는 표로, True Positive, False Positive, True Negative, False Negative를 포함한다.
🧪 실제 프로젝트에서의 평가 지표 활용 방안
실제 머신러닝 프로젝트에서는 단순히 하나의 지표만으로 모델을 평가하지 않고, 여러 지표를 종합적으로 고려한다.
예를 들어, 의료 진단, 금융 사기 탐지, 스팸 메일 분류 등에서 클래스 불균형 문제가 발생할 수 있는데, 이때는 정밀도, 재현율, F1 점수 등을 함께 고려해야 한다. 교차 검증(Cross-Validation)을 통해 다양한 지표에 대한 평균 성능을 평가하고, 모델 튜닝과 하이퍼파라미터 최적화를 병행하면, 실제 서비스 환경에서 신뢰할 수 있는 예측 결과를 얻을 수 있다.
🔍 마무리 및 요약
평가 지표는 머신러닝 분류 모델의 성능을 객관적으로 평가하고 개선하는 데 핵심적인 역할을 한다. 정확도 외에도 정밀도, 재현율, F1 점수, ROC AUC 등 다양한 지표를 통해 모델의 강점과 약점을 파악할 수 있다. 본 글에서는 분류 과제에서 사용되는 주요 평가 지표들을 소개하고, 파이썬 코드 예제를 통해 실제로 지표를 계산하고 분석하는 방법을 살펴보았다. 초보자는 이를 통해 단순한 정확도만으로는 파악하기 어려운 모델의 세부 성능을 이해하고, 실제 데이터 분석 및 모델링 작업에서 최적의 평가 지표를 선택하는 방법을 익힐 수 있을 것이다.
#평가지표 #정밀도재현율 #모델성능 #머신러닝기초
'머신러닝' 카테고리의 다른 글
머신러닝 기초 – 정밀도(Precision), 재현율(Recall), F1-Score (0) | 2025.02.25 |
---|---|
인공지능과 생명공학의 융합 (1) | 2025.02.23 |
머신러닝 기초 - 분류 과제에서의 손실 함수 (0) | 2025.02.21 |
머신러닝 기초 - 회귀 과제에서의 손실 함수 (0) | 2025.02.21 |
머신러닝 기초 - 엘라스틱 넷 회귀 (Elastic Net Regression) (0) | 2025.02.21 |