Uczenie maszynowe - wskaźniki wydajności

Istnieją różne metryki, których możemy użyć do oceny wydajności algorytmów ML, klasyfikacji oraz algorytmów regresji. Musimy uważnie wybierać metryki do oceny wydajności ML, ponieważ -

  • Sposób mierzenia i porównywania wydajności algorytmów ML będzie całkowicie zależał od wybranej metryki.

  • To, jak zważycie znaczenie różnych cech w wyniku, będzie całkowicie zależało od wybranej metryki.

Wskaźniki wydajności dla problemów klasyfikacyjnych

Omówiliśmy klasyfikację i jej algorytmy w poprzednich rozdziałach. Tutaj omówimy różne metryki wydajności, których można użyć do oceny prognoz dotyczących problemów klasyfikacyjnych.

Macierz zamieszania

Jest to najłatwiejszy sposób pomiaru wydajności problemu klasyfikacji, w którym wynik może składać się z dwóch lub więcej typów klas. Macierz zamieszania to nic innego jak stół o dwóch wymiarach, a mianowicie. „Rzeczywiste” i „Przewidywane”, a ponadto oba wymiary mają „Prawdziwie pozytywne (TP)”, „Prawdziwie negatywne (TN)”, „Fałszywie dodatnie (FP)”, „Fałszywie negatywne (FN)”, jak pokazano poniżej -

Wyjaśnienie terminów związanych z matrycą nieporozumień jest następujące -

  • True Positives (TP) - Dzieje się tak, gdy zarówno aktualna klasa, jak i przewidywana klasa punktu danych to 1.

  • True Negatives (TN) - Dzieje się tak, gdy zarówno aktualna klasa, jak i przewidywana klasa punktu danych to 0.

  • False Positives (FP) - Tak jest w przypadku, gdy aktualna klasa punktu danych to 0, a przewidywana klasa punktu danych to 1.

  • False Negatives (FN) - Tak jest w przypadku, gdy aktualna klasa punktu danych to 1, a przewidywana klasa punktu danych to 0.

Możemy użyć funkcji confusion_matrix sklearn.metrics do obliczenia macierzy konfuzji naszego modelu klasyfikacji.

Dokładność klasyfikacji

Jest to najczęściej stosowany wskaźnik wydajności algorytmów klasyfikacyjnych. Można go zdefiniować jako liczbę prawidłowych prognoz wykonanych jako stosunek wszystkich dokonanych prognoz. Możemy go łatwo obliczyć za pomocą macierzy pomyłki za pomocą następującego wzoru -

$$ Dokładność = \ frac {TP + TN} {+++} $$

Aby obliczyć dokładność naszego modelu klasyfikacji, możemy użyć funkcji dokładności_score sklearn.metrics.

Raport klasyfikacyjny

Ten raport składa się z wyników Precisions, Recall, F1 i Support. Są wyjaśnione w następujący sposób -

Precyzja

Precyzja wykorzystywana przy pobieraniu dokumentów może być zdefiniowana jako liczba poprawnych dokumentów zwróconych przez nasz model ML. Możemy go łatwo obliczyć za pomocą macierzy pomyłki za pomocą następującego wzoru -

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

Przypomnienie lub wrażliwość

Recall można zdefiniować jako liczbę pozytywów zwróconych przez nasz model ML. Możemy go łatwo obliczyć za pomocą macierzy pomyłki za pomocą następującego wzoru -

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

Specyficzność

Specyficzność, w przeciwieństwie do przypominania, można zdefiniować jako liczbę negatywów zwróconych przez nasz model ML. Możemy go łatwo obliczyć za pomocą macierzy pomyłki za pomocą następującego wzoru -

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

Wsparcie

Wsparcie można zdefiniować jako liczbę próbek prawdziwej odpowiedzi, która znajduje się w każdej klasie wartości docelowych.

Wynik F1

Ta partytura da nam harmoniczną średnią precyzji i pamięci. Matematycznie, wynik F1 jest średnią ważoną precyzji i powtarzalności. Najlepsza wartość F1 to 1, a najgorsza 0. Możemy obliczyć wynik F1 za pomocą następującego wzoru -

= ∗ (∗) / (+)

Wynik F1 ma równy względny wpływ na precyzję i pamięć.

Możemy użyć funkcji Classification_report funkcji sklearn.metrics, aby uzyskać raport klasyfikacyjny naszego modelu klasyfikacyjnego.

