기계 학습에서 혼동 행렬이란 무엇입니까?
혼동 행렬은 기계 학습 지도 알고리즘의 분류 성능을 측정하는 데 사용되는 중요한 도구입니다.
혼동 행렬이란 무엇인가?
사람들은 사물을 각자 다른 방식으로 인지합니다. 심지어 참과 거짓을 판단하는 데 있어서도 개인차가 있습니다. 예를 들어, 제 눈에는 10cm 길이의 선이 다른 사람에게는 9cm로 보일 수 있습니다. 여기서 중요한 것은 실제 값은 9cm, 10cm, 혹은 다른 어떤 값일 수도 있다는 점입니다. 우리가 예측하는 값은 바로 이러한 추정치입니다!
인간의 뇌가 정보를 처리하는 방식
인간의 뇌가 특정 논리를 사용하여 예측을 하는 것처럼, 기계도 다양한 알고리즘(기계 학습 알고리즘)을 사용하여 질문에 대한 예측값을 얻습니다. 이러한 예측값은 실제 값과 일치할 수도 있고 그렇지 않을 수도 있습니다.
치열한 경쟁 환경에서, 우리는 우리의 예측이 얼마나 정확한지, 즉 성과를 파악하고 싶어합니다. 마찬가지로, 기계 학습 알고리즘이 얼마나 많은 예측을 올바르게 수행했는지에 따라 그 성능을 평가할 수 있습니다.
그렇다면 기계 학습 알고리즘이란 무엇일까요?
기계는 특정 논리 또는 명령 집합, 즉 기계 학습 알고리즘을 사용하여 문제에 대한 답을 찾습니다. 기계 학습 알고리즘은 지도 학습, 비지도 학습, 강화 학습의 세 가지 주요 유형으로 나눌 수 있습니다.

가장 단순한 형태의 지도 학습 알고리즘은 이미 답을 알고 있는 데이터로 기계를 훈련시켜 그 답을 도출하도록 학습시킵니다. 이러한 알고리즘의 특징을 좀 더 자세히 살펴보겠습니다.
지도 학습 알고리즘은 분류와 회귀, 크게 두 가지 유형으로 나눌 수 있습니다.
분류 알고리즘은 특정 기준에 따라 데이터를 분류하거나 정렬합니다. 예를 들어, 피자를 좋아하는 고객과 그렇지 않은 고객을 구분하기 위해 의사결정 트리, 랜덤 포레스트, 나이브 베이즈, 또는 SVM(Support Vector Machine)과 같은 알고리즘을 사용할 수 있습니다.
그렇다면 어떤 알고리즘이 가장 효과적일까요? 왜 다른 알고리즘 대신 특정 알고리즘을 선택해야 할까요?
여기서 혼동 행렬이 등장합니다...
혼동 행렬은 데이터 세트를 분류할 때 분류 알고리즘의 정확도를 평가하는 데 사용되는 표입니다. 이름이 다소 혼란스러울 수 있지만, 예측 오류가 많다면 알고리즘이 실제로 혼란스러워 한다는 것을 의미할 수 있습니다!
즉, 혼동 행렬은 분류 알고리즘의 성능을 평가하는 방법입니다.
어떻게 평가할까요?
앞서 언급한 예시처럼, 사람들을 피자를 좋아하는 그룹과 그렇지 않은 그룹으로 분류하는 이진 분류 문제에 다양한 알고리즘을 적용했다고 가정해 봅시다. 정답에 가장 가까운 결과를 보여주는 알고리즘을 평가하기 위해 혼동 행렬을 사용합니다. 이진 분류 문제(예/아니오, 참/거짓, 1/0)의 경우 혼동 행렬은 다음과 같은 네 가지 값을 제공합니다.
- 진양성 (True Positive, TP)
- 진음성 (True Negative, TN)
- 가양성 (False Positive, FP)
- 가음성 (False Negative, FN)
혼동 행렬의 네 가지 값은 무엇인가?
혼동 행렬을 통해 얻는 네 가지 값은 행렬의 격자를 이룹니다.

