Python / / 2022. 10. 17. 10:55

Python - 모델 평가 오차행렬

교차검증만으로 끝난게 아니다.

모델을 신뢰 할 수 없기 때문에 교차검증, 모델튜닝을 하며 최적화를 진행한후
실질적인 모델 평가를 진행한다.
<회귀 성능 평가 지표 >
근사치 확인

<분류 성능 평가 지표>
*1. 정확도 (accuracy)

2. 오차행렬
3. 정밀도 & 재현율
4. F1 스코어

*5. ROC AUC (신뢰성 측정)

정확도, ROC AUC를 확인하면 쓸 수 있는 모델인지 평가가 가능하다.

 

 

 

<분류 모델 평가 지표>
오차행렬
       

True Negative(TN) : Negative로 예측했는데 맞은거  | False Positive (FP): Positive로 예측했는데 틀린거
------------------------------------------
False Negative (FN) : Negative로 예측했는데 틀린것 | True Positive (TP): Postitive로 예측했는데 , 맞은거

 

FN이 잘못 될 경우 굉장히 위험하다. 의료계에 있어서, 암이 아닙니다 라고 했지만 틀렸을때의 위험성을 

생각 해야 한다.  '위험성  분석'의 중요성

 

TN은 고려대상이 아니기 때문에 , FN / FP / TP를 주로 확인한다.

예를들어, 암 환자 예측에서 암환자는 반드시 Positive(0)로 해야한다.  정상인은 Negative(1)

--> 반드시 예측 대상을 Positive로 설정해야한다.
 
 
 
더미 데이터를 생성 1,1000까지 10단위로 random
만든후 ,20개는 1로 설정 1000개를 0으로 채워서 정확도 예측 하면 98%가 나온다.

하지만, 정확도가 높다고 하더라도 제대로 된 결과가 아님
 
ex)
 
data={'a':np.random.randint(1,10,1000),
      'b':np.random.randint(1,10,1000)}
new = pd.DataFrame(data)
new['result'] = 0
new.iloc[-20:] = 1
# print('정확도', accuracy_score(new.result, np.zeros(1000)))
# print('confusion_matrix', confusion_matrix(new.result,np.zeros(1000)))

confusion_matrix를 확인하면
[[980   0]  FP, TP 열이 0 , 0이 나온 순간부터 이미 잘못되었다는것을 알 수 있다.
 [ 20   0]]
 
 
 
기존의 정확도 : 전체 예측 데이터 건수 , 예측결과가 동일한 데이터 건수를 확인했지만

이제부턴 Confusion_matrix로  확인을 해야 한다 .

(TN+TP)
--------------
(TN+FP+FP+TP)

의료쪽에선 TP가 상당히 중요한 요소이다.
 
''''''
정밀도(PRECISION): 실제 음성인 데이터 예측을 양성으로 잘못 판단 시 업무상 큰 영향이 발생하는 경우 (FP)
이런경우, FP를 낮추는게 중요하다. False Positive를 낮출수록, 정밀도는 상승한다.

재현율(RECALL): 실제 양성인 데이터를 음성으로 잘못 판단시 업무상 큰 영향이 발생하는 경우, (FN)
이런경우, FN를 낮추는게 중요하다. False Nagative를 낮출수록, 재현율은 상승한다

정밀도든 재현율이든 Positive를 맞추는게 중요하기 때문에, TP를 올리는게 중요하다.

TN은 갖다버리자 Nagative는 예측해봤자 아무짝에도 쓸모없다.
'''
  < 정밀도 PRECISION < 재현율  RECALL>
설명 실제 음성인 데이터 예측을 양성으로 잘못 판단 한 경우 실제 양성인 데이터를 음성으로 잘못 판단한 경우
암 판단 모델   O (위험)
금융 사기 모델    O (위험)
스팸 메일 판단 O(위험)  
목표  FP를 낮추는것이 중요 FN을 낮추는것이 중요

ex) 죄가 없는 사람이 죄가 있다고 예측 할 경우 or 죄가 있는 사람이 죄가 없다고 예측할 경우 

어떤게 더 위험할까 '정밀도'가 더 중요하다고 생각한다. 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유