교차검증만으로 끝난게 아니다.
모델을 신뢰 할 수 없기 때문에 교차검증, 모델튜닝을 하며 최적화를 진행한후
실질적인 모델 평가를 진행한다.
<회귀 성능 평가 지표 >
근사치 확인
<분류 성능 평가 지표>
*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 죄가 있는 사람이 죄가 없다고 예측할 경우
어떤게 더 위험할까 '정밀도'가 더 중요하다고 생각한다.
'Python' 카테고리의 다른 글
Python - 머신러닝 모델 평가 [최종] (0) | 2022.10.17 |
---|---|
Python - 모델평가 함수 (0) | 2022.10.17 |
Python - 교차 검증 정리 (0) | 2022.10.17 |
Python - Hyperopt 교차검증 (0) | 2022.10.17 |
Python - 의사결정트리 타이타닉 생존자 예측 (0) | 2022.10.12 |