○ Die Hauptpunkte dieses Artikels Beachten Sie, dass das Überlernen reproduziert wurde Überlernen: Es kann mit Trainingsdaten umgehen, aber nicht mit unbekannten Daten. Das Gefühl, dass es keine Anwendungsleistung gibt.
So überprüfen Sie das Über- und Übertraining von Modellen
from sklearn.datasets import load_boston
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
%matplotlib inline
#Datenaufbereitung. Boston Immobilienpreise
data = load_boston()
X = data.data[:, [5,]] #Extrahieren Sie nur die Anzahl der Räume als erklärende Variablen
y = data.target
#Getrennt in Trainingsdaten und Testdaten
train_X, test_X = X[:400], X[400:]
train_y, test_y = y[:400], y[400:]
#SVR mit modifizierten Hyperparametern(Support Vector Machine (Kernel-Methode))Lernen in
model_s = SVR(C=1.0, kernel='rbf') #Verwenden Sie den rbf-Kernel mit dem Regularisierungsparameter 1
model_s.fit(train_X, train_y)
#Vorhersage anhand von Trainingsdaten
s_pred = model_s.predict(train_X)
#Vorhersage anhand von Testdaten (Vorhersage für unbekannte Daten)
s_pred_t = model_s.predict(test_X)
#Grafikanzeige
fig, ax = plt.subplots()
ax.scatter(train_X, train_y, color='red', marker='s', label='data')
ax.plot(train_X, s_pred, color='blue', label='svr_rbf curve(train)')
ax.plot(test_X, s_pred_t, color='orange', label='svr_rbf curve(test)')
ax.legend()
plt.show()
print("○ Durchschnittlicher quadratischer Fehler und Bestimmungskoeffizient der Trainingsdaten")
print(mean_squared_error(train_y, s_pred))
print(r2_score(train_y, s_pred))
print("○ Durchschnittlicher quadratischer Fehler und Bestimmungskoeffizient der Testdaten")
print(mean_squared_error(test_y, s_pred_t))
print(r2_score(test_y, s_pred_t))
Ergebnis ○ Durchschnittlicher quadratischer Fehler und Bestimmungskoeffizient der Trainingsdaten 30.330756428515905 0.6380880725968641 ○ Durchschnittlicher quadratischer Fehler und Bestimmungskoeffizient der Testdaten 69.32813164021485 -1.4534559402985217
Die Trainingsdatenlinie (blau) ist schön gezeichnet, aber die Testdatenlinie (orange) ist subtil. Dies ergibt sich aus den Werten des durchschnittlichen quadratischen Fehlers und des Bestimmungskoeffizienten. Das ist Überlernen.
Es gibt verschiedene Möglichkeiten, um Überlernen zu verhindern, aber ich werde sie noch einmal erklären. ・ Erhöhen Sie die Anzahl der Lerndaten (Trainingsdaten) ・ Führen Sie eine Gegenprüfung durch -Anpassen Sie die Hyperparameter (machen Sie das Modell einfach) ・ Reduzieren Sie die Anzahl der Funktionen ・ Regularisierung implementieren
Recommended Posts