Python prédit les données de vente de shampooing de séries chronologiques en utilisant la méthode d'optimisation des paramètres du réseau neuronal de mémoire à court et à long terme lstm

Lico9e 2021-11-25 10:43:59
python pr dit les donn


Il est difficile de configurer le réseau neuronal,Parce qu'il n'y a pas de bonne Théorie sur la façon de faire.

Vous devez systématiquement explorer les différentes configurations de paramètres du point de vue des résultats dynamiques et objectifs,Pour tenter de comprendre la situation d'un problème de modélisation prédictive donné.

Dans ce tutoriel,.Vous apprendrez comment explorer la façon de prévoir les configurations de problèmes pour les séries chronologiques LSTM Paramètres du réseau.

Une fois ce tutoriel terminé,Vous apprendrez:

  • Comment ajuster et interpréter les résultats du nombre de périodes de formation.
  • Comment ajuster et interpréter les résultats de la taille du lot de formation.
  • Comment ajuster et interpréter les résultats du nombre de neurones.

Comment utiliser Keras Ajustement LSTM Hyperparamètre pour la prévision des séries chronologiques

 

Aperçu du tutoriel

Ce tutoriel est divisé en 6 Sections;C'est vrai.:

  1. Ensemble de données sur les ventes de shampooing
  2. Tests expérimentaux
  3. Nombre de périodes d'ajustement
  4. Redimensionner le lot
  5. Ajuster le nombre de neurones
  6. Résumé des résultats

Environnement

Ce tutoriel suppose que vous avez installé Python SciPy Environnement.Vous pouvez utiliser Python 2 Ou 3.

Ce tutoriel suppose que vous avez installé Keras v2.0 Ou plus tard et TensorFlow .

Ce tutoriel suppose également que vous avez installé scikit-learn、Pandas、NumPy Et Matplotlib.

Ensemble de données sur les ventes de shampooing

Cet ensemble de données décrit 3 Volume des ventes mensuelles de shampooing au cours de l'année.

L'Unit é est le nombre de ventes,Oui. 36 Observations.

L'exemple suivant charge et crée un diagramme d'un ensemble de données chargé.


#Charger et dessiner l'ensemble de données


# Charger l'ensemble de données

def paser(x):

return dattme.strptme('190'+x, '%Y-%m')

seres = read_csv('sale.csv', header=0, pare_dats=[0])

# Résumé des lignes précédentes

print(seres.head())

# Tracer un diagramme de ligne

seres.plot()


  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

Lancez l'exemple pour charger l'ensemble de données sous Pandas Avant la séquence et la sortie 5 D'accord.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Séries chronologiques

Puis créez un diagramme de ligne pour cette séquence,Montre une nette tendance à la hausse.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_02

Diagramme linéaire de l'ensemble de données sur les ventes de shampooing

Et puis...,Nous verrons ce qui a été utilisé dans l'expérience LSTM Outils de configuration et de test.

Tests expérimentaux

Cette section décrit les outils de test utilisés dans ce tutoriel.

Division des données

Nous allons diviser l'ensemble de données sur les ventes de shampooing en deux parties:Ensembles de formation et d'essais.

Les données des deux premières années seront utilisées pour l'ensemble de données sur la formation.,Les données de l'année restante seront utilisées pour l'ensemble d'essais..

Les modèles seront élaborés à l'aide d'ensembles de données de formation et les ensembles de données d'essai seront prévus..

Les prévisions de persistance sur l'ensemble de données d'essai permettent d'obtenir des ventes mensuelles de shampooing 136.761 Erreur.Ceci fournit une limite de performance inférieure acceptable sur l'ensemble d'essais.

Évaluation du modèle

Utilisez le défilement pour prévoir le scénario.

Chaque étape de l'ensemble de données d'essai sera effectuée une à la fois.Le modèle sera utilisé pour prévoir les étapes de temps,Les valeurs réelles prévues dans l'ensemble d'essai seront ensuite utilisées.,Et il est fourni au modèle pour la prévision de l'étape suivante dans le temps.

Ceci simule une scène du monde réel,Chaque mois, il y aura de nouvelles observations sur les ventes de shampooing,Et pour les prévisions du mois prochain.

Ceci sera simulé par la formation et la mise à l'essai de la structure de l'ensemble de données.Nous effectuerons toutes les prévisions en une seule fois.

