머신러닝/인프런

분류

stop0729 2021. 3. 1. 00:48

성능 평가 지표

 

1. 정확도(accuracy) :

예측결과가 동일한 건수/ 전체 예측 데이터 건수

불균형한 분포의 모델 성능은 판별하기 힘들다

 

오차행렬 :

TN TP

FN FP

 

891명의 타이타닉 승객중 20%인 179명은 Test 데이터가 됨

그리고 179명에 pred를 실행후 confusion_matrix 를 적용한 결과는 이리 나온다.

 

[[104, 14]

 [13,   48]]

 

1열은 0이라 예측, 즉 죽었다고 예측. 2열은 살았다고 예측.

1행은 실제 죽은 사람의 수. 2행은 실제 산 사람의 수.

 

1행 1열은 죽었다는 예측을 했고 실제 죽은 사람의 수 = True Negative

1행 2열은 살았다고 예측했지만 죽은 사람의 수 = False Negative

2행 1열은 죽었다고 예측했지만 산 사람의 수 = False Positive

2행 2열은 살았다고 예측했고 산 사람의 수 = True Positive

 

2. 정밀도(precision)

TP / (TP+NP)

스팸메일

 

 

3. 재현율

TP / (TP+FN)

암 진단,

 

pred_proba : 

 

사이킷런의 분류 알고리즘은 예측 데이터가 특정 레이블에 속하는지 판단하기 위해 개별 레이블별로 확률을 구하고, 그 확률이 큰 레이블 값으로 예측

  • 일반적으로는 임계값을 50%로 정하고 이보다 크면 Positive, 작으면 Negative로 결정
  • predict_proba( ) 를 통하여 개별 레이블별 예측확률을 반환받을 수 있음

pred_proba를 실행하면 아래 1열과 2열 같은 Negative와 True의 확률이 나옴. 3열은 확률에 따른 label값

 

[[0.44935227 0.55064773 1. ]

 [0.86335512 0.13664488 0. ]

 [0.86429645 0.13570355 0. ]]

 

 

 

from sklearn.preprocessing import Binarizer :

 

연속형 변수를 특정 기준값 이하(equal or less the threshold)이면 '0', 특정 기준값 초과(above the threshold)이면 '1'의 두 개의 값만을 가지는 변수로 변환하는 방법

 

기본 pred_proba()는 라벨의 확률이 0.5 이상인것을 반환해주는데, 1라벨의 확률만을 뽑아내서 Binarizer의 threshold 값을 자유롭게 맞춰놓고 변환할수도 있다. threshold 값에 따라 재현율 정확도 정밀도 전부 변한다. threshold 값 감소 -> 1예측 증가 하기 떄문성능 평가 지표

 

 

 

1. 정확도(accuracy) :

 

예측결과가 동일한 건수/ 전체 예측 데이터 건수

 

불균형한 분포의 모델 성능은 판별하기 힘들다

 

 

 

오차행렬 :

 

TN TP

 

FN FP

 

 

 

891명의 타이타닉 승객중 20%인 179명은 Test 데이터가 됨

 

그리고 179명에 pred를 실행후 confusion_matrix 를 적용한 결과는 이리 나온다.

 

 

 

[[104, 14]

 

 [13, 48]]

 

 

 

1열은 0이라 예측, 즉 죽었다고 예측. 2열은 살았다고 예측.

 

1행은 실제 죽은 사람의 수. 2행은 실제 산 사람의 수.

 

 

 

1행 1열은 죽었다는 예측을 했고 실제 죽은 사람의 수 = True Negative

 

1행 2열은 살았다고 예측했지만 죽은 사람의 수 = False Negative

 

2행 1열은 죽었다고 예측했지만 산 사람의 수 = False Positive

 

2행 2열은 살았다고 예측했고 산 사람의 수 = True Positive

 

 

 

2. 정밀도(precision)

 

TP / (TP+NP)

 

스팸메일

 

 

 

 

 

3. 재현율(recall) = 민감도

 

TP / (TP+FN)

 

암 진단,

 

 

 

pred_proba : 

 

 

 

사이킷런의 분류 알고리즘은 예측 데이터가 특정 레이블에 속하는지 판단하기 위해 개별 레이블별로 확률을 구하고, 그 확률이 큰 레이블 값으로 예측

 

일반적으로는 임계값을 50%로 정하고 이보다 크면 Positive, 작으면 Negative로 결정

predict_proba( ) 를 통하여 개별 레이블별 예측확률을 반환받을 수 있음

pred_proba를 실행하면 아래 1열과 2열 같은 Negative와 True의 확률이 나옴. 3열은 확률에 따른 label값

 

 

 

[[0.44935227 0.55064773 1. ]

 

 [0.86335512 0.13664488 0. ]

 

 [0.86429645 0.13570355 0. ]]

 

 

 

 

 

 

 

from sklearn.preprocessing import Binarizer :

 

 

 

연속형 변수를 특정 기준값 이하(equal or less the threshold)이면 '0', 특정 기준값 초과(above the threshold)이면 '1'의 두 개의 값만을 가지는 변수로 변환하는 방법

 

 

 

 

기본 pred_proba()는 라벨의 확률이 0.5 이상인것을 반환해주는데, 1라벨의 확률만을 뽑아내서 Binarizer의 threshold 값을 자유롭게 맞춰놓고 변환할수도 있다. threshold 값에 따라 재현율 정확도 정밀도 전부 변한다. threshold 값 감소 -> 1예측 증가 하기 떄문

 

 

 

 

4. F1 스코어

정밀도와 재현율을 결합한 지표로 정밀도와 재현율이 어느 한 쪽으로 치우치지 않을 때 상대적으로 높은 값을 가짐

F1=2/(1/recall+1/precision) =2∗(precisionrecall)/(precision+recall)

 

5. ROC AUC

ROC곡선 : FPR(False Positive Rate)이 변할 때 TPR(True Positive Rate)이 어떻게 변하는지를 나타내는 곡선

 

TPR : 재현율, 민감도

TNR : 특이성

 

AUC 는 곡선 아래 면적. 전체 면적 크기는 1. AUC가 높을수록 좋음

 

'머신러닝 > 인프런' 카테고리의 다른 글

feature selection  (0) 2021.03.28
부스팅  (0) 2021.03.11
전처리  (0) 2021.02.28
검증  (0) 2021.02.28
kfold 교차검증에서  (0) 2021.02.26