본문 바로가기

ML & AI Theory

머신러닝 모델의 예측 평가에 대해 #1 - Intro & 정확도 (Accuracy)

반응형

ML의 모델 평가 Intro

 

머신러닝 모델은 여러 가지 방법으로 예측 성능을 평가할 수 있습니다. 성능 평가 지표값과 예측값의 오차 평균값에 기반합니다. 성능 평가 지표는 일반적으로 모델이 분류 혹은 회귀에 따라 여러 종류로 나뉩니다. 

 

회귀의 경우 대부분 실제값과 예측값의 오차 평균값에 기반합니다. 예를 들어 오차에 절댓값을 씌운 뒤 평균 오차를 구하거나 오차의 제곱 값에 루트를 씌운 평균 오차를 구하는 방법과 같이 기본적으로 예측 오차를 가지고 정규화 수준을 재가공하는 방법이 회귀의 성능 평가 지표 유형입니다.

 

분류의 평가방법도 일반적으로는 실제결과가 데이터와 예측 결과 데이터가 얼마나 정확하고 오류가 적게 발생하는가에 기반하지만, 단순히 이러한 정확도만 가지고 판단했다가는 잘못된 평가 결과에 빠질 수 있습니다. 

 

분류는 결정 클래스 값 종류의 유형에 따라 긍정/부정과 같은 2개의 결괏값만을 가지는 이진 분류와 여러 개의 결정 클래스 값을 가지는 멀티 분류로 나뉠 수 있습니다. 아래 평가지표는 이진 분류에서 강조되는 지표입니다.

 

  • 정확도(Accuracy)
  • 오차행렬(Confusion Matrix)
  • 정밀도(Precision)
  • 재현율(Recall)
  • F1 스코어
  • ROC AUC

 


정확도 (Accuracy)

정확도는 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표입니다. 정확도는 직관적으로 모델 예측 성능을 나타내는 평가 지표이지만 이진 분류의 경우 데이터의 구성에 따라 ML모델의 성능을 왜곡할 수 있기 때문에 정확도 수치 하나만 가지고 성능을 평가하지 않습니다.

 

정확도(Accuracy) = 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수

 

사이킷런에서는 accurcy_score 클래스를 이용하여 정확도를 구합니다. 하기는 GBM이용한 모델의 정확도를 구하는 예시입니다. 

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score

gb_clf = GradientBoostingClassifier(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.2, random_state=156)
gb_clf.fit(X_train, y_train)
pred = gb_clf.predict(X_test)
print(accuracy_score(y_test, pred))

 

하지만 위에서 말했듯, 정확도 평가 지표는 특히 불균형한 레이블 데이터 세트에서는 성능 수치로 사용해서는 안 됩니다. 정확도가 가지는 분류 평가 지표로서 이러한 한계점을 극복하기 위해 여러 가지 분류 지표와 함께 적용해야 합니다. 

반응형