Toutes les prévisions pour l'ensemble de données d'essai seront recueillies.,Et calculer les erreurs pour résumer les compétences du modèle.L'erreur RMS sera utilisée (RMSE),Parce qu'il punit de grandes erreurs et génère des données prédites(C'est - à - dire les ventes mensuelles de shampooing)Fractions dans la même unité.

Préparation des données

Avant que nous puissions LSTM Avant que le modèle ne s'adapte à l'ensemble de données,Nous devons convertir les données.

Avant d'adapter le modèle et de faire des prévisions,Effectuer les trois transformations de données suivantes sur l'ensemble de données.

  1. Conversion des données des séries chronologiques,Pour le rendre stable.Plus précisément,,Retard=1 Différence pour éliminer la tendance à la hausse dans les données.
  2. Transformer les séries chronologiques en questions d'apprentissage supervisées.Plus précisément,,Organiser les données en modes d'entrée et de sortie,L'observation de l'étape temporelle précédente est utilisée comme entrée pour prédire l'observation de l'étape temporelle actuelle.
  3. Convertir les observations en dimensions spécifiques.Plus précisément,,Redimensionner les données à -1 Et 1 Entre les valeurs pour satisfaire LSTM Fonction d'activation hyperbolique tangente par défaut pour le modèle.

Avant les calculs et les erreurs,Ces transformations sont retournées à l'échelle originale dans la prévision.

Fonctionnement de l'expérience

Chaque protocole expérimental sera exécuté10Une fois.

La raison en est que,LSTMLes conditions initiales aléatoires d'un réseau, à chaque fois qu'une configuration donnée est formée,Cela pourrait conduire à des résultats très différents.

Une méthode de diagnostic sera utilisée pour étudier la configuration du modèle.C'est le diagramme linéaire qui va créer les compétences du modèle au fil du temps(Les itérations de formation sont appeléesepochs),Et l'étudier,Pour mieux comprendre comment une configuration donnée est exécutée,Et comment l'ajuster pour une meilleure performance.

À la fin de chaque période,Le modèle sera évalué sur les ensembles de données de formation et d'essai.,Et sauvegardezRMSEPoints.

Formation et tests à la fin de chaque scénarioRMSELes scores seront imprimés,Pour afficher les progrès.

Formé et testéRMSELes séries fractionnées sont tracées en ligne à la fin de l'exécution.Les points d'entraînement sont en bleu,Les scores des tests sont exprimés en orange.

Examinons les résultats.

 

Période d'ajustement

Nous verrons le premier ajustement LSTM Le paramètre est le nombre de périodes d'entraînement.

Le modèle utilisera un lot 4 Et un seul neurone.Nous explorerons l'effet de la formation de cette configuration pour un nombre différent de périodes d'entraînement.

500 Périodeepoch Diagnostic

Le Code est assez bien commenté,Ça devrait être facile à comprendre..



#Possibilité d'enregistrer des images sur le serveur

matplotlib.use('Agg')




# Fonction d'analyse date - heure utilisée pour charger l'ensemble de données

def paser(x):

return dateime.strptme('190'+x, '%Y-%m')



# Définir une séquence comme un problème d'apprentissage supervisé



colmns.appnd(df)
df = concat(colns, axis=1)



# Créer une séquence différentielle

diffene(dtaset, ieral=1):




# Étendre les données de formation et d'essai à[-1, 1].

scae(train, test):

scler = salr.fit(train)

# Convertir l'ensemble de formation

train = trin.rhape(tain.hpe[0], tran.shpe[1])


# Test de transformation


tst_caed = scler.trnfom(test)




# Échelle inverse de la valeur prévue

inve_scle(saer, X, yhat):




# Évaluer le modèle sur un ensemble de données,Retour en unités convertiesRMSE

evaluate(mdel, rw_data, scald_dataet, caler)
# Séparez - vous.

X, y = scald_daaset[:,0:-1], saleddaaset[:,-1)

# Remodelage

reshaed = X.reshpe(len(X), 1, 1)

# Ensemble de données de prévision

predict(rshped, bth_ize=tchsize)

# Inverser la transformation des données dans la prévision


for i in rage(len(outut)):

yat = output[i,0]

# Inverser l'échelle

yhat = inrtscle(saer, X[i], yhat)

# Inverse la différence

yhat = yhat + raaa[i].

# Prévisions de stockage

pdiis.ppd(yhat)

# Rapport sur le rendement

rmse = srt(mensuederror pricions) )





# Effectuer les données de formationLSTMAjustement du réseau

fitlstm(tran, tet, raw, caler bath_sie, n_eoch, erns):


# Préparation du modèle

model = Sequential()

