코알못

파이썬 머신러닝 완벽 가이드 - 3장 본문

PYTHON

파이썬 머신러닝 완벽 가이드 - 3장

코린이s 2020. 11. 8. 10:42
728x90

3장 - 평가

# 모델에 따른 평가 방법

- 회귀 : 예측 값의 오차의 정도 (정확도, 오차)

- 분류 : 회귀와 동일하게 평가 할 수 있지만 연속적인 값이 아닌 한정된 값(0 or 1 / True or False) 이기에 정확도로 판단했다가는 잘못된 평가가 될 수 있음.

# 평가 성능 지표 종류

- 정확도(Accuracy)

- 오차 행렬(Confusion Matrix)

- 정밀도(Precision)

- 재현율(Recall)

- F1 스코어

- ROC AUC

# 평가 성능 지표 정의

평가 성능 지표 설명 비고
정확도(Accuracy) - 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수
- 특정 결과 값 True가 몰려있고 정답을 무조건 True 로 나오도록 한다면 정확도가 높을 것이다. (잘못된 평가)
 
오차 행렬(Confusion Matrix) - 어떤 유형에 얼마나 오차가 있는지 보는 방법
- 암 환자 예측 예시에서의 설명
> TN : 실제 비 암환자를 비 암환자로 예측 건수
FP : 실제 비 암환자를 암 환자로 예측 건수
FN : 실제 암환자를 비 암환자로 예측 건수
TP : 실제 암환자를 암환자로 예측 건수(해당 예제에서는 TP값이 매우 중요)
정밀도(Precision) - 암환자를 암환자로 예측 비율 
- 양성 예측도 라고도 불림
- 정밀도만 높거나 , 재현율만 높다고 좋은 것이 아님. 
- 둘 다 높아야 좋은 수치 > F1 스코어로 측정
재현율(Recall) - 암환자로 예측 했을 시 실제 암환자일 비율
- 민감도, TPR(True Positive Rate) 라고도 불림
F1 스코어 - 정밀도, 재현율이 한쪽으로 치우치지 않는 수치
- 비슷할 수록 1에 가까움
 
ROC AUC - ROC 곡선
> FPR을 변화시 TPR 변화 측정
- ROC 곡선 아래 면적이 AUC
> AUC는 1에 가까울 수록 좋다.
> 아래 면적이 1이라는 건, TPR일 확률이 높다는 말.
- TPR(True Positive Rate)
= 암환자로 예측 했을 시 실제 암환자일 비율
FPR (False Positive Rate)
= 암환자로 예측 했을 시 실제 비 암환자일 비율


# 평가 성능 지표 사용법

from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, f1_score, confusion_matrix

1) 정확도

# y_test 는 정답 데이터(0 or 1) , pred 는 예측 데이터(0 or 1)
accuracy = accuracy_score(y_test, pred)

2) 오차 행렬

# y_test 는 정답 데이터(0 or 1) , pred 는 예측 데이터(0 or 1)
confusion = confusion_matrix(y_test, pred)

3) 정밀도

# y_test 는 정답 데이터(0 or 1) , pred 는 예측 데이터(0 or 1)
precision = precision_score(y_test, pred)

4) 재현율

# y_test 는 정답 데이터(0 or 1) , pred 는 예측 데이터(0 or 1)
recall = recall_score(y_test, pred)

5) F1 스코어

# y_test 는 정답 데이터(0 or 1) , pred 는 예측 데이터(0 or 1)
f1 = f1_score(y_test, pred)

6) AUC 면적

# x_test 는 테스트 입력 데이터
# [:,1] : 모든 행의 2번째 열의 값만 추출 (암환자로 예측할 확률)
model = LogisticRegression()
pred_proba = model.predict_proba(x_test)[:,1]

# y_test 는 정답 데이터(0 or 1) , pred_proba는 암환자로 예측 확률
roc_auc = roc_auc_score(y_test, pred_proba)

# 피마 인디언 당뇨병 예측 예시

:: github.com/works-code/Python-Machine-Learning-Complete-Guide/blob/main/3_Evaluate.ipynb

 

works-code/Python-Machine-Learning-Complete-Guide

Python-Machine-Learning-Complete-Guide. Contribute to works-code/Python-Machine-Learning-Complete-Guide development by creating an account on GitHub.

github.com

 

728x90
Comments