모델이 얼마나 정확한지에 대한 평가는 직관적으로 정확도(accuracy)를 떠올린다. 하지만 정확도만으로 모델을 평가할 경우 잘못된 해석을 할 수 있다. 따라서 다양한 평가 지표를 함께 보는 것이 중요하다.
본 장에서는 분류에 사용되는 평가 지표에 대해 중점적으로 다룰 것이다. 특히 2진 분류에서 사용되는 평가지표를 자세히 다룰 예정이다.
정확도는 실제 값과 예측 값이 얼마나 같은지를 판단하는 지표이다. 정확도는 아래와 같이 구한다.
python에서는 아래와 같이 구한다. 특정 모델에 대한 설명이 아니므로 한 모델로 특정짓지 않기 위해 Model()로 표기했다. 정확도의 판단은 y_test 값과 모델의 예측값을 비교하여 계산한다.
from sklearn.metrics import accuracy_score
# 모델 선언
model = Model()
# 모델 학습
model.fit(x_train, y_train)
# 예측값
predicted = model.predict(x_test)
# 정확도 판단
accuracy = accuracy_score(y_test, predicted)
print(accuracy)
모델의 성능을 판단하기에 가장 직관적인 지표이지만, 모델의 성능을 왜곡할 위험이 있다. 아래 예시를 보자
고객들의 이체 내용을 바탕으로 금융 사기를 판단하는 ML 모델이 있다고 가정해보자. 고객들의 대부분의 이체 내용은 정상적인 거래일 것이다.(데이터 불균형 상태 -> imbalanced data) 모델은 어떠한 학습도, 판단도 없이 모든 결과를 '정상'으로 판단한다면, 정확도는 99%에 달할 것이다. 실제로 금융 사기인 경우는 극에 달하기 때문이다.
위와 같은 경우 정확도를 정말로 믿을 수 있을까? 데이터가 불균형한 상태일 때에는 여러 방법을 적용할 수 있다. 간략히 어떤 방법이 있는지만 소개하겠다.