moel.ad(LSTM(neons, bh_phpe, stateful)


# Modèle d'ajustement


for i in range(nb_epoch):

fit(X, y, epocs=1, bathsze, verose=0, shufle=False)


# Évaluer le modèle sur les données de formation


mse.apend(evalaion(mdel, rawtain, trai, scler, 0, bcize))


# Évaluer le modèle sur les données d'essai

rmse.append(evalh_size))



# Effectuer un test diagnostique
run():

# Charger l'ensemble de données

read_csv('sale.csv'

# Convertir les données en stationnaire


diffe(raues, 1)

# Transformer les données en apprentissage supervisé

supd = timespevied(diues, 1)

suplues = supd.vales

# Diviser les données en ensembles de formation et d'essai

train, test = supues[0:-12], suplues[-12:] .

# Modifier l'échelle des données

scar, traaled, tescaled = scale(tain, tst)

# Modèle d'ajustement et d'évaluation

traed = trainld[2:, :]

# Configuration

reas = 10

nbch = 4

nphs = 500

nnens = 1

# Effectuer un test diagnostique

for i in range(ret):

fit(train, tes, rawues, scler, nbth, necs, neons)


  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155.
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164.
  • 165.
  • 166.
  • 167.
  • 168.
  • 169.
  • 170.
  • 171.
  • 172.
  • 173.
  • 174.
  • 175.
  • 176.
  • 177.
  • 178.

Attention!:Tenir compte du caractère aléatoire des algorithmes ou des procédures d'évaluation,Ou la différence de précision numérique.Envisager d'exécuter l'exemple plus d'une fois et comparer les résultats moyens.

Les expériences en cours se dérouleront 10 Sortie de l'ensemble de formation et d'essai à la fin de l'expérience RMSE.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _PYTHON_03

Une série d'ensembles d'entraînement et d'essais a également été créée après chaque période d'entraînement. RMSE Diagramme linéaire des fractions.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Optimisation des paramètres_04

500 Résultats du diagnostic pour la période

Les résultats montrent clairement que,Presque toutes les expériences RMSE Tendance à la baisse pendant la période d'entraînement.

Il montre que le modèle apprend le problème et qu'il a une certaine capacité de prévision.En fait,Tous les résultats finaux des tests étaient inférieurs à ceux obtenus pour cette question 136.761 De RMSE Modèle de persistance simple pour(Simple prédiction)Erreur.

Les résultats montrent que,Plus de périodes de formation produiront des modèles plus qualifiés.

Essayons de mettre epoch Compter à partir de 500 Double à 1000.

1000Diagnostic de la période

Dans cette section,Nous utilisons les mêmes paramètres expérimentaux et ajustons le modèle à plus de 1000 Période de formation.

Plus précisément,, In run() Dans la fonction n_epochs Paramètre défini à 1000.

nepohs = 1000
  • 1.

Attention!: Tenir compte du caractère aléatoire des algorithmes ou des procédures d'évaluation,Ou la différence de précision numérique.Envisager d'exécuter l'exemple plus d'une fois et comparer les résultats moyens.

L'exécution de cet exemple produit le dernier epoch De l'ensemble d'entraînement et de test RMSE.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_05

Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Optimisation des paramètres_06

1000 Résultats du diagnostic pour la période

Nous pouvons voir,La tendance à la baisse des erreurs de modèle se poursuit,Et ça semble ralentir.

Les lignes des cas d'entraînement et d'essai deviennent plus horizontales,Mais il y a encore une tendance générale à la baisse,Malgré un faible taux de variation.Quelques exemples d'erreurs de test montrent qu'environ 600 Points d'inflexion possibles pour les périodes,Et peut montrer une tendance à la hausse.

Nous sommes intéressés par l'amélioration continue du rendement moyen sur l'ensemble d'essais,Et ça pourrait durer.

Essayons de mettre epoch Compter à partir de 1000 Doubler à 2000.

2000 PériodeEpoch Diagnostic

Dans cette section,Nous utilisons les mêmes paramètres expérimentaux et ajustons le modèle à plus de 2000 Période de formation.

Plus précisément,, Inrun() Dans la fonction npochParamètre défini à 2000  .

nepoch = 2000
  • 1.

Attention!:Tenir compte du caractère aléatoire des algorithmes ou des procédures d'évaluation,Ou la différence de précision numérique.Envisager d'exécuter l'exemple plus d'une fois et comparer les résultats moyens.

L'exécution de cet exemple produit le dernier epoch De l'ensemble d'entraînement et de test RMSE.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _LSTM_07

Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Optimisation des paramètres_08

2000 Périodeepoch Résultats du diagnostic

Comme on aurait pu le deviner,Ajout à l'ensemble de données de formation et d'essai 1000 - Oui. epoch Moyenne,La tendance à la baisse des erreurs se poursuit.

Ce qui est remarquable, c'est que,Environ la moitié des cas ont réduit les erreurs jusqu'à la fin de l'opération,Le reste montre des signes de tendance à la hausse.

La tendance à la croissance est le signe d'un ajustement excessif.C'est lorsque le modèle s'adapte trop à l'ensemble de données d'entraînement,Le coût est une dégradation des performances sur l'ensemble de données d'essai.L'amélioration continue des ensembles de données de formation en est un exemple.,Et l'amélioration après avoir testé les points d'inflexion et les pires compétences de l'ensemble de données.Sur l'ensemble de données d'essai,Moins de la moitié des opérations montrent le début de ce type de mode.

Malgré tout,Le résultat final de la durée sur l'ensemble de données d'essai est toujours très bon.Nous pouvons voir d'autres avantages avec une formation plus longue.

Essayons de doubler la durée,De2000À4000.

 

4000Diagnostic de la période

Dans cette section,Nous utilisons les mêmes paramètres expérimentaux et ajustons le modèle à plus de 4000 Période de formation.

Plus précisément,, Inrun() Dans la fonction n_epochsParamètre défini à 4000  .

nepocs = 4000
  • 1.

Attention!:Tenir compte du caractère aléatoire des algorithmes ou des procédures d'évaluation,Ou la différence de précision numérique.Envisager d'exécuter l'exemple plus d'une fois et comparer les résultats moyens.

L'exécution de cet exemple produit le dernier epoch De l'ensemble d'entraînement et de test RMSE.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_09

Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_10

4000 epoch Résultats du diagnostic

Même si 4000 - Oui. epoch,Il existe également une tendance générale à l'amélioration des performances.Il y a une condition de surajustement grave,C'est - à - dire que l'erreur d'essai a fortement augmenté.

Encore une fois,La plupart des opérations“C'est bon.”(Mieux que la durabilité)Fin de l'erreur de test finale pour.

Résumé des résultats

Les diagnostics ci - dessus aident à explorer le comportement dynamique du modèle,Mais manque de performance moyenne objective et comparable.

Nous pouvons résoudre ce problème en répétant les mêmes expériences et en calculant et en comparant les statistiques sommaires pour chaque configuration.Dans ce cas,,C'est fait. 30 Opérations secondaires,La valeur temporelle est 500、1000、2000、4000 Et 6000.

L'idée est d'utiliser un grand nombre de statistiques agrégées pour comparer les configurations,Et voir exactement quelles configurations pourraient avoir une meilleure performance moyenne.

Voici un exemple complet de code.




# Exécuter une expérience répétée

epernt(rpeas, sris, ochs):

# Convertir les données en stationnaire


dif_vues = diferne(ravaues, 1)

# Conversion des données en apprentissage supervisé

to_spersed(dif_vles, 1)

# Diviser les données en ensembles de formation et d'essai

train, test = spervsed[0:-2], suervues[-12:] .

# Modifier l'échelle des données
scale(train, test)

# Expérience de fonctionnement


for r in range(reeats):

# Modèle d'ajustement

size = 4

trtried = traled[2:, :]

ltmol = lstm(tamd, bachsie, eohs, 1)

# Prévoir l'ensemble des données de formation,Pour établir l'état des prévisions

trainmd[:, 0].resape(lentran_tmmed), 1, 1)
predict(tain_rsaped, ah_size=ath_ize)

