데이터로 보는 세상에서는 머신러닝 모델의 성능을 평가하는 다양한 지표에 대해 다룰 것입니다. 특히 정확도(Accuracy)와 F1 점수(F1 Score)에 대한 이해는 모델 선택에 있어 매우 중요합니다. 이 두 지표는 모델의 성능을 평가하는 데 널리 사용되지만, 각각의 장단점과 적합한 사용 상황이 다릅니다.
정확도(Accuracy)
정확도는 모델이 얼마나 정확하게 예측했는지를 나타내는 비율입니다. 이는 전체 데이터에서 올바르게 분류된 샘플의 비율로 계산됩니다. 다음은 정확도의 계산식입니다.
\[ Accuracy = \frac{TP + TN}{TP + TN + FP + FN} \]
여기서 TP는 True Positive, TN은 True Negative, FP는 False Positive, FN은 False Negative를 의미합니다.
정확도는 간단하고 직관적인 성능 지표이지만, 데이터의 불균형이 심한 경우에는 오해를 불러일으킬 수 있습니다. 예를 들어, 클래스 A가 95%, 클래스 B가 5%인 데이터셋에서 모든 샘플을 클래스 A로 예측하면 정확도는 95%가 되지만, 클래스 B는 아예 예측하지 못하는 문제가 발생합니다.
F1 점수
F1 점수는 정밀도(Precision)와 재현율(Recall)의 조화 평균으로, 두 지표의 균형을 고려하여 성능을 평가합니다. F1 점수는 불균형 데이터셋에서 보다 신뢰할 수 있는 성과 지표입니다. F1 점수의 계산식은 다음과 같습니다.
\[ F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} \]
여기서 Precision은 다음과 같이 정의됩니다.
\[ Precision = \frac{TP}{TP + FP} \]
Recall은 다음과 같습니다.
\[ Recall = \frac{TP}{TP + FN} \]
F1 점수는 0과 1 사이의 값을 가지며, 1에 가까울수록 더 좋은 성능을 나타냅니다. 특히, 데이터의 클래스 분포가 불균형할 때 유용한 평가 지표로 사용됩니다.
어떤 상황에 무엇을 사용할까?
- 정확도가 필요한 경우: 데이터셋이 균형 잡혀 있고, 모든 클래스의 예측이 동일한 중요성을 가질 때 유용합니다. 예를 들어, 스팸 이메일 분류와 같은 상황에서는 정확도가 중요한 역할을 할 수 있습니다.
- F1 점수가 필요한 경우: 클래스 간의 불균형이 큰 경우, 특히 클래스 B가 더 중요할 때 F1 점수를 사용하는 것이 좋습니다. 예를 들어, 질병 진단과 같은 상황에서는 질병에 감염된 환자를 놓치는 것이 치명적일 수 있으므로 Recall이 중요하고, 이를 고려한 F1 점수가 필요합니다.
코드 예제
아래는 Python의 scikit-learn 라이브러리를 사용하여 정확도와 F1 점수를 계산하는 간단한 예제입니다.
from sklearn.metrics import accuracy_score, f1_score
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, weights=[0.95, 0.05], random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 모델 훈련
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
# 예측 수행
y_pred = model.predict(X_test)
# 성능 평가
accuracy = accuracy_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
print(f"정확도: {accuracy:.2f}")
print(f"F1 점수: {f1:.2f}")
위의 코드를 실행하면, 모델의 정확도와 F1 점수를 확인할 수 있습니다. 데이터의 불균형을 고려하여 F1 점수가 낮게 나올 경우, 모델 개선 방향을 고민해야 할 것입니다.
마무리
정확도와 F1 점수는 각각의 특성과 사용 상황이 다르므로, 데이터셋의 특성과 문제의 중요성을 고려하여 적절한 성능 평가 지표를 선택하는 것이 중요합니다. 불균형 데이터셋에서는 F1 점수를, 균형 잡힌 데이터셋에서는 정확도를 선호하는 것이 일반적입니다. 머신러닝 모델의 성능을 평가할 때, 이 두 지표를 잘 활용하여 보다 신뢰할 수 있는 결과를 도출해 보시기 바랍니다.