Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (4)

Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (1) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (2) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (3) https://github.com/legacyworld/sklearn-basic

Exercice 3.4 Régularisation de la régression simple polynomiale

Au fait, cette fois, c'est le retour de la crête. Il semble n'y avoir aucune explication pour Youtube, mais certains résultats sont d'environ 9 minutes et 45 secondes dans le 4ème (1). Le code source est presque le même que celui de la tâche 3.2. Dans cette tâche, la commande est fixée à 30. Au lieu de cela, déplacez le paramètre de régularisation avec [1e-30,1e-20,1e-10,1e-5, 1e-3,1e-2,1e-1, 1,10,100]. Dans le code source, le paramètre de régularisation est «alpha». Parce que «lambda» de Python est réservé.

python:Homework_3.4.py


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures as PF
from sklearn import linear_model
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import cross_val_score

DEGREE = 30

def true_f(x):
    return np.cos(1.5 * x * np.pi)

np.random.seed(0)
n_samples = 30

#Données de l'axe X pour le dessin
x_plot = np.linspace(0,1,100)
#Données d'entraînement
x_tr = np.sort(np.random.rand(n_samples))
y_tr = true_f(x_tr) + np.random.randn(n_samples) * 0.1
#Convertir en matrice
X_tr = x_tr.reshape(-1,1)
X_plot = x_plot.reshape(-1,1)
degree = DEGREE
alpha_list = [1e-30,1e-20,1e-10,1e-5, 1e-3,1e-2,1e-1, 1,10,100]
for alpha in alpha_list:
    plt.scatter(x_tr,y_tr,label="Training Samples")
    plt.plot(x_plot,true_f(x_plot),label="True")
    plt.xlim(0,1)
    plt.ylim(-2,2)
    filename = f"{alpha}.png "
    pf = PF(degree=degree,include_bias=False)
    linear_reg = linear_model.Ridge(alpha=alpha)
    steps = [("Polynomial_Features",pf),("Linear_Regression",linear_reg)]
    pipeline = Pipeline(steps=steps)
    pipeline.fit(X_tr,y_tr)
    plt.plot(x_plot,pipeline.predict(X_plot),label="Model")
    y_predict = pipeline.predict(X_tr)
    mse = mean_squared_error(y_tr,y_predict)
    scores = cross_val_score(pipeline,X_tr,y_tr,scoring="neg_mean_squared_error",cv=10)
    plt.title(f"Degree: {degree}, Lambda: {alpha}\nTrainErr: {mse:.2e} TestErr: {-scores.mean():.2e}(+/- {scores.std():.2e})")
    plt.legend()
    plt.savefig(filename)
    plt.clf()
    print(f"Paramètres de régularisation= {alpha},Erreur d'entraînement= {mse},Erreur de test= {-scores.mean():.2e}")

Ce qui change

linear_reg = linear_model.Ridge(alpha=alpha)

Seulement. Lorsque j'exécute ce programme, j'obtiens l'avertissement suivant.

