Medical AI research/Background

1. 의료 인공지능에서 사용하는 대표적인 지표들 (1) - TP, FP, TN, FN, and Confusion matrix

Do-Woo-Ner 2021. 6. 10. 17:28

안녕하세요

이번에는 의료 인공지능에서 사용하는 대표적인 지표들에 대해서 소개하려고 합니다.

 

사실 머신러닝을 공부하신 분들이나, 의학통계를 공부하신 분들은 다들 알고 있을 개념이지만, 의료 인공지능을 처음 접하시는 분들을 위해 몇몇 지표들을 알기 쉽게 설명 하려고 합니다.

 

의학논문을 보시거나, 딥러닝을 의료분야에 적용하면 아래와 같은 지표들을 확인하실 수 있으실 겁니다.

 

 

이미지 출처:  https://www.thelancet.com/journals/landig/article/PIIS2589-7500(20)30199-0/fulltext

 

 그럼 지금부터 의료 인공지능에서 사용되는 대표적인 성과지표들을 하나씩 차례대로 알아보도록 하겠습니다.

 

(이 카테고리는 질병을 다루는 의료관련 내용이기 때문에 관련 예시도 질병을 위주로 다루도록 하겠습니다.)

 

 

 

 

1. Positive, Negative, True, False

1-1. Positive and Negataive = Prediction

 

“If the condition is a disease, "positive" means "diseased" and "negative" means "healthy“

  • 질병 감염 여부를 알기 위해 병원체(=병의 원인이 되는 본체) 검사를 시행했을 때 피검체(=검사를 받는 주체)의 병원체가 기준치보다 높을 때를 ‘양성(positive)’, 기준보다 낮을 때를 ‘음성(negative)’이라고 합니다
  • 예를들어, COVID19 확인여부를 판별하는 기준이 되는 온도가 37도 라고 했을 때, 37도 이상은 기준치보다 이상("+"="positive")이기 때문에 COVID-19 질병에 걸렸다고 할 수 있으므로 positive(+, 양성)이라고 부릅니다. 반대로, 37도 이하 기준치보다 아래("-"="negative")이기 때문에, COVID-19 질병에 걸리지 않았다고 할 수 있으므로 negative(-, 음성)라고 정의합니다.

 

  • 여기서 조금 유의해서 봐야할 부분이 있는데, 우리가 어떤 기준치라는 것에 절대적인 신뢰를 갖고 있으면 안된다는 점입니다.
  • 예를 들어, A라는 사람의 온도를 측정한 결과 37도 이상이 나와 COVID-19이라고 분류했는데, 실제로 COVID-19 화나자가 아니였을 수 있습니다. 
  • 또 다른 예를 들면, 시골에 어떤 기계를 이용해 암이라고 판정했는데, 실제로 큰 병원에서 사람 몸을 해부해보거나 암인지 아닌지를 판정하는 여러 검사를 통해 봤을 때 암이 아닐 수 있습니다.
  • 이 때, 생각해 볼 수 있는 부분은 두 가지 입니다. 
    • 기준치가 잘 못 됐다.
    • A라는 사람이 outlier(특이치)이다.  

 

  • 드라마에서 의사가 환자에게 "안타깝지만, 양성 판정이 나왔습니다"라고 말했을 때, 환자가 눈물을 보이는 이유는 해당 의사의 말을 100% 믿었기 때문이죠. 이 의사의 말을 100% 믿었다는건, 의사가 진단을 위해 적용했던 모든 기준치들을 신뢰했다는 말이 됩니다. 하지만, 낙후된 진단 기법을 사용한다거나 사용하고 있는 진단 기법의 성능이 좋지 못하다면 오진을 할 가능성이 있습니다. 
  • 이러한 이야기를 하는 이유는 우리가 어떤 대상을 positive라고 판정했다고 하더라도 잘 못 진단을 했을 수 있다는 것을 알려드리기 위해서 입니다.
  • 그렇기 때문에, Positive, Negative은 어떤 병의 진위 여부를 결정 짓는 요소가 아니라, 무언가를 “예측(prediction) 또는 분류(classification)”할 때 사용되는 용어로써 인식해야 하는 것이죠.

 

  • 보통 질병이 맞는지 아닌지를 판정하기 때문에, binary classification을 한다고 볼 수 있는데, 좀 더 다양한 classes(병의 중증도 정도; ex: A 클래스=치매초기, B 클래스=치매중기, C 클래스=치매말기)에 대해서는 어떻게 양성, 음성 조건을 정해 줄 수 있을까요?
  • 이 경우에는 내가 알아보려고 하는 특정 질병이 condition(조건)이 되며, 해당 condition에 부합하는 질병이라고 판정한 경우에는 (해당 질병 관점에서) positive 라고 하고, 나머지를 모두 negative라고 하게 됩니다.
  • 예를 들어, 치매초기에 관심이 있다고 했을 때, 치매초기라고 진단하는 경우에만 양성(positive)이라고 하고, 치매중기, 치매말기라고 진단하는 경우에는 negative(음성)판단을 했다고 볼 수 있는 것이죠.

 

