yuns
4. 머신러닝 모델 개발 과정 - 성능평가 및 하이퍼파라미터 튜닝 본문
머신러닝 모델의 성능 평가 및 하이퍼파라미터 튜닝 완벽 가이드
머신러닝 모델을 개발할 때 가장 중요한 과정 중 하나가 모델의 성능을 평가하고 최적화하는 것입니다. 모델의 성능을 정확하게 측정해야 개선할 방향을 찾을 수 있으며, 적절한 하이퍼파라미터 튜닝(Hyperparameter Tuning)을 통해 최상의 성능을 얻을 수 있습니다.
이번 글에서는 머신러닝 모델의 성능 평가 방법과 하이퍼파라미터 튜닝 전략에 대해 자세히 알아보겠습니다. 🚀
1. 머신러닝 모델 성능 평가 방법
모델의 성능을 평가하는 방법은 문제의 유형에 따라 다릅니다. 주요 평가 지표를 살펴보겠습니다.
🔹 1.1 분류(Classification) 모델 성능 평가 지표
분류 문제에서는 정확도(Accuracy)뿐만 아니라, 모델의 예측 오류를 더 세부적으로 분석할 수 있는 다양한 지표를 활용해야 합니다.
✅ 정확도(Accuracy)
- 전체 데이터 중에서 올바르게 예측한 비율
정확도 = (TP + TN) / (TP + TN + FP + FN)
- 하지만 불균형 데이터(Imbalanced Data)에서는 신뢰할 수 없는 지표가 될 수 있음
✅ 정밀도(Precision) & 재현율(Recall)
- 정밀도(Precision):
TP / (TP + FP)
, 모델이 긍정 클래스로 예측한 것 중 실제로 맞은 비율 - 재현율(Recall):
TP / (TP + FN)
, 실제 긍정 클래스 중에서 모델이 올바르게 예측한 비율 - 정밀도와 재현율은 트레이드오프(trade-off) 관계
✅ F1-score
- 정밀도와 재현율의 조화 평균
F1 = 2 * (Precision * Recall) / (Precision + Recall)
- 불균형 데이터셋에서 유용한 평가 지표
✅ ROC-AUC (Receiver Operating Characteristic - Area Under Curve)
- 모델의 이진 분류 성능을 평가하는 지표
- AUC 값이 1에 가까울수록 좋은 모델
📌 Python 코드 예제 (분류 모델 평가)
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score
y_true = [0, 1, 1, 0, 1, 0, 1, 1]
y_pred = [0, 1, 0, 0, 1, 1, 1, 1]
print("Accuracy:", accuracy_score(y_true, y_pred))
print("Precision:", precision_score(y_true, y_pred))
print("Recall:", recall_score(y_true, y_pred))
print("F1-score:", f1_score(y_true, y_pred))
print("ROC-AUC:", roc_auc_score(y_true, y_pred))
결과
Accuracy: 0.75
Precision: 0.8
Recall: 0.8
F1-score: 0.8000000000000002
ROC-AUC: 0.7333333333333334
🔹 1.2 회귀(Regression) 모델 성능 평가 지표
회귀 모델에서는 예측 값과 실제 값의 차이를 측정하는 다양한 지표를 활용합니다.
✅ MSE (Mean Squared Error)
(실제값 - 예측값)^2
의 평균- 값이 작을수록 좋지만, 큰 오류에 민감
✅ RMSE (Root Mean Squared Error)
MSE
의 제곱근을 취한 값- 오류의 크기를 직관적으로 이해하는 데 유용
✅ MAE (Mean Absolute Error)
- 절대값을 사용하여 오차를 측정하는 방식
- 이상치(Outlier)에 덜 민감
✅ R² (결정 계수, Coefficient of Determination)
- 모델이 데이터를 얼마나 잘 설명하는지를 나타냄 (1에 가까울수록 좋음)
📌 Python 코드 예제 (회귀 모델 평가)
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
y_true = [3.0, -0.5, 2.0, 7.0]
y_pred = [2.5, 0.0, 2.0, 8.0]
print("MSE:", mean_squared_error(y_true, y_pred))
print("RMSE:", mean_squared_error(y_true, y_pred, squared=False))
print("MAE:", mean_absolute_error(y_true, y_pred))
print("R² Score:", r2_score(y_true, y_pred))
결과
MSE: 0.375
RMSE: 0.6123724356957945
MAE: 0.5
R² Score: 0.9486081370449679
2. 하이퍼파라미터 튜닝(Hyperparameter Tuning)
머신러닝 모델의 성능을 높이기 위해서는 적절한 하이퍼파라미터 설정이 필요합니다. 하이퍼파라미터는 모델 학습 전에 설정하는 값으로, 모델이 자동으로 학습하지 않는 변수입니다.
🔹 2.1 하이퍼파라미터 튜닝 방법
✅ 그리드 서치(Grid Search)
- 미리 정해둔 하이퍼파라미터 값들의 조합을 모두 테스트하여 최적의 값을 찾는 방식
- 계산 비용이 높지만, 최적의 조합을 찾는 데 유리
📌 Python 코드 예제 (Grid Search 적용)
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
param_grid = {
'n_estimators': [100, 200],
'max_depth': [10, 20],
'min_samples_split': [2, 5]
}
model = RandomForestClassifier()
grid_search = GridSearchCV(model, param_grid, cv=3, scoring='accuracy')
grid_search.fit(X_train, y_train)
print("Best Parameters:", grid_search.best_params_)
결과
Best Parameters: {'max_depth': 10, 'min_samples_split': 5, 'n_estimators': 200}
✅ 랜덤 서치(Random Search)
- 하이퍼파라미터 조합을 무작위로 샘플링하여 최적의 조합을 찾음
- 연산 비용이 낮고, 큰 하이퍼파라미터 공간에서도 효과적
📌 Python 코드 예제 (Random Search 적용)
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
param_dist = {
'n_estimators': randint(50, 300),
'max_depth': randint(5, 50)
}
random_search = RandomizedSearchCV(model, param_dist, n_iter=10, cv=3, scoring='accuracy')
random_search.fit(X_train, y_train)
print("Best Parameters:", random_search.best_params_)
Best Parameters: {'max_depth': 10, 'min_samples_split': 5, 'n_estimators': 200}
✅ 베이지안 최적화(Bayesian Optimization)
- 이전 탐색 결과를 기반으로 하이퍼파라미터를 조정하는 기법
- optuna 라이브러리 등으로 구현 가능
3. 결론
머신러닝 모델을 최적화하기 위해서는 정확한 성능 평가와 효율적인 하이퍼파라미터 튜닝이 필수입니다.
- 모델 평가: 분류/회귀 모델에 따라 적절한 평가 지표를 선택
- 하이퍼파라미터 튜닝: Grid Search, Random Search, Bayesian Optimization 등을 활용하여 최적의 조합 찾기
위 방법을 활용하면 더 높은 성능의 모델을 만들 수 있습니다! 🚀
'머신러닝' 카테고리의 다른 글
Mahalanobis 거리 구하기(직접 구현/scipy모듈 활용) (0) | 2025.04.06 |
---|---|
4. 머신러닝 모델 개발 과정 - 모델 선택 및 학습 (0) | 2025.03.16 |
4. 머신러닝 모델 개발 과정 - Feature Selection (0) | 2025.03.16 |
4. 머신러닝 모델 개발 과정 - 데이터 수집 및 전처리 (0) | 2025.03.15 |
3. 머신러닝의 주요 알고리즘 - k-최근접 이웃(KNN) (0) | 2025.03.15 |