Python: Application de l'apprentissage supervisé (retour)

Généralisation du modèle

Qu'est-ce que la généralisation?

L'approche adoptée pour éviter le surapprentissage est la généralisation. En créant un modèle conscient de généralisation, il ne correspond pas trop aux données utilisées pour la formation Vous serez en mesure de gérer des cas généraux.

Le but de l'analyse de régression est de former un modèle à partir de données historiques et de prédire des données inconnues. La base est de définir le modèle pour prédire les valeurs à l'aide de données historiques.

Cependant, les données historiques n'expliquent pas complètement des événements tels que les fluctuations des cours des actions et des ventes. Il existe une gamme de prédictions de données, et même si les données que vous entrez sont les mêmes, les résultats réels peuvent changer.

Une confiance excessive dans les données passées, comme le surapprentissage, entraîne un échec de la prédiction des données Cela peut entraîner une diminution de la précision des prévisions.

image.png

Régularisation

Dans la régression linéaire, la régularisation est utilisée comme méthode de généralisation. La régularisation fait référence à la complexité des relations entre les données estimées par le modèle pour le modèle qui effectue l'analyse de régression. C'est une approche qui tente de généraliser les relations entre les données estimées par le modèle en ajoutant des pénalités.

La régularisation L1 et la régularisation L2 sont souvent utilisées comme régularisation.

Régularisation L1

C'est une méthode pour réduire le coefficient. En rapprochant le coefficient des "données qui n'affectent pas facilement les prévisions" de zéro C'est une technique qui vous permet d'obtenir un modèle clairsemé. Ceci est utile lors de l'analyse de régression de données contenant beaucoup d'informations supplémentaires sous forme de données. Il peut également être utilisé comme méthode de réduction des caractéristiques.

Régularisation L2

Pour ainsi dire, il s'agit de la limite supérieure du coefficient. C'est une méthode de limitation de l'amplitude du coefficient afin qu'il ne devienne pas trop grand, et est utilisée pour supprimer le surapprentissage. On dit qu'il est facile d'obtenir un modèle lisse (facile à généraliser) car le coefficient obtenu à la suite de l'apprentissage n'augmente pas anormalement. Il y a une fonctionnalité.

image.png

La régularisation L1 et la régularisation L2 peuvent être imaginées comme le montre la figure. La partie représentée en vert est la condition de la régularisation et la ligne de contour bleue est la fonction de perte lorsque la régularisation n'est pas effectuée.

Sans régularisation, les coefficients w1w1 et w2w2 convergent vers les positions des cercles bleus. Cependant, si la régularisation est effectuée, il est nécessaire d'aborder la partie verte comme une condition, donc le coefficient w1w1 et w2w2 vont maintenant converger vers le bon point (point orange).

Comme expliqué ci-dessus, la figure converge vers le point w1 = 0 w1 = 0 en utilisant la régularisation L1. De plus, en utilisant la régularisation L2, w1w1 et w2w2 seront plus petits que les points bleus.

Retour au lasso

La régression Lasso est un modèle de régression qui définit les paramètres appropriés pour la régression linéaire lors de l'exécution de la régression L1.

Dans l'apprentissage automatique, il peut être difficile pour les humains de reconnaître la relation entre les données utilisées pour la prédiction. Dans la régularisation L1, lors de l'analyse de régression de données contenant beaucoup d'informations supplémentaires sous forme de données J'ai confirmé que ce serait utile. Par conséquent, lorsque le nombre de paramètres (nombre de colonnes) est supérieur au nombre d'ensembles de données (nombre de lignes), Il est préférable d'utiliser la régression Lasso.

# scikit-apprendre linéaire_Lasso dans le module modèle()Est le modèle de la régression Lasso.

from sklearn.linear_model import Lasso
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression(n_samples=100, n_features=100, n_informative=60, n_targets=1, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)

model = Lasso()
model.fit(train_X, train_y)
print(model.score(test_X, test_y))
#Résultat de sortie
0.967921092594
De régression linéaire
model =LinearRegression()À
model = Lasso()Changez simplement et vous pouvez analyser avec la régression Lasso.

Retour de crête

La régression Ridge est un modèle de régression qui définit les paramètres appropriés pour la régression linéaire tout en effectuant une régularisation L2.

La régression Ridge a la caractéristique qu'il est plus facile d'obtenir (généraliser) un modèle plus lisse qu'un simple modèle de régression linéaire.

Dans le module linear_model de scikit-learn

Ridge()Est le modèle de régression des crêtes.

La méthode de mise en œuvre est exactement la même que le modèle de régression linéaire simple et la régression Lasso, remplacez simplement le nom du modèle.

from sklearn.linear_model import Ridge
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression(n_samples=100, n_features=50, n_informative=50, n_targets=1, noise=100.0, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)

model = Ridge()
model.fit(train_X, train_y)
print(model.score(test_X, test_y))
#Résultat de sortie
0.90786283239

Régression ElasticNet

La régression ElasticNet est un modèle qui combine la régression Lasso et la régression Ridge pour créer un terme de régularisation.

