기계 학습-성능 지표
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