○ Les principaux points de cet article Notez que le surapprentissage a été reproduit Surapprentissage: il peut gérer les données d'entraînement, mais il ne peut pas gérer les données inconnues. Sentiment qu'il n'y a pas de puissance d'application.
Comment vérifier le surentraînement et le surentraînement du modèle
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
#Préparation des données. Prix des maisons à Boston
data = load_boston()
X = data.data[:, [5,]] #Extraire uniquement le nombre de pièces comme variables explicatives
y = data.target
#Séparé en données d'entraînement et données de test
train_X, test_X = X[:400], X[400:]
train_y, test_y = y[:400], y[400:]
#SVR avec hyper paramètres modifiés(Machine à vecteurs de soutien (méthode du noyau))Apprendre en
model_s = SVR(C=1.0, kernel='rbf') #Utiliser le noyau rbf avec le paramètre de régularisation 1
model_s.fit(train_X, train_y)
#Prédiction à l'aide des données d'entraînement
s_pred = model_s.predict(train_X)
#Prédiction à l'aide de données de test (prédiction pour des données inconnues)
s_pred_t = model_s.predict(test_X)
#affichage graphique
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("○ Erreur quadratique moyenne et coefficient de détermination des données d'entraînement")
print(mean_squared_error(train_y, s_pred))
print(r2_score(train_y, s_pred))
print("○ Erreur quadratique moyenne et coefficient de détermination des données de test")
print(mean_squared_error(test_y, s_pred_t))
print(r2_score(test_y, s_pred_t))
résultat ○ Erreur quadratique moyenne et coefficient de détermination des données d'entraînement 30.330756428515905 0.6380880725968641 ○ Erreur quadratique moyenne et coefficient de détermination des données de test 69.32813164021485 -1.4534559402985217
La ligne de données d'entraînement (bleue) est dessinée de manière agréable, mais la ligne de données de test (orange) est subtile. Il ressort clairement des valeurs de l'erreur quadratique moyenne et du coefficient de détermination. C'est du surapprentissage.
Il existe plusieurs moyens d'éviter le surapprentissage, mais je vais les expliquer à nouveau. ・ Augmentez le nombre de données d'apprentissage (formation) ・ Effectuer une vérification croisée -Ajuster les hyper paramètres (rendre le modèle simple) ・ Réduisez le nombre de fonctionnalités ・ Mettre en œuvre la régularisation
Recommended Posts