감정Ai(16) - 핵심성과지표 분류기 이해하기(정확도, 정밀도, 재현율 차이)
이번에서 우리는 분류 모델 성능을 평가하는 방법에 대해 이해해 볼 것이고
혼동 행렬(Confusion Matrix)와 정확도(Accuracy)에 대해 배워보고
그리고 정밀도(Precision) 그리고 재현율(Recall)에 대해서도 배워볼 거예요
이것들은 다양한 KPI(Key Performance Indicator)로, 분류 모델 성능을 평가하는 데에
도움을 줍니다
그리고 이 성능을 실제로 평가해 보기 전에
여기에서 먼저 분류 모델 성능을 평가하는 방법에 대해서 예를 들어, 무엇을 원하는지에 대해
먼저 이해해 볼 거예요
자, 먼저 알아야 할 첫 번째 개념은 혼동 행렬(Confusion Matrix)이에요
여기에서 하는 것은, 분류 모델의 경우 간단하게 2가지가 있어요
모델 예측 결과가 있고 이 모델 예측 결과는 여기 행으로 넣어 줄 거예요
예를 들어 분류 모델이 하나 있고 이 분류 모델은 환자가 암을 가지고 있는지 아닌지에 대해서
분류해야 한다고 가정해 봅시다
자, 기본적으로 2개의 클래스들만 있죠 양성 클래스가 있어요
이는 환자가 암에 걸리지 않았다는 뜻이고 음성 클래스가 있고
이는 환자가 암에 걸리지 않은 즉, 기본적으로 건강하다는 걸 의미하죠
그래서 이제 해볼 것은, 모델 예측을 행에 넣어줄 거예요
그리고 여기에 True 클래스가 있죠 이것들은 실제 사실들이에요
그러니까 실제 현실에서 여기 양성 부분은
이 환자는 실제로 암에 걸린 상태라는 뜻이고
여기 음성 부분은 환자가 실제로는 건강하다는 뜻이에요 암에 걸리지 않은 것이죠
그래서 모델 예측 결과를 넣어서 True 클래스와 일치한다면 대단한 것이죠
즉, 모델이 환자가 암에 걸렸다고 예측했는데
현실에서, 실제 현실에서 환자가 실제로 암을 가지고 있는 상태인 거예요
정말 좋은 예측이죠 그래서 샘플 몇 개를 여기에 넣고 여기로 정확하게 분류했다면
이걸 'True +'라고 부를 거예요
반면에, 만약 모델이 이를 음성으로 예측했다면 즉, 모델이 해당 환자가 암을 가지고 있지 않다고
분류한 것이겠죠 그리고 실제로도 환자가 깨끗했다면, 암이 없었다면
우리는 이걸 'True -'로 부를 거예요
그리고 이런 경우들, 모델이 실제 현실과 부합한 경우들은 모델이 잘 맞추었다는 뜻이죠
이제 문제점들로 가봅시다
자, 모델이 양성으로 예측을 했다고 가정해 봅시다
이 말은 모델이 "이 환자가 암을 가지고 있다"라고 분류한 것이죠
하지만 실제로 환자는 매우 건강했어요 건강에 아무 이상이 없었죠
이런 경우들을 'False +'라고 부를 거예요 즉, 이 환자를 속여서 겁준 것이죠
환자는 상태가 좋았어요 아주 건강했고 아무 문제 없었죠
그런데 갑자기 의사가 와서 "인공지능으로 분석해 보니
안타깝게도 암에 걸리셨습니다"라고 하는 것이죠
이게 얼마나 치명적인 문제인지 상상해 보세요 그리고 이걸 'Type 1 에러'라고 부를 거예요
그리고 또 다른 문제는 모델이 음성으로 예측했지만
즉, 모델이 "환자는 매우 건강합니다. 암은 없고 아무 이상 없습니다"라고
말했지만 실제로는 환자가 암을 가지고 있었던 것이에요
실제 True 클래스에서는 양성이지만 모델에서는 분별을 못한 것이죠
환자가 건강하다고 분류한 거예요 그리고 이런 경우를 'False -'라고 부를 거예요
'Type 2 에러'라고 부를 것이죠
그래서 왜 Type 2에러로 분류할까요?
여기에서의 문제점은 구체적으로 예를 들어보자면 환자가 실제로 암을 가지고 있었던 것이에요
암이 발병한 것이죠 그리고 가능한 최대한 일찍 개입해서 고쳐야 해요
그렇죠?
만약 그러지 못한다면, 만약 우리가 "환자는 건강해요"라고 하면 이 환자는 위험해지는 것이죠
이렇게 되면 우리에게 법적 책임이 따르고 이에 대한 문제점들이 생기죠
그래서 이것을 Type 2 에러라고 부르는 거예요 여기 이 케이스 같은 경우는
에러이고 문제인 것은 맞지만 그냥 환자를 속인 것뿐이죠
그저 단순히 환자에게"당신은 암에 걸렸어요"라고 말하는 것이죠
실제로 환자는 건강하고 문제없었지만 이 경우도 에러가 맞고
우리가 Type 1 에러라고 부르고 있지만 이 Type 2 에러에 비해서 문제가 심각하지는 않아요
자, 여기로 넘어와서 정의 몇 개를 봅시다 이 혼동 행렬(Confusion Matrix)은
기본적으로 분류 모델의 성능을 설명하는 데에 사용돼요
True positives(True +)은
분류 모델(Classifier)가 병이 있다고 예측했고 정답 클래스도 True였던 경우예요
이 말은 환자가 실제로 병에 걸렸다는 뜻이겠죠
True negatives(True -)은 모델이 False라고 예측했을 때
즉, 질병이 없다고 예측했고 실제로 정답 클래스에서도 False인 경우예요
환자가 질병을 가지고 있지 않다는 뜻이죠
False positives(False +)는 Type1 에러이죠 분류 모델이 True라고 예측했지만
실제로는 False였던 거예요 False negatives(False -)는
분류 모델이 False라고, 환자는 아무 질병이 없다고 예측했지만 실제로는 질병이 있었던 경우이죠
그리고 지금부터는 KPI들을 볼 거예요
우리가 볼 첫 번째 KPI는 분류 정확도예요 여기에서 두 사례, 두 클래스들 양성 음성에 대해서
정확도가 어떻게 되는지 모델이 얼마나 맞게 예측했는지를 알아보려고 하는 거예요
이를 위해 여기에서 True Positives와 True Negatives를 더한 다음 모든 샘플의 개수로
나누어 줄 거예요
즉 (True +) 와 (True -)를 더해주고 (False -) + (False +) + (True +) + (True -) 값으로 나누어 주는 것이죠
요약하자면, 몇 번 맞추었는지를 모두 더해서 전체 샘플 개수로 나누어 주는 것이죠
다시, True Positives 더하기 True Negatives 나누기 True Positives 플러스 True Negatives 플러스
False Positives 플러스 False Negative 해주는 것이에요
두 번째는, '분류 실패율'(에러율)이라는 것인데 얼마나 못 맞췄는지에 대한 것이죠
그래서 False Positive 플러스 False Negative 나누기 모든 것들, 다시 말해, 전체 샘플 개수로
나누어 줄 거예요
여기에서는 얼마나 망쳤는지를 더하고 전체 샘플 개수로 나누어 주는 것이죠
그리고 2개의 중요한 정의들이 더 있는데 정밀도(Precision)과 재현율(Recall)이에요
그리고 미리 알려드리자면, 이 두 KPI들은 조금 헷갈릴 수도 있어요
그래서 이를 설명하는 데에 조금 시간을 더 들여 볼 거예요
정밀도(Precision)은 True Positives를 두 True 예측들의 합으로 나누어줄 거예요
즉, (True Positives) / (True Positives + False Positive)이죠
다른 방법으로 봐보면, 이 (True +)를 (True +) 플러스 (False +)로 나누어 주는 것이죠
자, 여기에서 구하려고 하는 것은 '모델이 True라고 예측했을 때 이게 얼마나 맞았는가'예요
여기서 하려는 것은 암을 투병 중인 3명의 환자가 있다고 가정해 봅시다
그리고 이 세 명 중 몇 명이 정확하게 나올지 보려고 하는 거예요
이게 정밀도(Precision)에 대한 개념이에요
이게 조금 헷갈리게 들릴 수도 있다는 것을 알아서
여기에서 더 자세한 예시들, 여러 가지 정밀도와 재현율 파라미터를 만들어내는
예시들을 가지고 여러분들에게 보여드릴 것이고 여러분들은 이해하실 수 있으실 거예요
이 예시들로 이동하기 전에 재현율에 대해서도 알아볼게요
재현율은 True Positives를 실제 True 값들로 나누어 준거예요. 즉, True Positives 나누기
True Positives 플러스 False Negative 해준 것이죠
이것은 이 '실제 양성 값들에 대해서 얼마나 분류 모델이 맞추었는가'를 계산하는 것이죠
기본적으로 여기에서 하고자 하는 것은 10명의 암 환자와 90명의 암에 걸리지 않은
환자들이 있다고 해봅시다
여기에서 즉, 이 10명의 암 환자들에 대해서 모델이 얼마나 정확하게 분류할 수 있었는지를 측정하는 것이죠
이것을 우리는 재현율(Recall)이라고 하는 거예요
자 다시, 이게 헷갈리게 들릴 수 있다는 것을 알기 때문에 이제 예시들을 봐봅시다
100명의 환자들이 있고 이들 중 실제로 9명이 암을 가지고 있고
91명은 건강하고, 아무 이상이 없다고 가정해 봅시다
이건 사실이에요 이게 실제 기반 사실들인 것이고
내용은 다음과 같이 91명의 건강한 사람들이 있고
이 사람들은 문제없어요 그리고 이들 중 9명의 사람들은 암을 가지고 있어요
실제로요 그리고, 우리는 AI 모델을 이미 학습시켰고 기본적으로 예측을 만들어내요
그리고 이게 모델 결과예요
여기에 True Positives가 있고 값은 1이네요 True Negatives는 90이고
False Positives = 1, 그리고 False Negatives = 8이 나왔어요
이게 이제 실제 모델 성과이고 이제 그럼 KPI를 계산해 봅시다
첫 번째 KPI는 정확도예요
어떤 사람이 와서 기본 정확도를 계산해 보자고 말할 거예요
이 모델이 몇 번 정답을 맞히는지 보자고요
그래서 (90 + 1) 을 전체 샘플 개수로 나누어줄 거예요, 100으로 나누어주는 것이죠
그래서 91 나누기 True Positives +True Negatives + False Positives + False Negatives을 해주면 91%가 나올 거예요
그래서 만약 AI/머신러닝이 처음인 사람이 와서 보면"있잖아요
이것 참 좋은 모델이네요
91%의 정확도를 가지고 있다니"라고 할 거예요 몇몇 사람들은 "좋은 모델이네요"라고 하겠죠
하지만 이건 실제로 쓸모없는 모델이에요 사용하기에 정말 최악인 모델이죠
절대 실사용을 위해 이 모델을 배포할 수는 없어요 그 이유는, 우리가 정확도만 보면 안 되기 때문이죠
정밀도와 재현율과 같은 KPI들을 더 봐야 해요 그럼 이제 정밀도와 재현율을 구해봅시다
정밀도는, 아까 보았듯이, (True Positives) / (총 True 예측 개수)예요
이 True Positives를 이 행으로, 전체 양성 예측 개수로 나누어주는 것이에요
양성이라고 예측한 이 첫 번째 행으로요 그러면, 1 / (1+1) 이 될 것이고 그러면 50%가 나올 거예요
여기에 있는 뜻은, 모델이 오직 양성이 두 개라고, 2개가 예측된다고 말한 것이죠
즉, 모델이 "이 100명의 환자들 중에 2명의 환자만 양성이에요"라고 하는 것이죠
하나는 맞았어요 예측 중 하나는 실제로 맞았죠
그리고 나머지 하나는 틀렸어요 모델이 양성이라고 예측한 나머지 하나는
실제, 즉 True 클래스에서는 음성이었던 것이에요
그렇기 때문에 여기 정밀도가 50%가 나온 것이에요
모델이 2가지 샘플이 양성이라고 말했지만 하나만 정답이었던 것이죠
여러분들이 이것을 조금이라도 이해하셨기를 바라요
그리고 이것이, 다시 말하지만 정밀도(Precision)의 정의예요 이 특정 예측을 만들어 낼 때 어느 정도 정확하게
하는가에 대한 것이죠
그리고 두 번째 정의, 재현율(Recall)은 이 True Positives를 실제의 양성 샘플들로 나누어 주는 것이죠
즉, 이 True Positives를 여기 이 열로 나누어 주는 것이에요 (True Positives + False Negatives)로 나누어 주는 것이죠
그래서 1 / (1 + 8)을 해주면1 / 9가 될 것이고 재현율은 11%이라는 뜻이죠
그럼 재현율은 무슨 의미냐 하면 실제로 9명의 암 환자들이 있어요
실제 기반 사실이죠 이 100명의 환자들 중에 9명만이 암을 가지고 있는
것이에요 여기서 질문은 '이 9명의 환자들 중에 모델이 몇 명을 인식해낼 것인가'이에요
이게 재현율의 정의이죠 자, 여기에서 모델은 1개만 맞았고 암 환자들 중 8명에 대해서는 틀렸어요
이게 여기 재현율이 11%인 이유이죠 즉, 이 모델 성능은 정말 최악이에요
이 9명의 환자들 중에서 오직 한 명만 알아냈어요 맞죠
그래서 이게 정확도가 보통 오인하게 할 수 있는 이유이고 이것만을 가지고 분류 모델을 평가하기에는 충분하지 않죠
재현율과 정밀도는 상당히 중요해요 특히 이런 상황, 양성 개수와 음성 개수가 비슷하지 않은 이런 균형 잡히지 못한
데이터세트에서는 더 중요하죠
여길 보면 오직 9명의 환자들만 암을 가지고 있고 건강한 사람들은 이 사람 수의 10배가 넘기 때문에
KPI에서 정확도만 이용하면 안 되는 것이죠 이 케이스를 잘못 해석할 거예요
그저 단지 "이 모델은 91% 정확하기 때문에 이건 좋은 모델이야"라고 한다면
아니요, 정밀도와 재현율과 같은 KPI를 더 봐야 해요
그리고 정밀도와 재현율 사이의 조화 평균을 나타내는 F1 스코어 같은 KPI들이 더 있다는 것을 알아주세요
그리고 추가로 Roc curve, AUC(Area under the curve) 같은 KPI들이 더 있답니다
이것들은 강의를 진행하면서 계속 다룰 것이라는 것을 알아주세요
초반에 이 많은 정의들을 여러분에게 쏟아붓고 싶지는 않았지만 이걸로 충분하고
이 사례 스터디를 진행할 수 있어요