혼돈행렬에 대해 알아보겠습니다. 혼돈행렬을 통해 나오는 평가지표는 매우 많으며 대략적으로 알다보니 필요할 때 마다 찾아보게 되어 정리하게 되었습니다.
분류 문제의 경우 값의 크기를 이해하기 위해 혼돈 행렬의 형태로 성능을 나타냅니다. 이항분류(class가 0 또는 1)의 경우 두 가지 클래스 중 중요한 클래스를 양성 다른 클래스를 음성이라고합니다. 양성이라 예측했을 때 양성일 경우는 TP( true positive), 음성이라 예측했을 때 음성일 경우는 TN(true negative)라고 합니다. 또 양성이라 예측했으나 실제로 음성일 경우 FP(false positive), 음성이라 예측했으나 실제로 양성일경우 FN(false negative)라고 합니다.
조금 쉽게 이해하자면 앞이 T로 시작하면 예측이 맞았고, F로 시작하면 예측이 틀렸다고 생각하면 됩니다. 뒤에 P는 예측을 양성으로 할 경우 N은 예측을 음성으로 예측할경우 입니다. 다시말해 예를 들어 FP일 경우 예측을1로 하였지만 1이 아니었고 실제는 0이었다 이렇게 이해하면 암기할 필요가 없습니다.
이렇게 4가지의 경우가 생기고 이들을 통해 다양한 지표를 표현할 수 있습니다. 4가지 모두 중요하지만 가장 중요한 하나를 선택하자면 어떤게 중요할까요? 저는 FN이라고 생각합니다. 복습하자면 실제로 음성이라 예측했지만 틀렸고 양성일 경우겠죠?
한명의 의사가 있고 암을 진단받으러 오는 환자가 있습니다. 앞서 분류의 경우 중요한 클래스를 양성(1)이라고 합니다. 암이 있을 경우를 1로 가정하겠죠? 암이 아니지만 암이라고 예측한경우(FP)와 암이지만 암이아니라고 예측한 경우(FN) 어떤 예측이 의사에게 치명적인 실수 일까요? 당연히 후자이겠죠?
예측 / 실제 |
Actual 1 |
Actual 0 |
predicted 1 |
TP(진양성) | FP(위양성) |
predicted 0 |
FN(위음성) | TN(진음성) |
이제 이4가지의 경우를 가지고 사용되는 지표에 대해 알아보겠습니다. 지표로는 정확도(accuracy), 정밀도(precision), 재현율(recall), 특이도(specificity)이 있습니다.
정확도(accuracy)는 전체에서 TP와 TN이 차지하는 비율입니다. 단순히 전체에서 정확히 예측한 비율이라고 생각하면됩니다.
ACC = (TP + TN) / (TP + TN + FP + FN)
정밀도(precision)은 양성으로 예측한 경우(TP + FP) 중에 실제 양성(TP)인 비율입니다. 정밀도가 낮을 경우 암이 아닌 사람에게 암이라고 했으니 불필요한 치료가 발생할 수 있습니다.
PRC= TP / (TP + FP)
재현율(recall)은 실제 양성(TP + FN) 중에 양성을 양성이라고 맞춘(TP)인 비율입니다. 재현율이 낮을 경우 암인 사람에게 암이 아니라고 하였으니 심각한 결과를 초래할 것 입니다.
REC = TP / (TP + FN)
특이도(specificity)는 실제 음성(TN + FP) 중에 음성을 음성이라고 맞춘(TN) 비율입니다. 이경우도 불필요한 치료가 발생하겠죠?
SPC = TN / (TN + FP)
F1 score는 정밀도와 재현율이 적절하게 요구 될 때 사용합니다. F1 score는 현재 캐글에서도 많이 사용되는 지표로써 정밀도와 재현율의 조화 평균입니다.
F1 = (2*PRC * REC) / (PRC + REC)
왜 산술평균이 아닌 조화평균을 사용할까요? 분자가 같지만 분모가 다를경우 조화평균이 정확하기 때문입니다. 예를 들어 200km의 목적지가 있는데 중간까지 시속 100km 중간 이후부터 시속 50km를 갔다면 평균속력은 얼마일까요? 75km/h일까요? 아닙니다. 100km지점까지는 1시간이 걸렸고 나머지 100km까지는 2시간이 걸렸을 것입니다. 그러니 평균 속력은 66.7km/h 이며 조화 평균 공식으로는 (2*100*50) / (100+50) = 66.7이 나옵니다. 정밀도와 재현율의 경우도 분자는 같지만 분모가 달라 조화평균을 사용하여 f1 score를 계산합니다.
지금까지 혼돈행렬을 통해 알 수 있는 지표에 대해 알아봤습니다. 이 글을 단순히 보는 것 보다 한번만 이해하시면 계속 기억에 남을 것 으로 생각합니다!.
'통계' 카테고리의 다른 글
통계에서 사용되는 bootstrap의 의미는 무엇인가요 (0) | 2019.11.15 |
---|---|
ROC curve? (0) | 2019.11.09 |
가설검정 그리고 귀무가설과 대립가설은 무엇인가? (0) | 2019.10.18 |
차원의 저주란? (0) | 2019.03.21 |
데이터사이언티스트 질문 (0) | 2019.03.21 |