Comme un mérite Le point où les informations sont triées pour les données contenant beaucoup d'informations supplémentaires gérées par la régression Lasso Parce que c'est une combinaison de points qui permet d'obtenir (généraliser) facilement le modèle lisse manipulé dans la régression de crête. C'est la meilleure méthode lorsque vous souhaitez créer un modèle qui équilibre les avantages des deux.

from sklearn.linear_model import ElasticNet

model = ElasticNet()
#De plus, scikit-apprendre ElasticNet()À l1_Vous pouvez spécifier un argument appelé ratio.

model = ElasticNet(l1_ratio=0.3)

#Avec les paramètres ci-dessus, vous pouvez spécifier le rapport de régularisation L1 et de régularisation L2.
#Dans les cas ci-dessus, il est montré que la régularisation L1 est efficace à 30% et la régularisation L2 est efficace à 70%.
#(S'il n'est pas spécifié, il sera spécifié dans le modèle de régression ElasticNet d'exactement moitié-moitié.)

Résumé de la régression


from sklearn.linear_model import Ridge
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import ElasticNet

#Générer des données
X, y = make_regression(n_samples=100, n_features=50, n_informative=50, n_targets=1, noise=100.0, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)

#① Régression linéaire
model = LinearRegression()
model.fit(train_X,train_y)


# test_X, test_Sortie du coefficient de décision pour y
print("Régression linéaire:{}".format(model.score(test_X, test_y)))


#② Retour à Lasso(Régularisation L1)
model = Lasso().fit(train_X,train_y)

# test_X, test_Sortie du coefficient de décision pour y
print("Retour au lasso:{}".format(model.score(test_X, test_y)))

#③ Retour de crête(Régularisation L2)
model = Ridge()
model.fit(train_X,train_y)

# test_X, test_Sortie du coefficient de décision pour y
print("Retour de crête:{}".format(model.score(test_X, test_y)))

#④ Elastic Net return(Régularisation de L1 et L2)

model = ElasticNet()
#De plus, scikit-apprendre ElasticNet()À l1_Vous pouvez spécifier un argument appelé ratio.

model = ElasticNet(l1_ratio=0.3)
#Il montre que la régularisation L1 est efficace à 30% et la régularisation L2 est efficace à 70%.

Recommended Posts

Python: Application de l'apprentissage supervisé (retour)
Python: apprentissage supervisé (retour)
Apprendre avec un enseignant (retour) 1 Bases
Application de Python 3 vars
Python: apprentissage supervisé (classification)
Bases de l'apprentissage avec un enseignant Partie 1-Régression simple- (Remarque)
Bases de l'apprentissage avec un enseignant Partie 3-Régression multiple (mise en œuvre) - (Notes) -
Machine Learning: Supervision - Régression linéaire
Python: Apprentissage supervisé: Hyper Paramètres Partie 1
Apprendre avec l'enseignant 1 Principes de base de l'apprentissage avec l'enseignant (classification)
Python: apprentissage supervisé: Hyper Paramètre partie 2
Apprendre avec l'enseignant (retour) 2 édition avancée
Machine learning supervisé (classification / régression)
apprentissage de python
[Mémo d'apprentissage] Bases de la classe par python
Apprentissage automatique avec python (2) Analyse de régression simple
Notes d'apprentissage depuis le début de Python 1
Python: Application de la reconnaissance d'image à l'aide de CNN
[Python] Conception d'applications Web pour l'apprentissage automatique
Notes d'apprentissage depuis le début de Python 2
[Python] Note d'apprentissage 1
Notes d'apprentissage Python
sortie d'apprentissage python
Site d'apprentissage Python
Les bases de Python ①
Bases de python ①
Apprentissage Python jour 4
Copie de python
Apprentissage en profondeur Python
apprentissage python (supplément)
Apprentissage supervisé (classification)
Apprentissage profond × Python
notes d'apprentissage python
Introduction de Python
[Introduction à Udemy Python3 + Application] 26. Copie du dictionnaire
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
[Introduction à Udemy Python3 + Application] 19. Copie de la liste
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
EV3 x Python Machine Learning Partie 2 Régression linéaire
Touchons une partie de l'apprentissage automatique avec Python
"Régression linéaire" et "Version probabiliste de la régression linéaire" en Python "Régression linéaire de Bayes"
[Python] Opération d'énumération
Liste des modules python
Apprendre Python avec ChemTHEATER 03
Note d'apprentissage Python de Mayungo: liste d'histoires et de liens
Module Python (mémo d'apprentissage Python ④)
Apprentissage amélioré 1 installation de Python
Explication du concept d'analyse de régression à l'aide de python Partie 2
Apprendre Python avec ChemTHEATER 05-1
Python: pratique du Deep Learning
Python ~ Apprentissage rapide de la grammaire ~
Unification de l'environnement Python
Copie des préférences python
Apprentissage automatique: supervisé - AdaBoost
Outil MALSS (application) qui prend en charge l'apprentissage automatique en Python
Régression logistique d'apprentissage automatique
Défis d'apprentissage automatique de Coursera en Python: ex2 (retour logistique)
Principes de base du grattage Python