Maschinelles Lernen - Leistungsmetriken
Es gibt verschiedene Metriken, mit denen wir die Leistung von ML-Algorithmen, Klassifizierungs- und Regressionsalgorithmen bewerten können. Wir müssen die Metriken zur Bewertung der ML-Leistung sorgfältig auswählen, weil -
Wie die Leistung von ML-Algorithmen gemessen und verglichen wird, hängt vollständig von der von Ihnen gewählten Metrik ab.
Wie Sie die Wichtigkeit verschiedener Merkmale im Ergebnis gewichten, wird vollständig von der von Ihnen gewählten Metrik beeinflusst.
Leistungsmetriken für Klassifizierungsprobleme
Wir haben die Klassifizierung und ihre Algorithmen in den vorherigen Kapiteln erörtert. Hier werden verschiedene Leistungsmetriken erörtert, mit denen Vorhersagen für Klassifizierungsprobleme bewertet werden können.
Verwirrung Matrix
Dies ist der einfachste Weg, um die Leistung eines Klassifizierungsproblems zu messen, bei dem die Ausgabe aus zwei oder mehr Arten von Klassen bestehen kann. Eine Verwirrungsmatrix ist nichts anderes als eine Tabelle mit zwei Dimensionen, nämlich. "Tatsächlich" und "Vorausgesagt" und außerdem haben beide Dimensionen "True Positives (TP)", "True Negatives (TN)", "False Positives (FP)", "False Negatives (FN)", wie unten gezeigt -
Die mit der Verwirrungsmatrix verbundenen Begriffe werden wie folgt erläutert:
True Positives (TP) - Dies ist der Fall, wenn sowohl die tatsächliche Klasse als auch die vorhergesagte Klasse des Datenpunkts 1 ist.
True Negatives (TN) - Dies ist der Fall, wenn sowohl die tatsächliche Klasse als auch die vorhergesagte Klasse des Datenpunkts 0 sind.
False Positives (FP) - Dies ist der Fall, wenn die tatsächliche Datenpunktklasse 0 und die vorhergesagte Datenpunktklasse 1 ist.
False Negatives (FN) - Dies ist der Fall, wenn die tatsächliche Datenpunktklasse 1 und die vorhergesagte Datenpunktklasse 0 ist.
Wir können die Confusion_matrix-Funktion von sklearn.metrics verwenden, um die Confusion Matrix unseres Klassifizierungsmodells zu berechnen.
Klassifizierungsgenauigkeit
Es ist die häufigste Leistungsmetrik für Klassifizierungsalgorithmen. Es kann als die Anzahl der korrekten Vorhersagen definiert werden, die als Verhältnis aller gemachten Vorhersagen gemacht werden. Wir können es leicht durch Verwirrungsmatrix mit Hilfe der folgenden Formel berechnen -
$$ Genauigkeit = \ frac {TP + TN} {+++} $$Wir können die Genauigkeit_score-Funktion von sklearn.metrics verwenden, um die Genauigkeit unseres Klassifizierungsmodells zu berechnen.
Klassifizierungsbericht
Dieser Bericht besteht aus den Bewertungen Precisions, Recall, F1 und Support. Sie werden wie folgt erklärt -
Präzision
Präzision, die beim Abrufen von Dokumenten verwendet wird, kann als die Anzahl der korrekten Dokumente definiert werden, die von unserem ML-Modell zurückgegeben werden. Wir können es leicht durch Verwirrungsmatrix mit Hilfe der folgenden Formel berechnen -
$$ Präzision = \ frac {TP} {TP + FP} $$Rückruf oder Empfindlichkeit
Der Rückruf kann als die Anzahl der von unserem ML-Modell zurückgegebenen Positiven definiert werden. Wir können es leicht durch Verwirrungsmatrix mit Hilfe der folgenden Formel berechnen -
$$ Recall = \ frac {TP} {TP + FN} $$Spezifität
Die Spezifität kann im Gegensatz zum Rückruf als die Anzahl der von unserem ML-Modell zurückgegebenen Negative definiert werden. Wir können es leicht durch Verwirrungsmatrix mit Hilfe der folgenden Formel berechnen -
$$ Spezifität = \ frac {TN} {TN + FP} $$Unterstützung
Unterstützung kann als die Anzahl der Stichproben der tatsächlichen Antwort definiert werden, die in jeder Klasse von Zielwerten liegt.
F1-Punktzahl
Diese Punktzahl gibt uns das harmonische Mittel für Präzision und Erinnerung. Mathematisch gesehen ist die F1-Punktzahl der gewichtete Durchschnitt der Präzision und des Rückrufs. Der beste Wert von F1 wäre 1 und der schlechteste wäre 0. Wir können die F1-Punktzahl mit Hilfe der folgenden Formel berechnen:
= ∗ (∗) / (+)
Die F1-Punktzahl hat den gleichen relativen Beitrag von Präzision und Rückruf.
Wir können die Klassifizierungsbericht-Funktion von sklearn.metrics verwenden, um den Klassifizierungsbericht unseres Klassifizierungsmodells abzurufen.
AUC (Fläche unter der ROC-Kurve)
AUC (Area Under Curve) -ROC (Receiver Operating Characteristic) ist eine Leistungsmetrik, die auf variierenden Schwellenwerten für Klassifizierungsprobleme basiert. Wie der Name schon sagt, ist ROC eine Wahrscheinlichkeitskurve und AUC misst die Trennbarkeit. In einfachen Worten sagt uns die AUC-ROC-Metrik über die Fähigkeit des Modells, die Klassen zu unterscheiden. Je höher die AUC, desto besser das Modell.
Mathematisch kann es durch Auftragen von TPR (True Positive Rate), dh Empfindlichkeit oder Rückruf, gegen FPR (False Positive Rate), dh 1-Spezifität, bei verschiedenen Schwellenwerten erstellt werden. Das folgende Diagramm zeigt ROC, AUC mit TPR auf der y-Achse und FPR auf der x-Achse -
Wir können die Funktion roc_auc_score von sklearn.metrics verwenden, um AUC-ROC zu berechnen.
LOGLOSS (logarithmischer Verlust)
Es wird auch als logistischer Regressionsverlust oder Kreuzentropieverlust bezeichnet. Es wird im Wesentlichen anhand von Wahrscheinlichkeitsschätzungen definiert und misst die Leistung eines Klassifizierungsmodells, bei dem die Eingabe ein Wahrscheinlichkeitswert zwischen 0 und 1 ist. Es kann klarer verstanden werden, indem es mit Genauigkeit unterschieden wird. Wie wir wissen, ist Genauigkeit die Anzahl der Vorhersagen (vorhergesagter Wert = tatsächlicher Wert) in unserem Modell, während Log Loss die Unsicherheit unserer Vorhersage ist, basierend darauf, wie stark sie vom tatsächlichen Etikett abweicht. Mithilfe des Log Loss-Werts können wir die Leistung unseres Modells genauer anzeigen. Wir können die log_loss-Funktion von sklearn.metrics verwenden, um den Protokollverlust zu berechnen.
Beispiel
Das Folgende ist ein einfaches Rezept in Python, das uns einen Einblick gibt, wie wir die oben erläuterten Leistungsmetriken für das binäre Klassifizierungsmodell verwenden können -
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))
Ausgabe
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
Leistungsmetriken für Regressionsprobleme
Wir haben die Regression und ihre Algorithmen in früheren Kapiteln erörtert. Hier werden verschiedene Leistungsmetriken diskutiert, mit denen Vorhersagen für Regressionsprobleme bewertet werden können.
Mittlerer absoluter Fehler (MAE)
Dies ist die einfachste Fehlermetrik, die bei Regressionsproblemen verwendet wird. Es ist im Grunde die Summe des Durchschnitts der absoluten Differenz zwischen den vorhergesagten und den tatsächlichen Werten. Mit MAE können wir in einfachen Worten eine Vorstellung davon bekommen, wie falsch die Vorhersagen waren. MAE gibt nicht die Richtung des Modells an, dh keine Angabe über eine Underperformance oder Überperformance des Modells. Das Folgende ist die Formel zur Berechnung von MAE -
$$ MAE = \ frac {1} {n} \ sum | Y - \ hat {Y} | $$Hier = Ist-Ausgabewerte
Und $ \ hat {Y} $ = vorhergesagte Ausgabewerte.
Wir können die Funktion mean_absolute_error von sklearn.metrics verwenden, um MAE zu berechnen.
Mittlerer quadratischer Fehler (MSE)
MSE ist wie die MAE, aber der einzige Unterschied besteht darin, dass die Differenz zwischen tatsächlichen und vorhergesagten Ausgabewerten quadriert wird, bevor sie alle summiert werden, anstatt den absoluten Wert zu verwenden. Der Unterschied kann in der folgenden Gleichung festgestellt werden -
$$ MSE = \ frac {1} {n} \ sum (Y - \ hat {Y}) $$Hier = Ist-Ausgabewerte
Und $ \ hat {Y} $ = vorhergesagte Ausgabewerte.
Wir können die Funktion mean_squared_error von sklearn.metrics verwenden, um MSE zu berechnen.
R im Quadrat (R 2 )
R Die quadratische Metrik wird im Allgemeinen zu Erklärungszwecken verwendet und gibt einen Hinweis auf die Güte oder Anpassung eines Satzes vorhergesagter Ausgabewerte an die tatsächlichen Ausgabewerte. Die folgende Formel hilft uns, es zu verstehen -
$$ 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}} $$In der obigen Gleichung ist der Zähler MSE und der Nenner ist die Varianz der Werte.
Wir können die Funktion r2_score von sklearn.metrics verwenden, um den R-Quadrat-Wert zu berechnen.
Beispiel
Das Folgende ist ein einfaches Rezept in Python, das uns einen Einblick gibt, wie wir die oben erläuterten Leistungsmetriken für das Regressionsmodell verwenden können -
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))
Ausgabe
R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999