# Ensemble de données d'essai prédictives

te_sapd = tstscaled[:,0:-1)

predict(testped, btze=btc_sze)



for i in range(len(outut)):
yhat = output[i,0]
X = te_saled[i, 0:-1] .

# Inverser l'échelle

yhat = invere(aler, X, yhat)

# Inverse la différence

yht = invsefece(raw_aues, yat, len+1-i)

# Rapport sur le rendement

sqrt(men_sqred_eror(a_vals[-12:], pedins) )


# Changer la durée de la formation

echs = [500, 1000, 2000, 4000, 6000] .

for e in eochs:
exiet(rpats, sries, e)

# Résumé des résultats
boxlot()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.

Exécuter le Code d'abord sortir 5 Statistiques sommaires pour chaque configuration.Ce qui est remarquable, c'est que,Il s'agit notamment des RMSE Moyenne et écart type des scores.

La moyenne donne le concept de la performance moyenne attendue de la configuration,Et l'écart type donne le concept de variance.Minimum et maximum RMSE Les scores donnent également la gamme des meilleurs et des pires exemples possibles..

Voir la moyenne seulement RMSE Points,Les résultats montrent que la configuration est 1000 De epoch Peut - être mieux..Les résultats montrent également que,Il faudra peut - être 1000 à 2000 Entre les valeurs pour une analyse plus approfondie.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_11