진양성(TP)과 진음성(TN)은 분류 알고리즘이 올바르게 예측한 값입니다.
- TP는 피자를 좋아하는 사람들을 나타내며, 모델이 이들을 정확하게 분류했음을 의미합니다.
- TN은 피자를 좋아하지 않는 사람들을 나타내며, 모델이 이들을 올바르게 분류했음을 의미합니다.
가양성(FP)과 가음성(FN)은 분류기가 잘못 예측한 값입니다.
- FP는 피자를 좋아하지 않는 사람(음성)을 나타내지만, 분류기는 이들을 피자를 좋아한다고 예측했습니다 (잘못된 긍정). FP는 제1종 오류라고도 합니다.
- FN은 피자를 좋아하는 사람(양성)을 나타내지만, 분류기는 이들을 피자를 좋아하지 않는다고 예측했습니다 (잘못된 부정). FN은 제2종 오류라고도 합니다.
더 나은 이해를 위해 실제 사례를 살펴보겠습니다.
400명이 코로나19 검사를 받은 데이터 세트가 있다고 가정해 봅시다. 이제 다양한 알고리즘을 사용하여 코로나19 양성 및 음성 환자의 수를 결정한 결과를 얻었습니다.
다음은 비교를 위해 두 가지 혼동 행렬을 보여줍니다.
두 행렬을 비교해 보면 첫 번째 알고리즘이 더 정확해 보입니다. 하지만 정확한 결과를 얻기 위해서는 정확도, 정밀도, 그리고 어떤 알고리즘이 더 나은지 증명할 수 있는 다양한 지표를 측정해야 합니다.
혼동 행렬을 사용한 지표 및 그 중요성
분류기가 올바른 예측을 했는지 여부를 판단하는 데 도움이 되는 주요 지표는 다음과 같습니다.
#1. 재현율/민감도
재현율, 민감도, 또는 TPR(진양성률), 또는 탐지 확률은 전체 양성 결과(TP와 FN) 중에서 정확하게 예측된 양성 결과(TP)의 비율입니다.
R = TP/(TP + FN)
재현율은 실제 양성 결과 중 올바르게 예측된 양성 결과의 비율을 나타냅니다. 재현율이 높을수록 가음성이 적으므로 알고리즘이 우수하다고 할 수 있습니다. 가음성이 중요한 상황에서 재현율을 사용해야 합니다. 예를 들어, 심각한 심장 질환이 있는 사람이 모델에서 정상으로 판정되면 매우 위험할 수 있습니다.
#2. 정밀도
정밀도는 예측된 모든 양성 결과 중 실제 양성 결과의 비율을 나타냅니다. 즉, 가양성을 고려한 값입니다.
Pr = TP/(TP + FP)
가양성이 매우 중요하여 무시할 수 없는 경우 정밀도가 중요합니다. 예를 들어, 당뇨병이 없는 사람이 모델에서 당뇨병으로 판정되어 의사가 특정 약을 처방하는 경우, 심각한 부작용을 초래할 수 있습니다.
#3. 특이도
특이도 또는 TNR(진음성률)은 전체 음성 결과 중 정확하게 예측된 음성 결과의 비율을 나타냅니다.
S = TN/(TN + FP)
분류기가 음성 값을 얼마나 잘 식별하는지를 측정합니다.
#4. 정확도
정확도는 전체 예측 결과 중 올바르게 예측된 결과의 비율입니다. 예를 들어, 50개의 샘플 중에서 20개의 양성 값과 10개의 음성 값을 정확하게 예측했다면, 모델의 정확도는 30/50입니다.
정확도 A = (TP + TN)/(TP + TN + FP + FN)
#5. 유병률
유병률은 전체 결과 중 양성 결과의 비율을 측정합니다.
P = (TP + FN)/(TP + TN + FP + FN)
#6. F 점수
때로는 정밀도와 재현율만으로 두 개의 분류기(모델)를 비교하기 어려울 수 있습니다. 이때는 조화 평균인 F 점수 또는 F1 점수를 사용할 수 있습니다. F 점수는 매우 높은 값에 크게 영향을 받지 않기 때문에 더욱 정확한 지표입니다. F 점수가 높을수록 (최댓값은 1) 모델의 성능이 더 좋다는 것을 의미합니다.
F 점수 = 2 * 정밀도 * 재현율 / (정밀도 + 재현율)
가양성과 가음성 모두 중요한 경우, F1 점수는 좋은 지표가 됩니다. 예를 들어, 코로나19 양성이 아닌 사람(그러나 알고리즘에서 양성으로 판정)은 불필요하게 격리될 필요가 없습니다. 마찬가지로 코로나19 양성인 사람(그러나 알고리즘에서 음성으로 판정)은 격리되어야 합니다.
#7. ROC 곡선
정확도 및 정밀도와 같은 지표는 데이터가 균형을 이루고 있을 때 효과적입니다. 하지만 데이터 세트가 불균형한 경우, 높은 정확도가 반드시 분류기가 효율적임을 의미하지는 않습니다. 예를 들어, 100명의 학생 중 90명이 스페인어를 구사하는 경우, 알고리즘에서 100명 모두 스페인어를 구사한다고 예측해도 정확도는 90%에 달할 수 있지만, 모델의 성능을 제대로 반영하지 못할 수 있습니다. 데이터 세트가 불균형한 경우에는 ROC와 같은 지표가 더 효과적인 판단 기준이 됩니다.

