[파이썬] 딥러닝 모델의 성능 지표와 평가 방법

딥러닝은 머신러닝 분야에서 많은 성과를 거둔 기술 중 하나입니다. 딥러닝 모델을 평가하기 위해서는 다양한 성능 지표와 평가 방법을 이해해야 합니다. 이번 포스트에서는 딥러닝 모델의 성능을 평가하는 일반적인 지표들과 간단한 예제 코드를 소개하겠습니다.

1. 정확도 (Accuracy)

가장 기본적인 성능 지표는 정확도입니다. 정확도는 모델이 정확하게 예측한 샘플의 비율을 의미합니다. 일반적으로 다음과 같은 공식으로 계산됩니다:

Accuracy = (올바르게 예측한 샘플 수) / (전체 샘플 수)

텐서플로우의 keras 라이브러리를 사용하여 신경망 모델을 생성하고, 정확도를 평가하는 간단한 예제 코드를 소개합니다:

import tensorflow as tf

# 딥러닝 모델 구성
model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

# 모델 컴파일
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 모델 학습
model.fit(x_train, y_train, epochs=10)

# 모델 평가
test_loss, test_accuracy = model.evaluate(x_test, y_test)
print('Test Accuracy:', test_accuracy)

2. 정밀도 (Precision), 재현율 (Recall), F1 점수 (F1 Score)

이진 분류 문제에서 정확도보다 더 유용한 성능 지표인 정밀도와 재현율을 이해하는 것이 중요합니다. 정밀도는 양성으로 예측한 샘플 중 실제로 양성인 샘플의 비율을 의미하며, 재현율은 실제 양성인 샘플 중 양성으로 제대로 예측한 샘플의 비율을 의미합니다. 두 지표를 조합한 F1 점수는 정밀도와 재현율의 조화 평균으로 계산됩니다.

텐서플로우의 sklearn.metrics 모듈을 사용하여 정밀도, 재현율, F1 점수를 계산하는 예제 코드를 소개합니다:

import tensorflow as tf
from sklearn.metrics import precision_score, recall_score, f1_score

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

# 정밀도 계산
precision = precision_score(y_true, y_pred)
print('Precision:', precision)

# 재현율 계산
recall = recall_score(y_true, y_pred)
print('Recall:', recall)

# F1 점수 계산
f1 = f1_score(y_true, y_pred)
print('F1 score:', f1)

3. ROC 곡선 (ROC Curve)과 AUC 점수 (AUC Score)

이진 분류 문제에서는 ROC 곡선과 AUC 점수를 사용하여 모델의 성능을 평가할 수도 있습니다. ROC 곡선은 다양한 분류 임계값에서 재현율과 1에서 특이도(TNR)의 그래프를 그립니다. AUC 점수는 ROC 곡선 밑 면적을 의미하며, 1에 가까울수록 모델의 성능이 좋다고 판단됩니다.

sklearn.metrics 모듈을 통해 ROC 곡선과 AUC 점수를 계산하는 예제 코드를 소개합니다:

import tensorflow as tf
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt

# 예측 확률
y_score = [0.1, 0.4, 0.35, 0.8, 0.6, 0.9]
y_true = [0, 0, 1, 1, 1, 1]

# ROC 곡선 계산
fpr, tpr, thresholds = roc_curve(y_true, y_score)

# ROC 곡선 시각화
plt.plot(fpr, tpr)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()

# AUC 점수 계산
auc_score = roc_auc_score(y_true, y_score)
print('AUC Score:', auc_score)

딥러닝 모델의 성능 평가에 있어서는 정확도뿐만 아니라 정밀도, 재현율, F1 점수, ROC 곡선, AUC 점수 등 다양한 지표를 함께 고려해야 합니다. 이러한 지표를 이해하고 평가 방법을 적절히 선택하는 것이 모델 개발과 성능 향상에 중요한 요소입니다.