Note

분류 성능 평가 지표 본문

Machine Learning/Classification

분류 성능 평가 지표

알 수 없는 사용자 2021. 5. 13. 23:45
728x90

오늘 정리할 내용은 자격증 공부할 때 굉장히 나를 헷갈리게 했던 분류 성능 지표이다.

ADsP나 빅데이터 분석기사에서도 출제된 문제이니만큼 자격증을 준비하시는 분들은 알아두면 좋을 지식이다.

오늘은 코딩보다는 개념을 정리하는 시간으로 하려고 한다.

1. 정확도(Accuracy)

정확도는 전체 예측 데이터에서 예측 결과를 맞춘 건수 비율이라고 말할 수 있다.

직관적으로 모델 예측 성능을 나타내는 평가 지표이지만, 이진 분류에서는 구성에 따라 모델의 성능을 왜곡할 수 있기 때문에 다른 지표도 고려해야 한다.

파이썬에서는 accuracy_score를 사용한다.

정확도의 맹점을 들어내는 경우의 예시를 들면 손글씨 분류이다. 0부터 9까지 모든 숫자를 써놓고 3이라는 숫자를 찾고 싶은데 모두가 3이 아니라고 하면 3 빼고 다 맞춘 상황이기 때문에 정확도는 0.9가 된다.

2. 오차 행렬 (Confusion Matrix)  

자격증을 공부하시면 자주 보게 될 표인데 분류 성능 지표를 나타내는 오차 행렬이라고 한다.

각각에 해당하는 지표를 외우려고는 해봤지만 시험문제를 보면 헷갈려서 항상 틀린거 같은 문제였다. 참고로 시험에서 예측 값과 실제 값의 위치가 바뀌어서 나오기도 했으므로 계산을 신경 써서 해야 하며, 개념을 정확히 알아야 풀 수 있었기도 했다.

위의 손글씨 예처럼 전부 3이 아니다라고 예측을 했을 때 정확도는 90%로 상당히 높은 수치이다. 하지만 이 표로 보면 TP에 해당하는 부분이 0이며, FP도 0이다.

정확도만을 쓰기에 모델 성능을 왜곡할 수 있어서 정밀도와 재현율이 나온다.

정밀도 = TP / (FP + TP), 정밀도는 긍정으로 예측한 것 중에 예측과 실제 값이 일치한 데이터의 비율이다.

재현율 = TP / (FN + TP), 재현율은 실제 값이 긍정인 것 중에 예측과 실제 값이 긍정으로 일치한 데이터의 비율.

언뜻 보면 비슷해 보이지만 설명을 잘 보면 긍정으로 예측한 것 중에 맞춘 비율이고, 재현율은 실제값은 맞든 틀리든 긍정인 것 중에 예측 값과 실제 값이 일치한 비율이다.

코딩

- 정밀도 : precision_score()

- 재현율 : recall_score()

정밀도와 재현율은 trade - off 관계에 있다. 여기서 trade - off 란 한 수치가 올라가면 다른 하나의 수치는 반대로 움직인다고 이해하면 된다.

업계에 따라서 상대적 중요도가 달라지기 때문에 어떤 지점이 좋은지에 대해서는 분석하는 사람의 기준에서 판단하면 된다.

재현율은 상대적으로 중요한 경우는 실제 긍정을 부정으로 판단하게 되는 경우인데 대표적으로 암 진단이 그런 경우다. 암 진단은 가급적 양성이라고 해서 조기에 발견하는 게 좋다는 예시를 들 수 있다.

정밀도는 실제 음성인 데이터 예측을 양성으로 잘못 판단하게 되는 경우로 스팸 메일이 있다. 이는 가급적 음성으로 판단해서 중요한 메일을 스팸메일 처리하지 않도록 하는 것이 좋다.

업무에 따라서 강조돼야 할 지표에 따라 임곗값(Threshold)을 조정해준다.

분류 결정 임곗값이 낮아질수록 positive로 예측할 확률이 높아지고 이는 재현율의 증가와도 같다.

코딩

predict_proba()

Binarizer는 요소들이 기준 값보다 큰지 작은 지를 알려주는 함수이다.  각거나 작으면 0을 반환하고 크면 1을 반환한다. 이를 이용하면 분류 임계값으로 예측 값을 변환시킬 수 있다.

임계값을 조정해가면서 재현율과 정밀도를 조정시킬 수 있다.

3. F1 Score

F1 Score는 정밀도와 재현율을 결합한 지표이며, 두 사이에서 큰 차이가 없다면 좋은 F1 스코어를 가지게 된다.

F1 스코어를 구하는 공식이며, 해당하는 변수를 잘 넣어주시면 됩니다.

4. ROC와 AUC

그래프 점선 위로 보이는 곡선이 ROC 커브이고 그 아래 면적이 FPR입니다.

또 다른 분석하는 방법은 TPR을 구합니다. 이것은 재현율이라고 하지만 민감도로도 불린다.

반대로 FPR은 실제 부정을 잘못 예측한 비율이다. FPR = FP/(FP + TN)

'Machine Learning > Classification' 카테고리의 다른 글

보팅 (Voting)  (0) 2021.05.24
앙상블 학습  (0) 2021.05.24
분류 - Decision Tree (2)  (0) 2021.05.20
분류 - Decision Tree (1)  (0) 2021.05.20
iris 품종 예측 - scikit learn  (0) 2021.05.06
Comments