본문 바로가기
IT 도서/파이썬 머신러닝

3. 평가

by 이민우 2021. 2. 1.
728x90
반응형

book.naver.com/bookdb/book_detail.nhn?bid=16238302

 

파이썬 머신러닝 완벽 가이드

자세한 이론 설명과 파이썬 실습을 통해 머신러닝을 완벽하게 배울 수 있습니다!《파이썬 머신러닝 완벽 가이드》는 이론 위주의 머신러닝 책에서 탈피해 다양한 실전 예제를 직접 구현해 보면

book.naver.com

*해당 글은 학습을 목적으로 위의 도서 내용 중 일부 내용만을 요약하여 작성한 포스팅입니다.

 상세한 내용 및 전체 내용 확인을 원하신다면 도서 구매를 추천드립니다.

 

 

 

평가 프로세스

  • 모델 예측 성능을 평가하는 단계.
  • 회귀의 경우 대부분 실제값과 예측값의 오차 평균값에 기반한다.
  • 분류도 일반적으로는 실제 결과 데이터와 예측 결과 데이터가 얼마나 정확한가에 기반한다.
  • 하지만 분류의 경우 정확도만 가지고 판단하면 잘못된 평가 결과가 나올 수 있다.

 

 

1) 정확도 (Accuracy)

  • 정확도는 실제 데이터에서 예측 데이터가 얼마나 같은지 판단한다.
  • 불균형한 레이블 값 분포에서 판단할 경우 정확한 평가 지표가 아니다.
  • ex) 100개의 데이터 중 90개의 레이블이 0이면 무조건 0을 예측하는 모델의 정확도가 90%.

 

 

2) 오차 행렬 (Confusion Matrix, 혼동행렬)

 

  • 이진 분류에서 성능 지표로 활용된다.
  • 학습된 분류 모델이 예측을 수행하며 얼마나 헷갈리고 있는 지도 보여준다.
  • 불균형한 이진 분류 데이터는 Positive 데이터 건수가 매우 작기 때문에 Negative 예측 정확도가 높아지는 경향이 발생할 수 있다.
  • 그래서 불균형한 데이터 세트에서는 정확도보다 정밀도와 재현율을 더 선호한다.
  • sklearn.metrics.confusion_matrix

*TN : 예측 값 0, 실제 값 0

*FP : 예측 값 1, 실제 값 0

*TP : 예측 값 1, 실제 값 1

*FN : 예측 값 0, 실제 값 1

 

*오차 행렬상 정확도 = 예측 결과와 실제 값이 동일한 건수 / 전체 데이터 수 = ( TN + TP ) / (TN + FP + FN + TP)

 

 

3) 정밀도와 재현율

  • 정밀도 = TP / (FP + TP)
  • 재현율 = TP / (FN + TP)
  • 정밀도 : 예측을 Positive로 한 대상 중 예측과 실제 값이 Positive로 일치한 데이터의 비율
  • 재현율 : 실제 값이 Positive인 대상 중 예측과 실제 값이 Positive로 일치한 데이터의 비율
  • 정밀도는 양성 예측도로 불리고, 재현율은 민감도, TPR로 불린다.
  • 실제 Positive 양성 데이터를 Negative로 잘못 판단하면 안 될 경우 재현율이 중요 지표
  • 실제 Negative 음성 데이터를 Positive로 잘못 판단하면 안될 경우 정밀도가 중요 지표
  • 정밀도 계산을 위해 precision_score()를 사용한다.
  • 재현율 계산을 위해 recall_score()를 사용한다.

*가장 좋은 것은 재현율과 정밀도 모두 높은 수치를 얻는 것.

 

3-1) 정밀도와 재현율 트레이드오프

  • 분류의 경우 임계값 (Threshold)를 조정해 정밀도 또는 재현율의 수치를 높일 수 있다.
  • 그러나 한 쪽을 강제로 높이면 다른 하나는 떨어진다. 이를 트레이드 오프라고 한다.
  • 방법은 예측 데이터가 특정 레이블에 속하는지 계산하기 위해 수행하는 결정 확률을 임계값으로 지정하는 것.
  • 일반적인 이진 분류에서는 임곗값을 0.5로 정하고 이보다 크면 Positive, 작으면 Negative로 결정한다.
  • sklearn.preprocessing.Binarizer

*임계값을 낮추면 Positive가 많아져 재현율이 올라가고 정밀도가 떨어짐

*임계값을 낮추면 Negative가 많아져 정밀도가 올라가고 재현율이 떨어짐

*업무 환경에 맞게 두 개의 수치를 상호 보완할 수 있는 수준에서 적용해야 한다.

 

 

4) F1 스코어

  • 정밀도와 재현율을 결합한 지표이다.
  • 정밀도와 재현율이 어느 한 쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 갖는다.
  • sklearn.metrics.f1_score

 

 

5) ROC 곡선과 AUC

  • 이진 분류의 예측 성능 측정에 중요하게 사용되는 지표이다.
  • ROC 곡선은 FPR이 변할 때 TPR이 어떻게 변하는지 나타내는 곡선이다.
  • FPR을 X 축으로, TPR을 Y 축으로 잡아 곡선 형태로 나타낸다.
  • ROC 곡선은 FPR을 0부터 1까지 변경하며 TPR의 변화 값을 구한다.
  • FPR 변경 시에는 분류 결정 임계값을 변경한다. (임계값이 1이면 FPR이 0, TN이 0이면 FPR이 1)
  • sklearn.metrics.roc_curve
  • 일반적으로 ROC 곡선은 FPR과 TPR의 변화 값을 보는 용도로 사용한다.
  • 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC 값이다.
  • AUC 값은 ROC 곡선 밑의 면적으로, 1에 가까울수록 좋은 수치이다.
  • sklearn.metrics.roc_auc_score

 

*TPR (민감도, 재현율) : 실제값 Positive가 정확히 예측되어야 하는 수준

*TNR (특이성) : 실제값 Negative가 정확히 예측돼야 하는 수준

*TPR = TP / (FN + TP)

*TNR = TN / (FP + TN)

*FPR = FP / (FP + TN) = 1 - TNR

 


실습코드 : https://github.com/123okk2/MachineLearning_practice/tree/main/3.%20%ED%8F%89%EA%B0%80/AI_train_practice_pima_Indian-main

728x90
반응형

'IT 도서 > 파이썬 머신러닝' 카테고리의 다른 글

7. 군집화  (0) 2021.02.10
6. 차원 축소  (0) 2021.02.09
5. 회귀  (0) 2021.02.08
4. 분류  (0) 2021.02.08
2. Sklearn (사이킷 런) 사용법  (0) 2021.02.01