[PYTHON] Zusammenfassung der beim maschinellen Lernen verwendeten Bewertungsfunktionen

Einführung

Ich hatte ein vages Verständnis der Bewertungsfunktion (Bewertungsindex) und fasste die typischen Bewertungsfunktionen zusammen. Hier finden Sie eine kurze Zusammenfassung der Bewertungsfunktionen, der Bedeutung der einzelnen Bewertungsfunktionen und des Beispielcodes bei der tatsächlichen Verwendung.

Was ist eine Bewertungsfunktion?

Die Bewertungsfunktion ist ** ein Index, der die Güte des trainierten Modells misst **.

Unterschied zur Zielfunktion

Wenn Sie maschinelles Lernen studieren, sehen Sie verschiedene Namen wie Zielfunktion, Verlustfunktion und Kostenfunktion. Lassen Sie uns zunächst den Unterschied zur Zielfunktion überprüfen.

--Zielfunktion

Mit anderen Worten, die Zielfunktion wird während des Lernens optimiert, und die Bewertungsfunktion ist der Index zur Bestätigung der Güte nach dem Lernen.

Die Verlustfunktion, die Kostenfunktion und die Fehlerfunktion sollen Teil der Zielfunktion sein. (Es scheint einige Kontroversen zu geben, aber es scheint, dass Sie sich das fast gleich vorstellen können.)

Rückkehr

Zunächst werde ich die Bewertungsfunktion des Regressionsproblems zusammenfassen.

MAE(Mean Absolute Error)

Durchschnittlicher absoluter Fehler. Stellt den Durchschnitt der absoluten Werte der Differenz zwischen dem wahren Wert und dem vorhergesagten Wert dar.

\textrm{MAE} = \frac{1}{N}\sum_{i=1}^{N}|y_{i}-\hat{y}_{i}|
N :Anzahl der Datensätze\\
y_{i} :Wahrer Wert des i-ten Datensatzes\\
\hat{y}_{i} :Voraussichtlicher Wert des i-ten Datensatzes
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_true, y_pred)

MSE(Mean Squared Error)

Durchschnittlicher quadratischer Fehler. Stellt den quadratischen Durchschnitt der Differenz zwischen dem wahren Wert und dem vorhergesagten Wert dar.

\textrm{MSE} = \frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y}_{i})^{2}
from sklearn.metrics import mean_squared_error
mean_squared_error(y_true, y_pred)

RMSE(Root Mean Squared Error)

Durchschnittlicher quadratischer Fehler. Stellt den quadratischen Durchschnitt der Differenz zwischen dem wahren Wert und dem vorhergesagten Wert dar.

\textrm{RMSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y}_{i})^{2}}

Es kann nicht direkt mit dem Scikit-Lernmodul berechnet werden, daher muss es aus "mean_squared_error" berechnet werden.

from sklearn.metrics import mean_squared_error
from numpy as np
np.sqrt(mean_squared_error(y_true, y_pred))

RMSLE(Root Mean Squared Logarithmic Error)

Es stellt den Durchschnitt der quadratischen Differenz dar, nachdem der logarithmische Wert des wahren Wertes und des vorhergesagten Wertes genommen wurde.

\textrm{RMSLE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(\log (1+y_{i})-\log (1+\hat{y}_{i}))^{2}}
from sklearn.metrics import mean_squared_log_error
from numpy as np
np.sqrt(mean_squared_log_error(y_true, y_pred))

Entscheidungskoeffizient

\textrm{R}^{2}。 Es zeigt die Güte der Anpassung der Regressionsanalyse.

\textrm{R}^{2} = 1 - \frac{\sum_{i=1}^{N}(y_{i}-\hat{y_{i}})^{2}}{\sum_{i=1}^{N}(y_{i}-\bar{y_{i}})^{2}}
\bar{y} = \frac{1}{N}\sum_{i=1}^{N}y_{i}
from sklearn.metrics import r2_score
r2_score(y_true, y_pred)

Binäre Klassifizierung (bei der Vorhersage positiver oder negativer Fälle)

Im Klassifizierungsproblem werden wir die Bewertungsfunktionen zusammenfassen, die im Problem der Vorhersage behandelt werden, ob es sich um ein positives oder ein negatives Beispiel handelt.

Gemischte Matrix

Obwohl es sich nicht um einen Bewertungsindex handelt, wird er als Bewertungsindex für die Vorhersage positiver und negativer Fälle verwendet. Ich werde ihn daher zunächst erläutern.

Die gemischte Matrix tabelliert die folgenden Klassifizierungsergebnisse.