/usr/local/lib64/python3.6/site-packages/sklearn/linear_model/_ridge.py:190: UserWarning: Singular matrix in solving dual problem. Using least-squares solution instead.
  warnings.warn("Singular matrix in solving dual problem. Using "

Cela semble sortir à la place du démontage de Kolesky, mais je n'étais pas sûr.

linear_model/ridge.py


try:
   # Note: we must use overwrite_a=False in order to be able to
   #       use the fall-back solution below in case a LinAlgError
   #       is raised
   dual_coef = linalg.solve(K, y, sym_pos=True,overwrite_a=False)
except np.linalg.LinAlgError:
   warnings.warn("Singular matrix in solving dual problem. Using "
   "least-squares solution instead.")
   dual_coef = linalg.lstsq(K, y)[0]

Il semble que les équations simultanées ne peuvent pas être résolues, donc la méthode du carré minimum sera utilisée ... Je n'ai pas compris la raison pour laquelle il est sorti uniquement avec 1e-30,1e-20.

Résultat d'exécution

Paramètres de régularisation= 1e-30,Erreur d'entraînement= 0.002139325105436034,Erreur de test= 5.11e+02
Paramètres de régularisation= 1e-20,Erreur d'entraînement= 0.004936191193133389,Erreur de test= 5.11e+02
Paramètres de régularisation= 1e-10,Erreur d'entraînement= 0.009762751388489265,Erreur de test= 1.44e+02
Paramètres de régularisation= 1e-05,Erreur d'entraînement= 0.01059565315043209,Erreur de test= 2.79e-01
Paramètres de régularisation= 0.001,Erreur d'entraînement= 0.010856091742299396,Erreur de test= 6.89e-02
Paramètres de régularisation= 0.01,Erreur d'entraînement= 0.012046102850453813,Erreur de test= 7.79e-02
Paramètres de régularisation= 0.1,Erreur d'entraînement= 0.02351033489834412,Erreur de test= 4.94e-02
Paramètres de régularisation= 1,Erreur d'entraînement= 0.11886509938269865,Erreur de test= 2.26e-01
Paramètres de régularisation= 10,Erreur d'entraînement= 0.31077333649742883,Erreur de test= 4.71e-01
Paramètres de régularisation= 100,Erreur d'entraînement= 0.41104732329314453,Erreur de test= 5.20e-01

Si la régularisation est trop efficace, elle ne prendra que la moyenne, et si elle n'est pas efficace, elle sera surapprise. Par conséquent, même dans la régression des crêtes, une vérification croisée est nécessaire pour régler les paramètres de régularisation.

Recommended Posts

Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (17)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en créant le script Python faisant partie du devoir (5)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (16)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (10)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (13)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (9)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (4)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (12)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (1)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (11)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (3)
Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python à la tâche (14)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en créant le script Python faisant partie du devoir (6)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (15)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (7) Créez votre propre méthode de descente la plus raide
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (8) Créez votre propre méthode de descente stochastique la plus raide
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Script Python de collection d'images pour créer des ensembles de données pour l'apprentissage automatique
Résumé du flux de base de l'apprentissage automatique avec Python
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
[Livre d'images sur l'apprentissage automatique] Mémo lorsque l'exercice Python à la fin du livre a été effectué lors de la vérification des données
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2
Mémo d'étude Python & Machine Learning: Préparation de l'environnement
Notes d'apprentissage depuis le début de Python 1
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
Cours de base Python (à la fin de 15)
Mémo d'étude Python & Machine Learning ③: Réseau neuronal
Mémo d'étude Python & Machine Learning ④: Machine Learning par rétro-propagation
Notes d'apprentissage depuis le début de Python 2
Mémo d'étude Python & Machine Learning ⑥: Reconnaissance des nombres
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Présentation du livre "Créer une IA rentable avec Python" qui vous permet d'apprendre l'apprentissage automatique dans le cours le plus court
[Python] Lire le code source de Bottle Part 2
Classification des images de guitare par apprentissage automatique Partie 1
Apprentissage automatique à partir de Python Personal Memorandum Part2
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Mathématiques Todai 2016 résolues avec Python
Apprentissage automatique à partir de Python Personal Memorandum Part1
EV3 x Python Machine Learning Partie 2 Régression linéaire
[Python] Lire le code source de Bottle Part 1
À propos du contenu de développement de l'apprentissage automatique (exemple)
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 2
Classification des images de guitare par apprentissage automatique, partie 2
Touchons une partie de l'apprentissage automatique avec Python
Mémo d'étude Python & Machine Learning ⑦: Prévision du cours de l'action
[Python + OpenCV] Peignez la partie transparente de l'image en blanc
Prédire le temps objectif d'un marathon complet avec l'apprentissage automatique-③: j'ai essayé de visualiser les données avec Python-
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
[CodeIQ] J'ai écrit la distribution de probabilité des dés (du cours de mathématiques CodeIQ pour l'apprentissage automatique [Distribution de probabilités])
[Apprentissage automatique] "Détection d'anomalies et détection de changement" Dessinons la figure du chapitre 1 en Python.