1-2. True and False = Answer

  • 우리가 무언가를 예측했다면 그 예측(positive or negative)이 틀렸다면 False, 맞았다면 True라고 합니다.
  • 예를 들어, 양성판정을 받은 사람이 실제로 양성이거나, 음성판정을 받은 사람이 실제로 음성이라면 True라고 합니다.
  • 이렇게, true인 경우가 많아지면 예측(prediction) 확률이 높아지기 때문에 예측모델(or 의사)의 신뢰성이 굉장히 높아지겠죠.
  • 그런데, 이렇게 true인지 false인지 판별하기 위해서는 정답지(Answer)가 필요합니다.
  • 현실에서는 정답지를 아는 사람은 신 뿐입니다.
  • 현실에서 정답지를 미리 알고 있었다면 굳이 positive, negative 라는 개념이 만들어질 필요도 없었겠죠. 
  • 하지만, true, false를 판단하기 위해서는 여전히 정답지(answer)가 필요합니다. 그렇다면, 이러한 정답지는 어떻게 만들 수 있을까요?

 

1-3. AI 모델

  • 의료 인공지능 분야에서는 의사들이 신의 역할을 대신합니다.
  • 즉, 앞서 "1-2"에서 언급한 정답지는 저명한 의사들 논의하여 만들게 되죠. 예를 들어, 의료 이미지 같은 경우, X-ray에 있는 특징들을 보고 여러 영상의학과 의사들이 모여 의논하고 소견을 밝힌 후, 해당 병변을 진단하게 되는데, 의료 인공지능 분야에서는 이러한 진단결과를 정답으로 간주합니다 (물론 이 과정에서 잘 못된 진단을 할 수 도 있겠지만, 저명한 의사들이 라벨링 했기 때문에 정답일거다라는 믿음이 전제가 되어 있는거죠)
  • 그렇다면 누군가는 positive, negative를 판단하는 존재가 있어야 하겠죠?
  • 의료 인공지능 분야에서는 양성, 음성을 판단하는 다양한 예측 모델들이 이 역할을 하고 있습니다.
  • 그래서, 우리가 연구해서 어떤 인공지능 예측 모델을 만들면, 예측을 정말 잘하는지 의사들이 라벨링한 데이터들을 기반으로 판단하게 됩니다. 만약, true인 경우가 많으면 당연히 해당 연구가 가치있는 연구로써 인정 받을 수 있게되겠죠? 

이미지 출처: https://medium.com/intro-to-artificial-intelligence/simple-image-classification-using-deep-learning-deep-learning-series-2-5e5b89e97926

  • 딥러닝을 예로 들면 우리가 자동차를 구분해주는 것에 관심이 있다고 했을 때, 앞서 언급한 condition이 자동차가 됩니다. → Positive={CAR}. Negative={TRUCK, …, BICYCLE}
  • 위의 그림에서는 딥러닝이 자동차라고 분류했기 때문에 positive 판정을 내렸다고 할 수 있습니다.
  • 실제 입력 데이터가 CAR라는 것을 알고 있다고 했을 때, 예측과 실제 값을 비교한 결과 옳게 예측했으므로 이 경우는 true라고 할 수 있습니다. 다시 말해, 판단한 prediction 클래스와 실제 정답에 해당하는 클래스가 일치하면 true라고 하는데, 이러한 case가 많으면 해당 모델을 신뢰하게 되는 것이죠.

 

 

 

 

 

2. TP(True Positive), FP(False Positive), TN(True Negative), FN(False Negative), and Confusion matrix

지금까지 의료 인공지능 관점에서 positive, negative, true, false를 살펴봤으니, 이러한 지표들을 조합하면 어떠한 분석들을 할 수 있게되는지 알아보도록 하겠습니다.

 

내가 관심있는 질병이 COVID-19이라는 가정하에서 설명해보도록 하겠습니다

 

 