--TP (True Positive): Das richtige Beispiel richtig vorhersagen --TN (True Negative): Negative Beispiele richtig vorhersagen --FP (False Positive): Wird als positives Beispiel vorhergesagt --FN (False Negative): Falsch als negatives Beispiel vorhergesagt

from sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred)

Es wird im folgenden Format ausgegeben.

Der vorhergesagte Wert ist negativ Der vorhergesagte Wert ist ein positives Beispiel
Der wahre Wert ist ein negatives Beispiel TN FP
Der wahre Wert ist ein positives Beispiel FN TP

Accuracy

Richtige Antwortrate. Die Prognose repräsentiert den korrekten Prozentsatz des gesamten Prognoseergebnisses.

Richtige Antwortrate(\textrm{Accuracy}) = \frac{TP + TN}{TP + TN + FP + FN}
from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)

Precision

Konformitätsrate. Zeigt den Prozentsatz der vorhergesagten korrekten Beispiele an.

Compliance-Rate(\textrm{Precision}) = \frac{TP}{TP + FP}
from sklearn.metrics import precision_score
precision_score(y_true, y_pred)

Recall

Erinnern. Stellt den Prozentsatz der vorhergesagten korrekten Beispiele dar.

Erinnern(\textrm{Recall}) = \frac{TP}{TP + FN}
from sklearn.metrics import recall_score
recall_score(y_true, y_pred)

F1-score

F-Wert. Stellt einen ausgewogenen Index für Präzision und Rückruf dar.

Sie wird anhand des harmonisierten Durchschnitts aus Präzision und Rückruf berechnet.

\textrm{F1-score} = \frac{2 \times \textrm{recall} \times \textrm{precision}}{\textrm{recall} + \textrm{precision}}
from sklearn.metrics import f1_score
f1_score(y_true, y_pred)

Binäre Klassifizierung (bei der Vorhersage der Wahrscheinlichkeit, ein positives Beispiel zu sein)

Als nächstes werden wir die Bewertungsfunktionen zusammenfassen, die im Problem der Vorhersage der Wahrscheinlichkeit behandelt werden, was ein positives Beispiel für das Klassifizierungsproblem ist.

logloss

Manchmal auch als Kreuzentropie bezeichnet. Es zeigt, wie sehr die vorhergesagte Wahrscheinlichkeitsverteilung und die korrekte Wahrscheinlichkeitsverteilung gleich sind.

\begin{align}
\textrm{logloss} &= -\frac{1}{N}\sum_{i=1}^{N}(y_{i}\log p_{i} + (1 - y_{i} \log (1 - p_{i}))) \\
&=-\frac{1}{N}\sum_{i=1}^{N} \log \acute{p}_{i}
\end{align}
y_{i} :Beschriftung, die angibt, ob es sich um ein korrektes Beispiel handelt\\
p_{i} :Vorhersagewahrscheinlichkeit, die ein positives Beispiel ist\\
\acute{p}_{i} :Wahrscheinlichkeit der Vorhersage des wahren Wertes
from sklearn.metrics import log_loss
log_loss(y_true, y_prob)

AUC

Stellt den Bereich am unteren Rand der ROC-Kurve dar.

from sklearn.metrics import roc_auc_score
roc_acu_score(y_true, y_prob)

Was ist eine ROC-Kurve?

Es ist ein Diagramm, das die Beziehung zwischen der wahr-positiven Rate und der falsch-positiven Rate darstellt, wenn der Schwellenwert mit dem vorhergesagten Wert als positivem Beispiel von 0 auf 1 verschoben wird. Es zeigt, wie sich die wahre positive Rate und die falsche positive Rate ändern, wenn der Schwellenwert geändert wird.

image.png

Klassifizierung mehrerer Klassen

Multi-class accuracy

Es ist ein Index, der die Genauigkeit der binären Klassifizierung auf die Klassifizierung mehrerer Klassen erweitert. Stellt den Prozentsatz der Datensätze dar, die korrekt vorhergesagt wurden.

from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)

mean-F1/macro-F1/micro-F1

Es ist ein Index, der den F1-Score auf die Klassifizierung mehrerer Klassen erweitert.

--mean-F1: Durchschnitt der F1-Punktzahl pro Datensatz --macro-F1: Durchschnitt der F1-Punktzahl für jede Klasse --micro-F1: Berechnen Sie TP / TN / FP / FN für jedes Datensatz-x-Klassenpaar, um den F1-Score zu berechnen

from sklearn.metrics import f1_score
f1_score(y_true, y_pred, average='samples')
f1_score(y_true, y_pred, average='macro')
f1_score(y_true, y_pred, average='micro')

Multi-class logloss

