티스토리 뷰

반응형

 


✅ 데이터 분석 실무: 모델 성능 평가와 향상 기법 (6편)

– 더 정확하고 신뢰성 있는 예측을 위해!

모델을 만들었지만, 실제 성능이 어떨지 고민한 적 있나요?
**모델 성능 평가(Metrics)**는
모델이 얼마나 정확하게 예측하는지를 수치로 평가하여
개선 방향을 제시합니다.


🧠 1. 모델 성능 평가의 중요성

모델링 단계에서 가장 중요한 부분 중 하나가 성능 평가입니다.
모델이 잘 학습되었다고 판단하려면
다양한 평가 지표를 통해 정확도와 신뢰성을 검토해야 합니다.

✅ 성능 평가의 필요성

  • 모델 선택: 다양한 모델 중 가장 적합한 것을 찾기 위해
  • 모델 개선: 평가 지표를 바탕으로 성능 향상 방법 도출
  • 모델 비교: 여러 모델의 성능을 객관적으로 비교

📊 2. 주요 성능 평가 지표

✅ 분류(Classification) 모델 평가

지표 설명 코드

정확도 (Accuracy) 올바르게 예측한 비율 accuracy_score()
정밀도 (Precision) 양성 예측 중 실제 양성 비율 precision_score()
재현율 (Recall) 실제 양성 중 예측한 비율 recall_score()
F1 스코어 정밀도와 재현율의 조화 평균 f1_score()
ROC AUC 분류 임계값에 따라 변화하는 곡선 roc_auc_score()

💡 Python 실습: 분류 모델 성능 평가

반응형
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix

# 예측 결과
y_true = [0, 1, 0, 1, 1, 0]
y_pred = [0, 1, 0, 0, 1, 1]

# 정확도
accuracy = accuracy_score(y_true, y_pred)
print(f"정확도: {accuracy:.2f}")

# 정밀도
precision = precision_score(y_true, y_pred)
print(f"정밀도: {precision:.2f}")

# 재현율
recall = recall_score(y_true, y_pred)
print(f"재현율: {recall:.2f}")

# F1 스코어
f1 = f1_score(y_true, y_pred)
print(f"F1 스코어: {f1:.2f}")

✅ 회귀(Regression) 모델 평가

지표 설명 코드

MSE (평균 제곱 오차) 오차 제곱의 평균 mean_squared_error()
RMSE (평균 제곱근 오차) MSE의 제곱근 np.sqrt(MSE)
MAE (평균 절대 오차) 절대 오차의 평균 mean_absolute_error()
R² (결정 계수) 모델의 설명력 r2_score()

💡 Python 실습: 회귀 모델 성능 평가

from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import numpy as np

# 실제값과 예측값
y_true = [100, 150, 200, 250]
y_pred = [110, 140, 210, 240]

# MSE와 RMSE
mse = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse)
print(f"MSE: {mse:.2f}, RMSE: {rmse:.2f}")

# MAE
mae = mean_absolute_error(y_true, y_pred)
print(f"MAE: {mae:.2f}")

# R²
r2 = r2_score(y_true, y_pred)
print(f"R²: {r2:.2f}")

🧪 3. 모델 성능 향상 기법

✅ 1) 하이퍼파라미터 튜닝

  • 그리드 탐색 (Grid Search): 모든 조합을 탐색
  • 랜덤 탐색 (Random Search): 무작위로 파라미터 조합 선택

💡 GridSearchCV 예제

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

param_grid = {'n_estimators': [50, 100, 200], 'max_depth': [10, 20, 30]}
model = RandomForestClassifier()
grid_search = GridSearchCV(model, param_grid, cv=3)

grid_search.fit(X_train, y_train)
print("최적 파라미터:", grid_search.best_params_)

✅ 2) 교차 검증 (Cross Validation)

  • 데이터를 여러 부분으로 나눠 학습과 평가를 반복
  • 모델이 데이터에 과적합되지 않도록 방지

💡 교차 검증 코드

from sklearn.model_selection import cross_val_score

scores = cross_val_score(model, X, y, cv=5)
print(f"교차 검증 평균 점수: {scores.mean():.2f}")

✅ 3) 앙상블 학습 (Ensemble Learning)

  • 여러 모델의 결과를 종합하여 성능을 향상
  • 배깅(Bagging), 부스팅(Boosting) 기법 사용

💡 랜덤 포레스트 예제

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, y_train)
print("랜덤 포레스트 학습 완료")

✅ 4) 모델 스태킹 (Model Stacking)

  • 여러 모델의 예측을 메타 모델에 넣어 최종 예측
  • 서로 다른 모델의 장점을 결합하여 성능 향상

💡 모델 성능 개선 전략

  1. 데이터 확장:
    • 데이터 증강 기법 사용 (오버샘플링, 언더샘플링)
  2. 특성 엔지니어링:
    • 새로운 파생 변수 생성
  3. 특성 선택:
    • 불필요한 변수 제거로 과적합 방지
  4. 모델 앙상블:
    • 서로 다른 알고리즘 결합

✅ 마무리

이번 글에서는
✔ 모델 성능 평가 지표와 해석 방법
✔ Python을 활용한 성능 평가 실습
✔ 모델 성능 향상 기법과 실제 코드
를 다뤘습니다.

다음 편에서는
**"데이터 분석 실무: 실전 프로젝트 - 고객 이탈 예측 모델 만들기"**를 다룹니다.
앞서 배운 기법을 활용하여 고객 이탈 예측 모델을 실전 프로젝트로 구현해보겠습니다.
기대되시나요? 😊


 

데이터분석, 머신러닝모델평가, 모델성능향상, 교차검증, 하이퍼파라미터튜닝, 앙상블학습, Python성능평가, 머신러닝실습, 모델성능개선, 데이터분석실무

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함
반응형