더북(TheBook)

2.9.1 테스트 정확도

모델 성능은 evaluate() 함수로 평가한다. 훈련 데이터셋과 테스트 데이터셋을 모두 사용해 보자.

scores = model.evaluate(X_train, y_train)
print("Training Accuracy: %.2f%%\n" % (scores[1]*100))

scores = model.evaluate(X_test, y_test)
print("Testing Accuracy: %.2f%%\n" % (scores[1]*100))

▲ 그림 2-17 테스트 정확도 결과

훈련 데이터셋 정확도는 91.85%, 테스트 데이터셋 정확도는 78.57%로 나왔다. 두 정확도 간 차이가 상당히 크지만, 훈련 데이터셋으로 모델을 훈련시켰으므로 당연한 결과다. 반복 횟수를 늘려 모델을 훈련시키면 훈련 데이터셋 정확도를 100%로 만들 수도 있지만, 모델이 과적합하는 문제가 있어 바람직하지 않다. 반면 테스트 데이터셋은 모델이 아직 접하지 못한 실세계 데이터를 의미하므로 모델의 최종 성능을 평가하는 데 사용해야 한다.

다중 레이어 퍼셉트론에 은닉 레이어를 두 개만 사용했는데도 테스트 정확도가 78.57%면 꽤 괜찮은 편이다. 이제 새로운 환자가 와도 여덟 가지 측정 항목(혈당, 혈압, 인슐린 등)만 있으면, 이 환자가 향후 5년 내에 당뇨가 발병할지 여부를 최대 80% 정확도로 예측할 수 있다. 우리는 방금 첫 인공 지능을 만든 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.