La répartition est également indiquée sur le diagramme de la boîte.Cela aide à comprendre comment les distributions peuvent être comparées directement.

La ligne rouge indique la médiane,La case indique le paragraphe 25 No et No. 75 Percentile,Ou médiane 50% Données.Cette comparaison montre également que,Oui. epochs Set to 1000 Le choix est meilleur que l'alternative testée.Il montre également que,Ça pourrait être dans 2000 Ou 4000 Obtenir une performance optimale lors des itérations,Mais le prix est que la performance moyenne est pire.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _LSTM_12

Résumé Epoch Diagramme de boîte des résultats

Et puis...,Nous verrons l'effet de la taille du lot.

Redimensionner le lot

La taille du lot contrôle la fréquence à laquelle les poids du réseau sont mis à jour.

Ce qui est important,In Keras Moyenne,La taille du lot doit être un facteur de la taille de l'ensemble de données d'essai et de formation.

Dans la section précédente, nous avons discuté de la formation epoch Dans la partie du nombre,La taille du lot est fixée à 4,Il est divisé en ensembles de données d'essai(La taille est 12)Et les ensembles de données d'essai(La taille est 20).

Dans cette section,Nous examinerons les effets du changement de taille des lots.On va s'entraîner. epoch Le nombre de 1000.

Diagnostic 1000 La période et la taille du lot sont 4

Pour rappel,La section précédente a évalué la taille du lot à4,La durée est de1000Expérience.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Séries chronologiques_13

1000 Résultats du diagnostic pour la période

Diagnostic 1000 La période et la taille du lot sont 2

Dans cette section,Nous nous concentrons sur la taille des lots à partir de 4 Réduire de moitié à 2.

Ce changement est C'est exact.run() En fonction n_batchParamètre exécuté ;Par exemple:

n_batch = 2
  • 1.

L'exécution de cet exemple montre que la taille du lot est 4 Même tendance générale du rendement,Peut - être plus élevé au cours de la dernière période RMSE.

L'exécution peut montrer une stabilisation plus précoce RMES Comportement,Plutôt que de continuer à baisser..

Voici la liste finale de chaque course RSME Points.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _PYTHON_14

 PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_15

Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _PYTHON_16

1000 La période et la taille du lot sont 2 Résultats du diagnostic

Essayons encore d'utiliser la taille du lot.

Diagnostic 1000 La période et la taille du lot sont 1

Il s'agit de mettre à jour le réseau après chaque mode d'entraînement.Peut être comparé à l'apprentissage par lots,Où les poids ne sont que dans chaque epoch Mise à jour à la fin.

On peut. Inrun() Changement dans la fonction n_batchParamètres ;Par exemple:

n_batch = 1
  • 1.

Encore une fois,L'exécution de cet exemple produit la dernière phase de chaque exécution RMSE Points.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Optimisation des paramètres_17

Un test et une formation sont également créés pour chaque duréeRMSEDiagramme linéaire des fractions.

Le graphique montre,Avec le temps,TestsRMSEPlus de changements,Peut - être un entraînement.RMSEPlus que les tests en vracRMSEStable plus rapidement.TestsRMSEL'augmentation de la variabilité est attendue,Parce que chaque mise à jour apporte peu de rétroaction sur les changements apportés au réseau.

La figure montre également,Si la configuration est assignée à plus de temps d'entraînement,Peut - être.RMSELa tendance à la baisse se poursuivra.

 

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _LSTM_18

1000 La période et la taille du lot sont 1 Résultats du diagnostic

Résumé des résultats

Comme pendant la formation,Nous pouvons comparer objectivement les performances d'un réseau avec différentes tailles de lots.

Exécution par configuration 30 Une fois,Et calculer les statistiques sommaires en fonction des résultats finaux.


# Exécuter une expérience répétée


# Convertir les données en stationnaire

raw_vues = sres.values

df_vaues = difence(rvalues, 1)

# Conversion des données en apprentissage supervisé


suesr_lus = surior.values

# Diviser les données en ensembles de formation et d'essai

# Échelle de transformation des données

tra_cled,testscld = scale(tain, tet)

# Expérience de fonctionnement



# Modèle d'ajustement

tran_timed = tan_saled[2:, :]

lstmmdl = lstm(tainrmd, ach_e, 1000, 1)