Es ist ein Index, der den Protokollverlust der binären Klassifizierung auf die Klassifizierung mehrerer Klassen erweitert.

\textrm{multiclass logloss} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{m=1}^{M}y_{i,m}\log p_{i,m}
M :Anzahl der Klassen\\
y_{i,m} :Beschriftung, die angibt, ob Datensatz i zur Klasse m gehört\\
p_{i,m} :Voraussichtliche Wahrscheinlichkeit, dass Datensatz i zur Klasse m gehört\\
from sklearn.metrics import log_loss
log_loss(y_true, y_prob)

Referenz

Nachtrag

** Hinzugefügt am 25. Juni 2020 ** Die Tabelle der gemischten Matrix war falsch, deshalb habe ich sie korrigiert. Vielen Dank, @Fizunimo.

Recommended Posts

Zusammenfassung der beim maschinellen Lernen verwendeten Bewertungsfunktionen
Vollständige Offenlegung der beim maschinellen Lernen verwendeten Methoden
Wird in EDA für maschinelles Lernen verwendet
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
Zusammenfassung der häufig verwendeten Methoden bei Pandas
Zusammenfassung der häufig verwendeten Befehle in matplotlib
[Python] Techniken, die häufig beim maschinellen Lernen verwendet werden
[Maschinelles Lernen] Liste der häufig verwendeten Pakete
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Zusammenfassung dessen, was bei 100 Pandas-Schlägen verwendet wurde (# 1 ~ # 32)
Verwendung von rekursiven Funktionen, die bei Wettbewerbsprofis verwendet werden
Zusammenfassung der in Command Line Vol.8 verwendeten Tools
Zusammenfassung der in Command Line Vol.5 verwendeten Tools
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Liste der wichtigsten Wahrscheinlichkeitsverteilungen, die beim maschinellen Lernen und in der Statistik verwendet werden, sowie Code in Python
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Grundlagen des maschinellen Lernens (Denkmal)
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Zusammenfassung der Artikel zum maschinellen Lernen (selbst verfasst)
Bedeutung von Datensätzen für maschinelles Lernen
Maschinelles Lernen ④ K-nächster Nachbar Zusammenfassung
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Umfrage zum Einsatz von maschinellem Lernen in realen Diensten
Zusammenfassung zum Schreiben von in gRPC verwendeten .proto-Dateien
Die Zusammenfassung des maschinellen Lernens in Python für Anfänger ist sehr kurz.
Zusammenfassung des maschinellen Lernens von Python-Anfängern
Automatisieren Sie Routineaufgaben beim maschinellen Lernen
Zusammenfassung verschiedener Operationen in Tensorflow
Klassifikation und Regression beim maschinellen Lernen
Zusammenfassung der häufig verwendeten Grammatik bei Pandas
Maschinelles Lernen in Delemas (Datenerfassung)
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
Vorverarbeitung beim maschinellen Lernen 2 Datenerfassung
[Anaconda3] Zusammenfassung häufig verwendeter Befehle
Random Seed Research im maschinellen Lernen
Vorverarbeitung beim maschinellen Lernen 4 Datenkonvertierung
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex5 (Anpassung der Regularisierungsparameter)
Algorithmus für maschinelles Lernen (Verallgemeinerung der linearen Regression)
scikit-learn Verwendung der Zusammenfassung (maschinelles Lernen)
Zusammenfassung der häufig verwendeten Befehle von Django (Anfänger)
[Linux] Liste der in der Praxis verwendeten Linux-Befehle
Zusammenfassung verschiedener for-Anweisungen in Python
"Python Machine Learning Programming" - Zusammenfassung (Jupyter)
2020 Empfohlen 20 Auswahlmöglichkeiten für einführende Bücher zum maschinellen Lernen
Zusammenfassung der Numpy-Funktionen, die ich nicht kannte
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Algorithmus für maschinelles Lernen (Implementierung einer Klassifizierung mit mehreren Klassen)
Module häufig verwendeter Funktionen in Python (z. B. Lesen externer Dateien)
Zusammenfassung der Stolpersteine bei der Installation von CaboCha
Zusammenfassung der Klassifizierung und Implementierung von Algorithmen für maschinelles Lernen
Zusammenfassung der Module und Klassen in Python-TensorFlow2-
Zusammenfassung der integrierten Methoden usw. der Python-Liste
[Python] Speichern von Lernergebnissen (Modellen) beim maschinellen Lernen
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
[Zusammenfassung der Bücher und Online-Kurse für Programmierung und datenwissenschaftliches Lernen]
Algorithmus für maschinelles Lernen (Zusammenfassung und Regularisierung der linearen Regression)
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten