[python] 정확도(Accuracy)

머신 러닝 모델을 평가할 때, 정확도는 가장 일반적으로 사용되는 지표 중 하나입니다. 정확도는 모델이 올바르게 예측한 샘플의 비율을 의미합니다.

정확도의 계산

정확도는 다음과 같이 계산됩니다.

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

예를 들어, 100개의 테스트 샘플이 있고 모델이 90개의 샘플을 올바르게 예측했다면, 정확도는 90%가 됩니다.

정확도의 한계

정확도는 모델의 성능을 평가하는 좋은 지표일 수 있지만, 어떤 경우에는 유용하지 않을 수도 있습니다. 예를 들어, 클래스 불균형 문제가 있는 경우에는 정확도만으로 모델의 성능을 올바르게 평가하기 어려울 수 있습니다. 클래스 불균형 문제란, 한 클래스의 샘플 수가 다른 클래스의 샘플 수보다 훨씬 많은 경우를 말합니다. 이 경우, 모델이 전체 샘플을 다 예측하지 않고, 다수의 클래스를 예측하는 경향이 있을 수 있습니다.

이런 경우에는 정확도 외에도 다른 성능 메트릭을 사용해야 합니다. 예를 들어, 정밀도(precision), 재현율(recall), F1-score 등이 있습니다. 이러한 메트릭은 클래스 불균형 문제에 더 강건하게 동작할 수 있습니다.

예제 코드

from sklearn.metrics import accuracy_score
  
# 모델 예측 결과
predictions = [1, 0, 1, 1, 0, 1, 0, 1, 1, 1]
  
# 실제 타겟 값
actual = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
  
# 정확도 계산
accuracy = accuracy_score(actual, predictions)
  
print(f"정확도: {accuracy}")

참고 자료