# Prévoir l'ensemble des données de formation pour établir l'état de prévision


preit(trairehae,bach_ie=bat_size)

# Ensemble de données d'essai prédictives

preict(tst_rehapeatc_ze=bathsize)

X = tes_cd[i, 0:-1]

# Inverser l'échelle

yht = ivetcale(aler, X, yhat)

# Inverse la différence

yat = invese_dfence(awvalus, yat, le(tetsald)+1-i)


# Rapport sur le rendement

rmse = sqrt(mean_urerror)


# Charger l'ensemble de données


# L'expérience

# Modifier le lot de formation

Lot = [1, 2, 4]

boxplot()


  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.

En termes de performance moyenne seulement,Les résultats indiquent que la taille du lot est 1 Heure RMSE Faible. Comme indiqué dans la section précédente,Cela pourrait encore s'améliorer avec plus de périodes d'entraînement.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_19

Un diagramme de boîte de données a également été créé,Pour aider à comparer graphiquement la distribution.La figure montre la performance médiane comme une ligne rouge,Où la taille du lot est 4 Afficher la plus grande différence et la médiane la plus basse RMSE.

L'ajustement du réseau neuronal est un compromis entre la performance moyenne et la variabilité de cette performance,Le résultat idéal a une faible erreur moyenne et une faible variabilité,Cela signifie qu'il est généralement bon et reproductible.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_20

.Diagramme en boîte résumant les résultats de la taille du lot

Ajuster le nombre de neurones

Dans cette section,Nous allons étudier l'impact de la modification du nombre de neurones dans le réseau.

Le nombre de neurones affecte la capacité d'apprentissage du réseau.En général,Plus de neurones peuvent apprendre plus de structures à partir de problèmes au détriment de plus de temps d'entraînement.Une plus grande capacité d'apprentissage peut également entraîner des problèmes potentiels de surajustement des données de formation..

Nous utiliserons 4 Et 1000 Taille du lot pour les périodes d'entraînement.

1000 Période et 1 Le diagnostic des neurones

Nous allons 1 Les neurones commencent.

Un rappel.,C'est de epochs Deuxième configuration testée dans l'expérience.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Optimisation des paramètres_21

1000 Résultats du diagnostic pour la période

1000 Période et 2 Le diagnostic des neurones

On peut faire passer le nombre de neurones de 1 Ajouter à 2.Cela devrait améliorer la capacité d'apprentissage du réseau.

On peut changerrun() En fonctionn_neurons Variables Pour faire ça .

n_neurons = 2
  • 1.

L'exécution de cette configuration affiche la dernière période de chaque exécution RMSE Points.

Les résultats montrent que,Bonne performance globale,Mais pas très bien..

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _PYTHON_22

Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.

C'est plus révélateur.Il montre les testsRMSEChute rapide de,À peu près à500-750Période,Un point d'inflexion montre le testRMSELa montée de,C'est vrai pour presque toutes les opérations..En même temps,L'ensemble de données de formation montre une baisse continue jusqu'à la dernière phase.

Ce sont des signes que l'ensemble de données d'entraînement est trop ajusté..

 

 

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_23

1000 Période et 2 Le diagnostic des neurones

Voyons si cette tendance va continuer avec plus de neurones.

1000 Période et 3 Le diagnostic des neurones

Cette section vise à augmenter le nombre de neurones 3 Même configuration pour.

n_neurons = 3
  • 1.

L'exécution de cette configuration affiche la dernière période de chaque exécution RMSE Points.

Les résultats sont similaires à ceux de la section précédente;On ne voit pas 2 Ou 3 La fin des neurones epoch Différences générales entre les scores d'essai.3 Le score final d'entraînement pour les neurones semble vraiment faible,Cela peut indiquer une accélération excessive de l'ajustement.

Les points d'inflexion de l'ensemble de données de formation semblent être plus élevés que 2 Les expériences sur les neurones ont eu lieu plus tôt,Peut - être dans 300-400 Période.

L'augmentation du nombre de ces neurones pourrait bénéficier de changements supplémentaires qui ralentissent le rythme d'apprentissage..Par exemple, en utilisant la méthode de régularisation,Par exemple: dropout,Réduire la taille des lots,Réduire le nombre de périodes d'entraînement.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Séries chronologiques_24

Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _Réseau neuronal_25

1000 Période et 3 Le diagnostic des neurones

Résumé des résultats

Encore une fois,Nous pouvons comparer objectivement les effets de l'augmentation du nombre de neurones tout en maintenant toutes les autres configurations de réseau.