2-1. TP: True Positive

  • True Positive는 양성(관심있는 질병=positive)으로 진단했고 실제 결과도 관심있는 질병(=positive)이었을(=true) 경우를 뜻합니다
  • 아래와 같은 질문을 통해 TP의 여부를 확인해 볼 수 있습니다.
    • Q1. 딥러닝이 COVID 19(condition)으로 판단했는가? → If YES, then POSITIVE
    • Q2. 딥러닝이 positive라고 분류 했을 때, labeled data class(실제정답)도 positive class인가? → If YES, then TRUE

이미지 출처: https://www.cs.tau.ac.il/~wolf/papers/SPIE15chest.pdf

 

 

 

2-2. FP: False Positive

  • False Positive는 양성(관심있는 질병=positive)으로 진단했지만 실제 결과가 관심있는 질병(=positive)이 아닌(=false) 경우를 뜻합니다
  • 아래와 같은 질문을 통해 FP의 여부를 확인해 볼 수 있습니다.
    • Q1. 딥러닝이 COVID 19(condition)으로 판단했는가? → If YES, then POSITIVE
    • Q2. 딥러닝이 positive라고 분류 했을 때, labeled data class(실제정답)도 positive class인가? → If NO, then FALSE
  • 아래 그림을 기준으로 설명하면, prediction은 covid-19으로 했지만, labeled data가 covid-19이 아닌 모든 class(normal, pneumonia, ..)인 경우에는 false positive가 됩니다.

이미지 출처: https://www.cs.tau.ac.il/~wolf/papers/SPIE15chest.pdf

 

 

 

2-3. TN: True Negative

  • True Negative는 음성(관심없는 질병=negative)으로 진단했고, 실제 결과도 관심없는(=negative) 질병(or 정상)인(=true) 경우를 뜻합니다.
  • 아래와 같은 질문을 통해 TN의 여부를 확인해 볼 수 있습니다.
    • Q1. 딥러닝이 COVID 19(condition)으로 판단했는가? → If NO, then NEGATIVE
    • Q2. 딥러닝이 negative라고 분류 했을 때, labeled data class(실제정답)도 negative class인가? → If YES, then TRUE
  • 이때 중요한건 음성으로 판정한 경우(=COVID19이라고 예측하지 않은 모든 경우)에는 prediction 결과와 labeled data가 굳이 일치하지 않아도 TRUE가 될 수 있다는 사실입니다. 
    • 예를들어, prediction 결과가 pneumonia(=negative)라고 했을 때, labeleld data Normal이어도 True Negative에 속하게 됩니다.

 

 

2-4. FN: False Negative

  • False Negative는 음성(관심없는 질병=negative)으로 진단했지만, 실제 결과는 관심있는(=positive) 질병인(=true) 경우를 뜻합니다.
  • 아래와 같은 질문을 통해 FN의 여부를 확인해 볼 수 있습니다.
    • Q1. 딥러닝이 COVID 19(condition)으로 판단했는가? → If NO, then NEGATIVE
    • Q2. 딥러닝이 negative라고 분류 했을 때, labeled data class(실제정답)도 negative class인가? → If NO, then FALSE

 

 

2-5. Confusion Matrix

  • 위에서 설명한 TP, TN, FP, FN 개념을 하나의 matrix로 볼 수 있는데, 이것을 confusion matrix라고 합니다.
  • X축에 위치한 것들이 예측 모델이 prediction한 결과들을 보여줍니다.
    • 예를 들어, 관심있는 질병인 COVID-19은 3번 째 위치에 있는데, 해당 X축 위치에 있는 y축 요소들 ((3,1), (3,2), (3,3))은 모두 positive라고 보시면 됩니다. 그 외의 값들은 모두 negative가 되겠죠.
  • TP의 경우에는 대각성분 ((1,1), (2,2), (3,3))에 위치해 있다고 볼 수 있습니다. 
  • 그 외의 지표들을 표시하면 아래와 같습니다.

이미지 출처:  https://arxiv.org/pdf/2003.09871.pdf

 

 

 

이제부터는 confusion matrirx나 아래의 지표들이 나오면 어떻게 해석해야할지 아시겠죠?

이미지 출처:  https://www.thelancet.com/journals/landig/article/PIIS2589-7500(20)30199-0/fulltext
이미지 출처:  https://www.thelancet.com/journals/landig/article/PIIS2589-7500(20)30199-0/fulltext

 

 

 

다음 글에서는 이 글의 연장선이 되는 추가적인 성능지표들에 대해서 알아보도록 하겠습니다!

      • Sensitivity = Recall = TPR(Ture Positive Rate)
      • Specificity = Selectivity = TNR(True Negative Rate)
      • FPR = False Positive Rate
      • Relationship between TPR and FPR