AUC (obszar pod krzywą ROC)

AUC (obszar pod krzywą) -ROC (charakterystyka działania odbiornika) jest miarą wydajności, opartą na różnych wartościach progowych, dla problemów klasyfikacyjnych. Jak sugeruje nazwa, ROC jest krzywą prawdopodobieństwa, a AUC jest miarą rozdzielności. W prostych słowach metryka AUC-ROC powie nam o zdolności modelu do rozróżniania klas. Im wyższa wartość AUC, tym lepszy model.

Matematycznie, można go utworzyć, wykreślając TPR (wskaźnik prawdziwie dodatnich), tj. Czułość lub przywołanie względem FPR (wskaźnik fałszywie dodatnich), tj. 1-specyficzność, przy różnych wartościach progowych. Poniżej znajduje się wykres przedstawiający ROC, AUC z TPR na osi y i FPR na osi x -

Możemy użyć funkcji roc_auc_score sklearn.metrics do obliczenia AUC-ROC.

LOGLOSS (strata logarytmiczna)

Nazywa się to również utratą regresji logistycznej lub utratą krzyżowej entropii. Zasadniczo definiuje się go na szacunkach prawdopodobieństwa i mierzy wydajność modelu klasyfikacyjnego, w którym dane wejściowe mają wartość prawdopodobieństwa z zakresu od 0 do 1. Można to lepiej zrozumieć, różnicując je z dokładnością. Jak wiemy, dokładność to liczba prognoz (wartość przewidywana = wartość rzeczywista) w naszym modelu, podczas gdy strata logarytmiczna to wielkość niepewności naszej prognozy na podstawie tego, jak bardzo różni się ona od faktycznej etykiety. Z pomocą wartości Log Loss możemy mieć dokładniejszy obraz wydajności naszego modelu. Możemy użyć funkcji log_loss sklearn.metrics do obliczenia utraty logów.

Przykład

Poniżej znajduje się prosta recepta w Pythonie, która da nam wgląd w to, jak możemy wykorzystać wyżej wyjaśnione metryki wydajności w binarnym modelu klasyfikacji -

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))

Wynik

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

Wskaźniki wydajności dla problemów regresji

Omówiliśmy regresję i jej algorytmy w poprzednich rozdziałach. Tutaj omówimy różne metryki wydajności, których można użyć do oceny prognoz dotyczących problemów z regresją.

Średni błąd bezwzględny (MAE)

Jest to najprostsza miara błędu używana w problemach regresji. Jest to w zasadzie suma średniej bezwzględnej różnicy między wartościami przewidywanymi i rzeczywistymi. W prostych słowach dzięki MAE możemy zorientować się, jak błędne były przewidywania. MAE nie wskazuje kierunku modelu, tj. Nie wskazuje na gorsze lub nadmierne osiąganie modelu. Poniżej znajduje się wzór do obliczenia MAE -

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

Tutaj = Rzeczywiste wartości wyjściowe

I $ \ hat {Y} $ = Przewidywane wartości wyjściowe.

Możemy użyć funkcji mean_absolute_error w sklearn.metrics do obliczenia MAE.

Błąd średniokwadratowy (MSE)

MSE jest podobne do MAE, ale jedyną różnicą jest to, że przed zsumowaniem ich wszystkich zsumuje różnicę rzeczywistych i przewidywanych wartości wyjściowych zamiast używać wartości bezwzględnej. Różnicę można zauważyć w następującym równaniu -

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

Tutaj = Rzeczywiste wartości wyjściowe

I $ \ hat {Y} $ = Przewidywane wartości wyjściowe.

Możemy użyć funkcji mean_squared_error w sklearn.metrics do obliczenia MSE.

R do kwadratu (R 2 )

Metryka R-kwadrat jest zwykle używana do celów wyjaśniających i zapewnia wskazanie dobroci lub dopasowania zestawu przewidywanych wartości wyjściowych do rzeczywistych wartości wyjściowych. Poniższa formuła pomoże nam to zrozumieć -

$$ 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}} $$

W powyższym równaniu licznikiem jest MSE, a mianownikiem wariancja wartości.

Możemy użyć funkcji r2_score sklearn.metrics do obliczenia wartości R do kwadratu.

Przykład

Poniżej znajduje się prosty przepis w Pythonie, który da nam wgląd w to, jak możemy wykorzystać wyżej wyjaśnione metryki wydajności w modelu regresji -

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))

Wynik

R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999