Dans cette section,Nous répétons chaque expérience 30 Une fois,Et testera la moyenne RMSE Performance et 1 À 5 Pour comparer le nombre de neurones.


# Exécuter une expérience répétée


# Convertir les données en stationnaire

ra_lus = sees.values

difvles = difece(rwvlus, 1)

# Conversion des données en apprentissage supervisé


sups_ales = supvor.values

# Diviser les données en ensembles de formation et d'essai


# Échelle de transformation des données

trainsld,tet_scld = scale(tain, est)

# Expérience de fonctionnement

err_scres = list()


# Modèle d'ajustement


trntied = tr_aed[2:, :]

lsmel = lstm(tritid, bahze, 1000, eons)

# Prévoir l'ensemble des données de formation pour établir l'état de prévision

trrehap = ti_rimed[:, 0].rehae(len(train_trimmed), 1, 1)

prdict(trahpe,bahe=achze)

# Ensemble de données d'essai prédictives

tet_sape = tetsaled[:,0:-1]
tetrehae = tesespe.reshape(len(tst_ehape), 1, 1)

prect(tes_rhpe,bath_ize=btchsze)


X = ts_cld[i, 0:-1]

# Inverser l'échelle

yhat = ivertle(scaer, X, yhat)

# Inverse la différence

yht = inversefrce(rw_values, hat, len(tet_saed)+1-i)

# Rapport sur le rendement

rmse = sqrt(men_sureero(aw_vue[-12:], preiions))



# Charger l'ensemble de données


# L'expérience




# Changer les neurones

Neurones = [1, 2, 3, 4, 5]


boxplot()



  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.

L'exécution de l'expérience produira des statistiques sommaires pour chaque configuration.

En termes de performance moyenne seulement,Les résultats montrent que 1 Le réseau neuronal est configuré à 1000 - Oui. epoch A la meilleure performance,La taille du lot est 4.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _PYTHON_26

Le diagramme de la moustache de la boîte montre une tendance évidente à la performance de l'ensemble d'essai médian,Où l'augmentation des neurones conduit au test RMSE Augmentation correspondante de.

PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _LSTM_27

Diagramme à barres résumant les résultats neuronaux

Résumé de tous les résultats

Dans ce tutoriel,Nous avons fait beaucoup de travail sur l'ensemble de données sur les ventes de shampooing LSTM L'expérience.

En général,Il semble y avoir un état LSTM Configuré 1 Neurones,La taille du lot est 4,Et entraîné 1000 - Oui. epochs Ça pourrait être une bonne configuration.

Les résultats montrent également que,Peut - être que cette taille de lot est 1 Et s'adapte à plus epoch La configuration de.

L'ajustement du réseau neuronal est un travail empirique difficile,Il s'est avéré LSTM Et ça ne fait pas exception.

Ce tutoriel montre des études diagnostiques et des tests sur le comportement de configuration au fil du temps RMSE Les avantages de la recherche objective.

Extension

Cette section énumère quelques idées pour étendre les expériences effectuées dans ce tutoriel.

Si vous Explorez l'un d'eux,Veuillez indiquer vos résultats dans vos commentaires;J'adorerais voir ce que tu as trouvé..

  • dropout.En utilisant la méthode de régularisation(Comme le cycle LSTM Connecté dropout)Ralentir l'apprentissage.
  • Couche.Explorer des capacités d'apprentissage stratifiées supplémentaires en ajoutant plus de couches et un nombre différent de neurones à chaque couche.
  • Régularisation.Explorer comment utiliser la régularisation des poids(Par exemple L1 Et L2)Pour ralentir l'apprentissage et l'ajustement excessif du réseau dans certaines configurations.
  • Algorithme d'optimisation.Par exemple, la descente classique du gradient,Pour voir si des configurations spécifiques qui accélèrent ou ralentissent l'apprentissage peuvent apporter des avantages.
  • Fonction de perte.
  • Caractéristiques et étapes temporelles.Explorer l'utilisation de l'observation des retards comme caractéristiques d'entrée et étapes de temps d'entrée pour les caractéristiques,Voir si leur présence en tant qu'intrants peut améliorer l'apprentissage des modèles et/Ou capacité de prévision.
  • Plus grand volume.Explorer plus que 4 Taille du lot pour,Il peut être nécessaire de traiter plus en détail la taille de l'ensemble de données de formation et d'essai.
Résumé

Dans ce tutoriel,Vous avez appris à étudier systématiquement LSTM Configuration du Réseau pour la prévision des séries chronologiques.

