기계 학습-성능 지표

ML 알고리즘, 분류 및 회귀 알고리즘의 성능을 평가하는 데 사용할 수있는 다양한 메트릭이 있습니다. 다음과 같은 이유로 ML 성능을 평가하기위한 지표를 신중하게 선택해야합니다.

  • ML 알고리즘의 성능을 측정하고 비교하는 방법은 전적으로 선택한 메트릭에 따라 다릅니다.

  • 결과에서 다양한 특성의 중요성에 가중치를 부여하는 방법은 선택한 메트릭에 따라 완전히 영향을받습니다.

분류 문제에 대한 성능 메트릭

이전 장에서 분류와 그 알고리즘에 대해 논의했습니다. 여기에서는 분류 문제에 대한 예측을 평가하는 데 사용할 수있는 다양한 성능 메트릭에 대해 논의 할 것입니다.

혼동 매트릭스

출력이 둘 이상의 클래스 유형일 수있는 분류 문제의 성능을 측정하는 가장 쉬운 방법입니다. 혼동 행렬은 2 차원 즉, 표일뿐입니다. "실제"및 "예측"및 더 나아가 두 차원 모두 "참 양성 (TP)", "참 음성 (TN)", "거짓 양성 (FP)", "거짓 음성 (FN)"이 있습니다.

혼동 행렬과 관련된 용어에 대한 설명은 다음과 같습니다.

  • True Positives (TP) − 데이터 포인트의 실제 클래스와 예측 클래스가 모두 1 인 경우입니다.

  • True Negatives (TN) − 데이터 포인트의 실제 클래스와 예측 클래스가 모두 0 인 경우입니다.

  • False Positives (FP) − 데이터 포인트의 실제 클래스가 0이고 데이터 포인트의 예측 클래스가 1 인 경우입니다.

  • False Negatives (FN) − 데이터 포인트의 실제 클래스가 1이고 데이터 포인트의 예측 클래스가 0 인 경우입니다.

sklearn.metrics의 confusion_matrix 함수를 사용하여 분류 모델의 혼동 행렬을 계산할 수 있습니다.

분류 정확도

분류 알고리즘에 대한 가장 일반적인 성능 메트릭입니다. 모든 예측의 비율로 정확한 예측의 수로 정의 할 수 있습니다. 다음 공식을 사용하여 혼동 행렬로 쉽게 계산할 수 있습니다.

$$ Accuracy = \ frac {TP + TN} {+++} $$

sklearn.metrics의 precision_score 함수를 사용하여 분류 모델의 정확도를 계산할 수 있습니다.

분류 보고서

이 보고서는 정밀도, 재현율, F1 및 지원 점수로 구성됩니다. 그들은 다음과 같이 설명됩니다-

정도

문서 검색에 사용되는 정밀도는 ML 모델에서 반환 한 올바른 문서 수로 정의 될 수 있습니다. 다음 공식을 사용하여 혼동 행렬로 쉽게 계산할 수 있습니다.

$$ Precision = \ frac {TP} {TP + FP} $$

회상 또는 감도

재현율은 ML 모델이 반환하는 긍정 수로 정의 할 수 있습니다. 다음 공식을 사용하여 혼동 행렬로 쉽게 계산할 수 있습니다.

$$ Recall = \ frac {TP} {TP + FN} $$

특성

리콜과 달리 특이성은 ML 모델에서 반환 된 부정의 수로 정의 할 수 있습니다. 다음 공식을 사용하여 혼동 행렬로 쉽게 계산할 수 있습니다.

$$ Specificity = \ frac {TN} {TN + FP} $$

지원하다

지원은 각 대상 값 클래스에있는 실제 응답의 샘플 수로 정의 할 수 있습니다.

F1 점수

이 점수는 정밀도와 재현율의 조화 평균을 제공합니다. 수학적으로 F1 점수는 정밀도와 재현율의 가중 평균입니다. F1의 최고 값은 1이고 최악의 값은 0입니다. 다음 공식을 사용하여 F1 점수를 계산할 수 있습니다.

= ∗ (∗) / (+)

F1 점수는 정밀도와 재현율의 상대적 기여도가 동일합니다.

sklearn.metrics의 classification_report 함수를 사용하여 분류 모델의 분류 보고서를 가져올 수 있습니다.

AUC (ROC 곡선 아래 영역)

AUC (Area Under Curve) -ROC (Receiver Operating Characteristic)는 분류 문제에 대한 다양한 임계 값을 기반으로하는 성능 메트릭입니다. 이름에서 알 수 있듯이 ROC는 확률 곡선이고 AUC는 분리 가능성을 측정합니다. 간단히 말해서 AUC-ROC 메트릭은 클래스를 구분하는 모델의 기능에 대해 알려줍니다. AUC가 높을수록 모델이 더 좋습니다.

