그림 3-9의 아래 부분은 다중 분류 모델의 동작을 상세하게 나타내는 오차 행렬입니다. 오차 행렬은 다중 분류 모델의 결과를 실제 클래스와 모델의 예측 클래스에 따라 세분화합니다. 이 정사각형의 크기는 [numClasses, numClasses]입니다. 인덱스 [i, j]에 있는(행 i와 열 j에 있는) 원소는 클래스 i에 속한 샘플을 모델이 클래스 j로 예측한 개수입니다. 따라서 오차 행렬의 대각선 원소가 올바르게 분류된 샘플에 해당합니다. 완벽한 다중 분류기는 대각선 밖의 원소가 모두 0인 오차 행렬을 만듭니다. 그림 3-9에 있는 오차 행렬이 바로 이런 경우입니다.
마지막에 오차 행렬을 그리는 것 외에도 이 붓꽃 예제는 onTrainEnd()를 사용해 훈련 에포크가 끝날 때마다 오차 행렬을 그립니다. 초기 에포크에서는 그림 3-9에 있는 것보다 완벽하지 않은 오차 행렬을 볼 수 있습니다. 그림 3-10에 있는 오차 행렬은 24개 입력 샘플 중에 여덟 개가 잘못 분류되어 66.7%의 정확도를 냅니다. 하지만 이 오차 행렬은 정확도 하나보다 더 많은 것을 말해 주고 있습니다. 어떤 클래스에서 많은 실수가 발생하고 어떤 클래스에서 오류가 적은지 알 수 있습니다. 이 경우에는 두 번째 클래스 샘플 중 다섯 개가 (세 번째 클래스로) 잘못 분류되지만, 첫 번째와 세 번째 클래스의 꽃은 항상 정확하게 분류됩니다. 따라서 다중 분류에서 오차 행렬은 단순한 정확도보다 훨씬 풍부한 정보를 제공합니다. 마치 정밀도와 재현율을 합치면 이진 분류에서 정확도보다 포괄적인 정보를 제공하는 것과 비슷합니다. 오차 행렬은 모델과 훈련 과정에 관련된 의사 결정에 도움이 되는 정보를 제공할 수 있습니다. 예를 들어 어떤 종류의 실수는 다른 클래스를 혼동하는 것보다 훨씬 비용이 높을 수 있습니다. 스포츠 사이트를 게임 사이트로 착각하는 것은 피싱 사이트로 혼동하는 것보다 덜 문제가 됩니다. 이런 경우에 모델의 하이퍼파라미터를 조정하여 가장 큰 비용이 발생하는 오류를 최소화할 수 있습니다.