1. Confusion Matrix (혼돈 행렬)
True Positivie(TP) : 실제값이 Positivie 인데, 예측값 Positivie라고 둘 값이 같은 경우
(고양이 사진을 보여주고 모델이 고양이라고 추측함)
False Positive(FP) : 실제값이 Negative 인데, 예측값 Positivie라고 둘 값이 다른 경우
(개 사진을 보여주고 모델이 고양이라고 추측함)
True Negative(TN) : 실제값이 Negative 인데, 예측값 Negative라고 둘 값이 같은 경우
(개 사진을 보여주고 모델이 개라고 추측함)
False Negative(FN) : 실제값이 Positivie 인데 예측값 Negative 라고 둘 값이 다른 경우
(고양이 사진을 보여주고 모델이 개라고 추측함)
고양이를 Positivie 개를 Negative 라고 정의한 것은 임의로 정한것임
개를 Positivie 고양이를 Negative
고양이가 존재하면 Positivie 고양이가 없으면 Negative
암이 있으면 Positivie 암이 없으면 Negative
여러 방법으로 이진분류를 임의로 정할수 있음.
암이 있으면 Positivie암이 없으면 Negative 예시
True Positivie(TP) : A에게 실제로 암이 있는데 모델이 암이 있다고 추측한 경우
False Positive(FP) : A에게 실제로 암이 없는데 모델이 암이 있다고 추측한 경우
True Negative(TN) :A에게 실제로 암이 없는데 모델이 암이 없다고 추측한 경우
False Negative(FN) : A에게 실제로 암이 있는데 모델이 암이 없다고 추측한 경우
True Positivie(TP) False Positive(FP) True Negative(TN) False Negative(FN) 의 앞의 값 True False 가 의미하는것은 실제 값과 예측 값을 비교했을때 같냐 아니냐 를 뜻함.
실제값 = 예측값 : True
실제값 ≠ 예측값 : False
ex
실제값 Positivie, 예측값 Positivie = True
실제값 Negative, 예측값 Negative = True
실제값 Positivie, 예측값 Negative = False
실제값 Negative, 예측값 Positivie = False
True Positivie(TP) False Positive(FP) True Negative(TN) False Negative(FN) 의 뒤의 값 Positive, Negative가 의미하는 것은 예측값을 그대로 반환
예측값이 Positive 일경우 Positive
예측값이 Negative 일경우 Negative
Confusion Matrix 정의해서 쓰는 TP,FP,TN,FN 단어들은 실제 값 나타내는 부분 없음
예시로 있다는 가정하에 맨뒤 3번째 값에 실제값을 반환하는 새로운 Version 을 정의하면
이렇게 실제 값을 보기쉬운 New Confusion Matrix를 만들수있겠지만
다만 현재쓰는 TP,FP,TN,FN 정의는 실제 값 을 나타내는 부분은 없으므로
TP,FP,TN,FN 을 보고 실제값을 예측해야함
ex
False Negative(FN) 일 경우 실제 값을 예측해보면
뒤에 값 이 Negative 이므로 예측값은 Negative
앞의 값 이 False 이므로 실제값 ≠ 예측값
따라서 False Negative(FN)의 실제값은 Positive
다중분류에서의 Confusion Matrix
만약 개 고양이분류가 아닌 개 고양이 오리 말 4마리를 분류하는 다중분류 일 경우
이 모델의 Confusion Matrix 는 어떻게 표현할까?
다중 분류에서의 혼돈행렬은 개, 고양이, 오리, 말 중 무엇을 기준으로 두느냐의 따라 표를 4개 만들수있다.
(기준에 따라서 표를 다르게 보는 이유는 나중에 나오는 Accuracy, Recall, Precision 를 구할때
개 기준의 Accuracy, Recall, Precision , 고양이 기준의 Accuracy, Recall, Precision,
오리 기준의 Accuracy, Recall, Precision, 말 기준의 Accuracy, Recall, Precision 를 각각 구해서
Accuracy, Recall, Precision 평균을 구해야 되기 때문.)
개를 기준으로 표현하면 "개 가 있다" 를 Positivie "개 의외의 동물이다" 를 Negative로 생각하면 된다.
오리를 기준이면 "오리 가 있다" 를 Positivie "오리 의외의 동물이다" 를 Negative로 생각하면 된다.
그런데 실제로 다중분류 해야할 종류가 100개 10000개가 넘어가면 표를 10000개를 만들어야 될까?
또한 실제 수많은 경우의 수을 구하면 행렬로 수많은 경우의 수가 구해지므로 1번 표 로 표현하기엔 한계가 있으므로 보통은 아래와 같이 2번 표 형식으로 표현한다.
표를 간략하게 표현 했는데
모델이 "실제 개 사진을 개로 추측한 것"이 9개
"실제 오리 사진을 고양이로 추측한 것"이 2개
"실제 오리 사진을 오리로 추측한 것"이 16개
등등..
으로 보면 된다. 이 2번 표로 개 고양이 오리 말 각 기준에서의 TP,FP,TN,FN 쓰면
이렇게 되는데 이해하기 힘들다...
개 고양이 오리 말 4가지 경우의 수로 생각하고 보면 이해 하기 힘드니
앞서 보여준 1번 표처럼
'기준 동물' 을 Positivie '기준 의외의 동물' 을 Negative
2가지 경우의 수로 생각하고 봐야 제대로 표를 이해하고 볼수 있다.
- 고양이 기준 표로 예시를 들면
"실제 개 사진을 모델이 개 라고 추측" 을
"실제 고양이 의외의 동물(Negative) 사진을 고양이 의외의 동물(Negative)로 추측" 으로 봐야한다. = TN
"실제 오리 사진을 모델이 말 라고 추측" 또한
"실제 고양이 의외의 동물(Negative) 사진을 고양이 의외의 동물(Negative)로 추측" 으로 동일 = TN
"실제 고양이 사진을 모델이 오리 라고 추측" 은
"실제 고양이(Positivie) 사진을 모델이 고양이 의외의 동물(Negative) 라고 추측" = FN
"실제 말 사진을 모델이 고양이 라고 추측"
"실제 고양이(Positivie) 사진을 모델이 고양이(Positivie) 라고 추측" = TP
"실제 말 사진을 모델이 고양이 라고 추측"
"실제 고양이 의외의 동물(Negative) 사진을 모델이 고양이(Positivie) 라고 추측" = FP
- 말 기준 표 예시
"실제 오리 사진을 모델이 고양이 라고 추측"
"실제 말 의외의 동물(Negative) 사진을 모델이 말 의외의 동물(Negative) 라고 추측" = TN
"실제 말 사진을 모델이 고양이 라고 추측"
"실제 말(Positivie) 사진을 모델이 말 의외의 동물(Negative) 라고 추측" = FN
"실제 개 사진을 모델이 말 이라고 추측"
"실제 말 의외의 동물(Negative) 사진을 모델이 말(Positivie) 이라고 추측" = FP
이제 이진분류, 다중분류 TP FP FN TN 을 정확히 구별 할수있다.
드디어 Accuracy, Recall, Precision 를 구할 수 있다.
2. Accuracy, Precision, Recall
암이 있으면 Positivie 암이 없으면 Negative 예시로 설명.
True Positivie(TP) : A에게 실제로 암이 있는데 모델이 암이 있다고 추측한 경우
False Positive(FP) : A에게 실제로 암이 없는데 모델이 암이 있다고 추측한 경우
True Negative(TN) :A에게 실제로 암이 없는데 모델이 암이 없다고 추측한 경우
False Negative(FN) : A에게 실제로 암이 있는데 모델이 암이 없다고 추측한 경우
2-1 Accuracy
$$Accuracy = \frac{TP + TN}{TP + TN + FP + FN} = \frac{정답}{모든 데이터}$$
True Positivie(TP) : A에게 실제로 암이 있는데 모델이 암이 있다고 추측한 경우
True Negative(TN) :A에게 실제로 암이 없는데 모델이 암이 없다고 추측한 경우
TP + TN = 실제 값이 모델의 예측 값 과 동일한 경우 = 정답인 경우
TP + TN + FP + FN = 모든 경우의 수 합 = 모든 데이터 = 모든 이미지 데이터
Accuracy 흔히들 아는 정확도. 다만 데이터가 불균형할 경우 제대로된 지표가 될수 없음.
예시로 100명인 사람중에 실제로 희귀병이 있는 사람이 1명일 경우
100명다 정상이라고 진단하면 결정적인 희귀병 1명을 못찾아도 정확도는 99%가 됨.
2-2 Precision
$$Precision = \frac{TP}{TP + FP} = \frac{실제 암을 모델이 암이라고 제대로 예측한 경우}{모델이 암이라고 예측한 경우}$$
True Positivie(TP) : A에게 실제로 암이 있는데 모델이 암이 있다고 추측한 경우
False Positive(FP) : A에게 실제로 암이 없는데 모델이 암이 있다고 추측한 경우
TP + FP = 모델이 암이 있다고 추측한 경우의 수
Precision 은 실제 값 즉, 암이 실제로 있는지 없는지 는 중요하지 않고 모델이 암이 있다고 추측한 경우의 수에 포커스를 두고 있다. 다시말해 있다고 추측한 경우의 수 중 암이 실제로 있는데 있다고 추측한 경우 이므로 정밀도 라고 볼수있다.
2-3 Recall
$$Recall = \frac{TP}{TP + FN} = \frac{실제 암을 모델이 암이라고 제대로 예측한 경우}{실제 암이 있는 경우}$$
True Positivie(TP) : A에게 실제로 암이 있는데 모델이 암이 있다고 추측한 경우
False Negative(FN) : A에게 실제로 암이 있는데 모델이 암이 없다고 추측한 경우
TP + FN = 실제로 암이 있는 경우
Recall은 실제로 암이 있는 경우 에 포커스를 두고있다.
모델이 암이 있다고 추측 한 경우에 포커스를 두고있는 Precision 과는 완전 반대.
[용어 정리] 입개발자를 위한 Accuracy, Precision, Recall | Popit
머신러닝하면 자주 등장하는 Accuracy, Recall, Precision라는 용어에 대해서 간단하게 살펴 보았습니다.
www.popit.kr
https://moons08.github.io/datascience/classification_score_basic/
다중 분류 문제 성능평가 [기본편]
어떤 모델, 혹은 방법을 쓰던 분류 문제는 그 의도에 따라 다양한 성능평가 방식을 사용합니다. 사람, 고양이, 개 3개의 클래스를 분류하는 다중 분류(multi label) 예제를 통해 정리해보겠습니다.
moons08.github.io
https://darkpgmr.tistory.com/162
precision, recall의 이해
자신이 어떤 기술을 개발하였다. 예를 들어 이미지에서 사람을 자동으로 찾아주는 영상 인식 기술이라고 하자. 이 때, 사람들에게 "이 기술의 검출율은 99.99%입니다"라고 말하면 사람들은 "오우..
darkpgmr.tistory.com
Tutorials of Object Detection using Deep Learning [4] How to measure performance of object detection
Deep Learning을 이용한 Object detection Tutorial - [4] How to measure performance of object detection
hoya012.github.io