수학적으로 TPR (True Positive Rate), 즉 감도 또는 FPR (False Positive Rate) 대 FPR (False Positive Rate), 즉 1-Specificity를 다양한 임계 값에서 플로팅하여 생성 할 수 있습니다. 다음은 ROC, AUC가 y 축에 TPR을, FPR을 x 축에 표시 한 그래프입니다.

sklearn.metrics의 roc_auc_score 함수를 사용하여 AUC-ROC를 계산할 수 있습니다.

LOGLOSS (로그 손실)

로지스틱 회귀 손실 또는 교차 엔트로피 손실이라고도합니다. 기본적으로 확률 추정치에 정의되어 입력이 0과 1 사이의 확률 값인 분류 모델의 성능을 측정합니다. 정확도로 미분하면 더 명확하게 이해할 수 있습니다. 정확도는 모델의 예측 수 (예측 값 = 실제 값) 인 반면 로그 손실은 실제 레이블과 얼마나 다른지에 따라 예측의 불확실성의 양입니다. Log Loss 값의 도움으로 모델의 성능을보다 정확하게 볼 수 있습니다. sklearn.metrics의 log_loss 함수를 사용하여 로그 손실을 계산할 수 있습니다.

다음은 이진 분류 모델에서 위에서 설명한 성능 메트릭을 사용할 수있는 방법에 대한 통찰력을 제공하는 Python의 간단한 레시피입니다.

from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))

산출

Confusion Matrix :
[
   [3 3]
   [1 3]
]
Accuracy Score is 0.6
Classification Report :
            precision      recall      f1-score       support
      0       0.75          0.50      0.60           6
      1       0.50          0.75      0.60           4
micro avg     0.60          0.60      0.60           10
macro avg     0.62          0.62      0.60           10
weighted avg  0.65          0.60      0.60           10
AUC-ROC:  0.625
LOGLOSS Value is 13.815750437193334

회귀 문제에 대한 성능 메트릭

이전 장에서 회귀와 그 알고리즘에 대해 논의했습니다. 여기서는 회귀 문제에 대한 예측을 평가하는 데 사용할 수있는 다양한 성능 메트릭에 대해 논의 할 것입니다.

평균 절대 오차 (MAE)

회귀 문제에 사용되는 가장 간단한 오류 측정 항목입니다. 기본적으로 예측 값과 실제 값 사이의 절대 차이의 평균 합계입니다. 간단히 말해서 MAE를 사용하면 예측이 얼마나 잘못되었는지 알 수 있습니다. MAE는 모델의 방향을 나타내지 않습니다. 즉, 모델의 성능 저하 또는 과잉 성능에 대한 표시가 없습니다. 다음은 MAE를 계산하는 공식입니다-

$$ MAE = \ frac {1} {n} \ sum | Y-\ hat {Y} | $$

여기서 = 실제 출력 값

그리고 $ \ hat {Y} $ = 예측 출력 값.

sklearn.metrics의 mean_absolute_error 함수를 사용하여 MAE를 계산할 수 있습니다.

평균 제곱 오차 (MSE)

MSE는 MAE와 비슷하지만, 유일한 차이점은 절대 값을 사용하는 대신 모두 합산하기 전에 실제 및 예측 출력 값의 차이를 제곱한다는 것입니다. 차이는 다음 방정식에서 확인할 수 있습니다.

$$ MSE = \ frac {1} {n} \ sum (Y-\ hat {Y}) $$

여기서 = 실제 출력 값

그리고 $ \ hat {Y} $ = 예측 된 출력 값.

sklearn.metrics의 mean_squared_error 함수를 사용하여 MSE를 계산할 수 있습니다.

R 제곱 (R 2 )

R 제곱 메트릭은 일반적으로 설명 목적으로 사용되며 예측 된 출력 값 집합이 실제 출력 값에 맞는지 여부를 나타냅니다. 다음 공식은 우리가 그것을 이해하는 데 도움이 될 것입니다.

$$ R ^ {2} = 1-\ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i}-\ hat {Y_ {i}}) ^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i}-\ bar {Y_i) ^ 2}} $$

위의 방정식에서 분자는 MSE이고 분모는 값의 분산입니다.

sklearn.metrics의 r2_score 함수를 사용하여 R 제곱 값을 계산할 수 있습니다.

다음은 회귀 모델에서 위에서 설명한 성능 메트릭을 사용할 수있는 방법에 대한 통찰력을 제공하는 Python의 간단한 레시피입니다.

from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))

산출

R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999