Plus précisément,,Tu as appris.:

  • Comment concevoir un outil de test système pour évaluer la configuration du modèle.
  • Comment interpréter le comportement du modèle au fil du temps en utilisant le diagnostic du modèle et l'erreur de prévision objective.
  • Comment explorer et expliquer le nombre de périodes de formation、Effets de la taille du lot et du nombre de neurones.

Vos ajustements LSTM Ou avez - vous des questions sur ce tutoriel?

Posez vos questions dans les commentaires ci - dessous,Nous ferons de notre mieux pour répondre.



PYTHONAvecLSTM Méthode d'optimisation des paramètres du réseau neuronal à mémoire à court et à long terme pour prédire les données sur les ventes de shampooing de séries chronologiques _PYTHON_28

 

版权声明
本文为[Lico9e]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/11/20211125104047491j.html

  1. Sorting out the learning route for Python beginners
  2. The 6-line Python code uses the pdf2docx module converter object to convert PDF into docx file
  3. Batch compression of picture files using Python
  4. Using Python to write djikstra algorithm for robot path planning
  5. python实现手机号获取短信验证码 | 对接打码平台
  6. Detailed explanation of Euler Rodriguez code in Python
  7. Prove that angular displacement is not a vector with Python
  8. Using Python program to deeply understand homogeneous transfer matrix t
  9. Triple product formula of vector and its proof (with Python code)
  10. Derivation of differential formula of DH matrix using Python
  11. Python openpyxl operation on Excel (get the total number of columns, get the value of a row, get the value of a column, and set the cell value)
  12. Realizing Excel data filtering and data matching with Python
  13. Python reads and writes files
  14. Four scenarios of processing Excel files with Python
  15. Python converts dictionary to excel
  16. Python implements file reading and writing
  17. Basic Python syntax -- functions
  18. Python learning thinking
  19. Python basic syntax -- Boolean operation, break, continue, pass
  20. Python basic syntax -- loop
  21. Basic Python syntax -- lists, dictionaries
  22. Python basic syntax -- conditional judgment, input ()
  23. Python first experience - efficient office, data analysis, crawler
  24. Modulenotfounderror: no module named 'Django summernote details
  25. Key points for Django to make personal blog website
  26. Path setting of templates in Django settings
  27. Leetcode 1611. Minimum one bit operations to make integers Zero (Python)
  28. Directory C: \ users \ a \ desktop \ Django_ The blog master is registered as the GIT root, but no git repository details are found there
  29. Django. Core. Exceptions. Improveconfigured: application labels aren't unique, duplicates: admin
  30. How to verify that Django has created the project details correctly
  31. How to create a database when using Django to construct a website
  32. The solution of using Django framework to create project in Windows system
  33. Running Python virtual environment on win10 system to execute ll_ Env \ scripts \ activate: unable to load file elaboration scheme
  34. Detailed explanation of constructing virtual environment with Django in Python 3
  35. Python implementation of affine cipher
  36. RC4 Python implementation
  37. Simple: Python_ Automatic body temperature clock
  38. 用python把两个csv中的日期的列提出年,做出新的一列,再把两个csv表格按照新做出的日期这列和ID号合并为一个表。
  39. python中类实例化后,其对象无法被其他模块调用方法
  40. [JSON] - Python creates JSON file format
  41. Utilisez Python pour proposer l'année de la colonne de date dans les deux CSV, faire une nouvelle colonne, puis combiner les deux tableaux CSV en un seul tableau avec la colonne de date et le numéro d'identification.
  42. 关于#python#的问题,请各位专家解答!
  43. ***
  44. ***
  45. 關於#python#的問題,請各比特專家解答!
  46. S'il vous plaît répondre aux questions de Python!
  47. About the import of Python class
  48. Magic Python property decorator: 1 line of code makes Python methods become properties in seconds
  49. Python 音频调整音量(附代码) | Python工具
  50. Python programming ideas [series of articles]
  51. Python crawler programming idea (67): modify nodes using pyquery
  52. Python crawler programming idea (66): using pyquery to obtain node information
  53. Python crawler programming idea (65): find nodes using pyquery
  54. Python crawler programming idea (64): using CSS selectors in pyquery
  55. Python crawler programming idea (63): basic knowledge of pyquery
  56. Python crawler programming idea (62): project practice: capturing cool dog online red song list
  57. Python crawler programming idea (61): project practice: capturing rental information
  58. Python crawler programming idea (60): get CSS selector code through browser
  59. Python crawler programming idea (58): nested selection nodes with beautiful soup CSS selectors
  60. Python crawler programming idea (56): find method of beautiful soup method selector