ROC(Receiver Operating Characteristic) 곡선은 다양한 임계값에서 이진 분류 모델의 성능을 시각적으로 보여줍니다. 이는 다양한 임계값에서 (1-특이도)로 계산되는 위양성률(FPR)에 대한 진양성률(TPR)의 플롯입니다. 그래프에서 45도 선(좌측 상단)에 가장 가까운 값이 가장 정확한 임계값을 나타냅니다. 임계값이 너무 높으면 가양성은 줄지만 가음성이 증가하고, 그 반대의 경우도 마찬가지입니다.
일반적으로 다양한 모델의 ROC 곡선을 그렸을 때, 곡선 아래 면적(AUC)이 가장 큰 모델이 더 좋은 모델로 간주됩니다.
분류기 I과 분류기 II의 혼동 행렬에 대한 모든 지표 값을 계산해 보겠습니다.

정확도는 분류기 II에서 더 높지만, 정밀도는 분류기 I에서 약간 더 높다는 것을 알 수 있습니다. 주어진 문제에 따라 의사 결정자는 분류기 I 또는 II를 선택할 수 있습니다.
N x N 혼동 행렬
지금까지 이진 분류기의 혼동 행렬에 대해 살펴보았습니다. 그렇다면 '예/아니오' 또는 '좋아요/싫어요'와 같이 두 가지 이상의 범주가 있다면 어떻게 될까요? 예를 들어, 알고리즘이 빨간색, 녹색, 파란색 이미지를 분류해야 하는 경우를 생각해 봅시다. 이러한 유형의 분류를 다중 클래스 분류라고 합니다. 출력 변수의 수는 행렬의 크기를 결정합니다. 따라서 이 경우 혼동 행렬은 3x3 크기가 됩니다.

요약
혼동 행렬은 분류 알고리즘의 성능에 대한 자세한 정보를 제공하므로 매우 효과적인 평가 시스템입니다. 이진 및 다중 클래스 분류기 모두에서 잘 작동하며, 두 개 이상의 매개변수를 처리해야 하는 경우에도 유용합니다. 혼동 행렬은 시각화하기 쉬우며, F 점수, 정밀도, ROC, 정확도와 같은 다른 성능 지표를 생성하는 데에도 사용될 수 있습니다.
회귀 문제에서 머신 러닝 알고리즘을 선택하는 방법도 함께 살펴보면 좋을 것입니다.