본문 바로가기
AI_basic/ML

[ML] 분류모델의 성능 평가 지표 Part.2 정밀도/재현율 트레이드오프(Trade-off)

by hits_gold 2021. 7. 7.
반응형

정밀도/재현율 트레이드오프(Trade-off),  F1_score,  ROC_curve and AUC   

 

   지금까지 오차행렬의 값을 이용해 정확도, 재현율, 정밀도 등을 살펴보았는데, 재현율 또는 정밀도가 특별히 강조돼야하는 경우가 있다는 것을 예시를 통해 알 수 있었습니다. 

   이런 경우 분류의 결정 임곗값(Threshold)를 조정해 두 지표를 조정할 수 있는데, 둘은 상호보완적인 관계이기 때문에

어느 한 쪽을 강제로 높이면 다른 하나의 수치는 떨어지기 쉽습니다. 이를 정밀도/재현율 Trade-off라고 부릅니다.

 

1. 정밀도/재현율 트레이드오프(Trade-off)

  Scikit-learn의 분류 알고리즘은 예측 데이터가 어느 레이블에 속하는지 계산하기 위해 개별 레이블별로 결정 확률을 구합니다. 일반적으로 이진 분류에서 임곗값을 50%로 정하고 이 값보다 확률이 크면 Positive, 작으면 Negative로 정합니다.

 

  학습이 완료된 사이킷런 Classifier 객체에서 predict() 메소드를 실행하면 예측 결과 클래스값이 반환합니다. 사실 이 predict() 메소드는 predict_proba()메소드에 기반해 생성된 API입니다. predict_proba()메소드는 각 예측 데이터별 레이블별 예측확률을 반환합니다. 이진분류를 예를 들면 데이터가 각 행 별로 위치하고, 칼럼에 0, 1 레이블이 들어가 각 레이블별 예측확률을 ndarray로 반환합니다.

 

 1) predict_proba() 메소드 실행

   다음은 피마원주민 당뇨병 예제에서 LogisticRegeression객체에서 predict_proba()를 수행한 값입니다.

첫 번째 행의 경우 0컬럼의 값이 약 0.98로 첫 번째 예측 데이터를 0 즉 Negative로 예측했다고 알 수 있습니다.

 

    임곗값을 내리면 그만큼 Positive로의 예측이 늘어납니다. Positive 예측을 많이 하다보니 실제 FN의 값이 감소하고 FP가 증가한다는 것을 알 수 있습니다. 따라서 임곗값을 내리면 재현율이 증가하고 정밀도가 감소하게 됩니다.

 2) 임곗값 조정에 따른 재현율과 정밀도 변화

 임곗값 조정은 Binarizer 모듈을 통해 이와 같이 조정할 수 있습니다.

 임곗값을 0.5에서 0.4로 조정함에 따라 재현율이 증가하고 정밀도가 감소한 것을 알 수 있습니다.

 

임곗값의 변화에 따른 정밀도와 재현율을 좀 더 직관적으로 보고 싶다면 precision_recall_curve() 메소드를 사용하면 됩니다.

  3) precision_recall_curve() 메소드를 사용한 임곗값 별 정밀도와 재현율 시각화

precision_recall_curve(y_test, pred_proba)를 실행하면 순서대로 정밀도, 재현율, 임곗값을 각각의 배열로

반환할 수 있고, 이를 통해 만든 함수로 시각화를 한 것입니다.

 

 

 

내 생각

   특정 성능지표만 강조하는 상황이 돼서는 안된다고 알게되었는데, 그럼 여러 성능지표들을

어떻게 합리적으로 받아들일 수 생각해보았고 본 책에 나와있는지 궁금해졌다.

 

 

#본 글은 위키북스의 "파이썬 머신러닝 완벽 가이드"를 베이스로 저의 학습을 정리한 글로,

 제가 어떻게 이해했느냐에 따라 책의 내용과 달라질 수 있습니다.

 

 

 

반응형