Dieses Mal habe ich versucht, den Bewertungsindex (Regressionsmodell) des maschinellen Lernens zu organisieren. Wir haben auch die Punkte bei Verwendung jedes Bewertungsindex zusammengefasst.
Der Entscheidungsfaktor $ R ^ 2 $ bewertet die Anpassung des geschätzten Regressionsmodells. Die Formel lautet wie folgt.
\begin{eqnarray}
R^2 = 1 - \sum \frac{(y_i - \hat{y_i})^2}{(y_i - \bar{y})^2}
\end{eqnarray}
$ y_i $: Messwert der $ i $ -ten Stichprobe $ \ hat {y_i} $: Voraussichtlicher Wert der $ i $ -ten Stichprobe $ \ bar {y} $: Durchschnitt der gemessenen Werte
Artikel | Überblick |
---|---|
Evaluationskriterien | ・ Je näher es an 1 liegt, desto besser ist der Wert |
Interpretation | ・ Bewerten Sie die Anpassungsgüte des Regressionsmodells |
Charakteristisch | ・ Mit zunehmender Anzahl erklärender Variablen nähert sie sich 1. ・ Nichtlineares Modell kann nicht bewertet werden |
Der Python-Code ist unten.
#Bibliothek zur Punkteberechnung
from sklearn.metrics import r2_score
#true ist der wahre Wert (Messwert), pred ist der vorhergesagte Wert
true = [1.0, 1.5, 2.0, 1.2, 1.8]
pred = [0.8, 1.5, 1.8, 1.3, 2.0]
#Berechnen Sie den Wert des Entscheidungskoeffizienten R2
r2_score(true, pred)
\begin{eqnarray}
MAE = \frac{1}{N} \sum|y_i - \hat{y_i}|
\end{eqnarray}
$ y_i $: Messwert der $ i $ -ten Stichprobe $ \ hat {y_i} $: Voraussichtlicher Wert der $ i $ -ten Stichprobe $ N $: Anzahl der Proben
Artikel | Überblick |
---|---|
Evaluationskriterien | ・ Je näher an 0, desto besser der Wert |
Interpretation | ・ Die Größe der durchschnittlichen Abweichung (Fehler) zwischen dem vorhergesagten Wert und dem gemessenen Wert |
Charakteristisch | ・ Wir messen Fällen, die weitgehend unvorhersehbar sind, keine große Bedeutung bei. ・ Wenn ein gutes Modell basierend auf MAE ausgewählt wird, steigt der maximale Fehler tendenziell an. |
Der Python-Code ist unten.
#Bibliothek zur Punkteberechnung
from sklearn.metrics import mean_absolute_error
#true ist der wahre Wert (Messwert), pred ist der vorhergesagte Wert
true = [1.0, 1.5, 2.0, 1.2, 1.8]
pred = [0.8, 1.5, 1.8, 1.3, 2.0]
#Berechnen Sie den Wert von MAE
mean_absolute_error(true, pred)
\begin{eqnarray}
MSE = \frac{1}{N} \sum(y_i - \hat{y_i})^2
\end{eqnarray}
$ y_i $: Messwert der $ i $ -ten Stichprobe $ \ hat {y_i} $: Voraussichtlicher Wert der $ i $ -ten Stichprobe $ N $: Anzahl der Proben
Artikel | Überblick |
---|---|
Evaluationskriterien | ・ Je näher an 0, desto besser der Wert |
Interpretation | ・予測値と実測値のズレの大きさとInterpretationできる ・ Ähnlich wie MAE, jedoch anders als der tatsächliche durchschnittliche Fehler wie MAE |
Charakteristisch | ・ Der Schwerpunkt liegt auf Fällen, die weitgehend unvorhersehbar sind ・ MSE steigt tendenziell erheblich an, wenn die Prognose weitgehend verfehlt wird. |
Der Python-Code ist unten.
#Bibliothek zur Punkteberechnung
from sklearn.metrics import mean_squared_error
#true ist der wahre Wert (Messwert), pred ist der vorhergesagte Wert
true = [1.0, 1.5, 2.0, 1.2, 1.8]
pred = [0.8, 1.5, 1.8, 1.3, 2.0]
#Berechnen Sie den Wert von MSE
mean_squared_error(true, pred)
\begin{eqnarray}
RMSE = \sqrt{\frac{1}{N} \sum(y_i - \hat{y_i})^2}
\end{eqnarray}
$ y_i $: Messwert der $ i $ -ten Stichprobe $ \ hat {y_i} $: Voraussichtlicher Wert der $ i $ -ten Stichprobe $ N $: Anzahl der Proben
Artikel | Überblick |
---|---|
Evaluationskriterien | ・ Je näher an 0, desto besser der Wert |
Interpretation | ・予測値と実測値のズレの大きさとInterpretationできる ・ Ähnlich wie MAE, jedoch anders als der tatsächliche durchschnittliche Fehler wie MAE |
Charakteristisch | ・ Der Schwerpunkt liegt auf Fällen, die weitgehend unvorhersehbar sind ・ Wenn die Prognose weitgehend verfehlt wird, steigt der RMSE tendenziell erheblich an. |
Der Python-Code ist unten.
#Bibliothek zur Punkteberechnung
import numpy as np
from sklearn.metrics import mean_squared_error
#true ist der wahre Wert (Messwert), pred ist der vorhergesagte Wert
true = [1.0, 1.5, 2.0, 1.2, 1.8]
pred = [0.8, 1.5, 1.8, 1.3, 2.0]
#Berechnen Sie den RMSE-Wert
np.sqrt(mean_squared_error(true, pred))
\begin{eqnarray}
MAPE = \frac{1}{N} \sum|\frac{y_i - \hat{y_i}}{y_i}|
\end{eqnarray}
$ y_i $: Messwert der $ i $ -ten Stichprobe $ \ hat {y_i} $: Voraussichtlicher Wert der $ i $ -ten Stichprobe $ N $: Anzahl der Proben
Artikel | Überblick |
---|---|
Evaluationskriterien | ・ Je näher an 0, desto besser der Wert |
Interpretation | ・ Verhältnis der durchschnittlichen Abweichung (Fehler) des vorhergesagten Werts zur Größe des Messwerts |
Charakteristisch | ・ Der Schwerpunkt liegt auf der Größe des Verhältnisses von Vorhersagefehler zu gemessenem Wert. ・ Kann nicht verwendet werden, wenn der gemessene Wert 0 ist |
Der Python-Code ist unten.
#Bibliothek zur Punkteberechnung
import numpy as np
#true ist der wahre Wert (Messwert), pred ist der vorhergesagte Wert
true = np.array([1.0, 1.5, 2.0, 1.2, 1.8])
pred = np.array([0.8, 1.5, 1.8, 1.3, 2.0])
#Berechnen Sie den Wert von MAPE
np.mean(np.abs((true - pred) / true)) * 100
\begin{eqnarray}
SMAPE = \frac{100}{N} \sum|\frac{2(y_i - \hat{y_i})}{(|y_i|+|\hat{y_i}|)}|
\end{eqnarray}
$ y_i $: Messwert der $ i $ -ten Stichprobe $ \ hat {y_i} $: Voraussichtlicher Wert der $ i $ -ten Stichprobe $ N $: Anzahl der Proben
Artikel | Überblick |
---|---|
Evaluationskriterien | ・ Je näher an 0, desto besser der Wert |
Interpretation | ・ Verhältnis der durchschnittlichen Abweichung (Fehler) des vorhergesagten Werts zur Größe des Messwerts |
Charakteristisch | ・ Der Schwerpunkt liegt auf der Größe des Verhältnisses von Vorhersagefehler zu gemessenem Wert. ・ Im Gegensatz zu MAPE kann es auch dann verwendet werden, wenn der gemessene Wert 0 ist. |
Der Python-Code ist unten.
#Bibliothek zur Punkteberechnung
import numpy as np
#true ist der wahre Wert (Messwert), pred ist der vorhergesagte Wert
true = np.array([1.0, 1.5, 2.0, 1.2, 1.8])
pred = np.array([0.8, 1.5, 1.8, 1.3, 2.0])
#Berechnen Sie den SMAPE-Wert
100/len(true) * np.sum(2 * np.abs(pred - true) / (np.abs(pred) + np.abs(true)))
Organisieren Sie das Skript bisher.
#Bibliothek zur Punkteberechnung
import numpy as np
import pandas as pd
from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
def calculate_scores(true, pred):
"""Berechnen Sie alle Metriken
Parameters
----------
true : np.array
Gemessener Wert
pred : np.array
Voraussichtlicher Wert
Returns
-------
scores : pd.DataFrame
Ergebnisse der Zusammenfassung jedes Bewertungsindex
"""
scores = pd.DataFrame({'R2': r2_score(true, pred),
'MAE': mean_absolute_error(true, pred),
'MSE': mean_squared_error(true, pred),
'RMSE': np.sqrt(mean_squared_error(true, pred)),
'MAPE': mape(true, pred),
'SMAPE': smape(true, pred)},
index = ['scores'])
return scores
def mape(true, pred):
"""MAPE berechnen
Parameters
----------
true : np.array
Gemessener Wert
pred : np.array
Voraussichtlicher Wert
Returns
-------
np.array :Berechnungsergebnis von mape
"""
return np.mean(np.abs((true - pred) / true)) * 100
#SMAPE-Berechnung
def smape(true, pred):
"""SMAPE berechnen
Parameters
----------
true : np.array
Gemessener Wert
pred : np.array
Voraussichtlicher Wert
Returns
-------
np.array :Berechnung von Smape
"""
return 100/len(true) * np.sum(2 * np.abs(pred - true) / (np.abs(pred) + np.abs(true)))
def main():
true = np.array([1.0, 1.5, 2.0, 1.2, 1.8])
pred = np.array([0.8, 1.5, 1.8, 1.3, 2.0])
scores = calculate_scores(true, pred)
print(scores)
if __name__ == "__main__":
main()
R2 | MAE | MSE | RMSE | MAPE | SMAPE | |
---|---|---|---|---|---|---|
scores | 0.808824 | 0.14 | 0.026 | 0.161245 | 9.888889 | 10.254971 |
Vielen Dank für das Lesen bis zum Ende. Wenn Sie eine Korrekturanfrage haben, würden wir uns freuen, wenn Sie uns kontaktieren könnten.
Recommended Posts