J'utilise cette bibliothèque pour implémenter un agent d'apprentissage.
J'ai généré les cas de formation, mais je ne sais pas avec certitude quels sont les ensembles de validation et de test.
L'enseignant dit:
70% devraient être des cas de train, 10% seront des cas de test et les 20% restants devraient être des cas de validation.
Éditer
J'ai ce code pour la formation, mais je ne sais pas quand arrêter la formation.
def train(self, train, validation, N=0.3, M=0.1):
# N: learning rate
# M: momentum factor
accuracy = list()
while(True):
error = 0.0
for p in train:
input, target = p
self.update(input)
error = error + self.backPropagate(target, N, M)
print "validation"
total = 0
for p in validation:
input, target = p
output = self.update(input)
total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output
accuracy.append(total)
print min(accuracy)
print sum(accuracy[-5:])/5
#if i % 100 == 0:
print 'error %-14f' % error
if ? < ?:
break
Éditer
Je peux obtenir une erreur moyenne de 0,2 avec les données de validation, après peut-être 20 itérations d'entraînement, cela devrait être de 80%?
erreur moyenne = somme de la différence absolue entre la cible de validation et la sortie, étant donné l'entrée des données de validation / la taille des données de validation.
1
avg error 0.520395
validation
0.246937882684
2
avg error 0.272367
validation
0.228832420879
3
avg error 0.249578
validation
0.216253590304
...
22
avg error 0.227753
validation
0.200239244714
23
avg error 0.227905
validation
0.199875013416
Réponses:
Les ensembles de formation et de validation sont utilisés pendant la formation.
Une fois que vous avez terminé la formation, vous exécutez votre test et vérifiez que la précision est suffisante.
Ensemble d'entraînement : cet ensemble de données est utilisé pour ajuster les poids sur le réseau neuronal.
Ensemble de validation : cet ensemble de données est utilisé pour minimiser le surajustement. Vous n'ajustez pas les poids du réseau avec cet ensemble de données, vous vérifiez simplement que toute augmentation de la précision sur l'ensemble de données d'entraînement entraîne en fait une augmentation de la précision par rapport à un ensemble de données qui n'a pas été montré au réseau auparavant, ou du moins le réseau ne s'y est pas entraîné (c'est-à-dire ensemble de données de validation). Si la précision sur l'ensemble de données d'entraînement augmente, mais que la précision sur l'ensemble de données de validation reste la même ou diminue, alors vous suréquipez votre réseau de neurones et vous devriez arrêter l'entraînement.
Ensemble de test : cet ensemble de données est utilisé uniquement pour tester la solution finale afin de confirmer la puissance prédictive réelle du réseau.
la source
validation set
ni le netest set
sont utilisés pour régler les poids du réseau neuronal. Pourquoi ne pouvez-vous pas utiliser le même ensemble de données, non utilisé pour entraîner les pondérations, que levalidation set
ettest set
? Que gagne-t-on à les séparer?À partir de la section ftp://ftp.sas.com/pub/neural/FAQ1.txt " Quelle est la population, échantillon, ensemble de formation, ensemble de conception, validation "
La surface d'erreur sera différente pour différents ensembles de données de votre ensemble de données (apprentissage par lots). Par conséquent, si vous trouvez un très bon minimum local pour les données de votre jeu de test, cela peut ne pas être un très bon point, et peut être un très mauvais point dans la surface générée par un autre ensemble de données pour le même problème. Par conséquent, vous devez calculer un tel modèle qui non seulement trouve une bonne configuration de poids pour l'ensemble d'entraînement, mais devrait également être capable de prédire de nouvelles données (qui ne sont pas dans l'ensemble d'apprentissage) avec une bonne erreur. En d'autres termes, le réseau devrait être capable de généraliser les exemples afin qu'il apprenne les données et ne se contente pas de se souvenir ou de charger l'ensemble d'apprentissage en surappuyant les données d'apprentissage.
L'ensemble de données de validation est un ensemble de données pour la fonction que vous souhaitez apprendre, que vous n'utilisez pas directement pour entraîner le réseau. Vous entraînez le réseau avec un ensemble de données que vous appelez l'ensemble de données d'entraînement. Si vous utilisez un algorithme basé sur le gradient pour entraîner le réseau, la surface d'erreur et le gradient à un moment donné dépendront complètement de l'ensemble de données d'apprentissage, de sorte que l'ensemble de données d'apprentissage est directement utilisé pour ajuster les poids. Pour vous assurer de ne pas suradapter le réseau, vous devez saisir l'ensemble de données de validation sur le réseau et vérifier si l'erreur se situe dans une certaine plage. Parce que l'ensemble de validation n'est pas utilisé directement pour ajuster les poids du réseau, donc une bonne erreur pour la validation et également l'ensemble de test indique que le réseau prédit bien pour les exemples de trains,
L'arrêt prématuré est un moyen d'arrêter l'entraînement. Il existe différentes variantes disponibles, le plan principal est que les erreurs de train et de jeu de validation sont surveillées, l'erreur de train diminue à chaque itération (backprop et frères) et au début l'erreur de validation diminue. La formation est arrêtée au moment où l'erreur de validation commence à augmenter. La configuration du poids à ce stade indique un modèle, qui prédit bien les données d'entraînement, ainsi que les données qui ne sont pas vues par le réseau . Mais parce que les données de validation en faitaffecte indirectement la configuration du poids pour sélectionner la configuration du poids. C'est là qu'intervient l'ensemble de test. Cet ensemble de données n'est jamais utilisé dans le processus d'apprentissage. Une fois qu'un modèle est sélectionné en fonction de l'ensemble de validation, les données de l'ensemble de test sont appliquées au modèle de réseau et l'erreur pour cet ensemble est détectée. Cette erreur est représentative de l'erreur que l'on peut attendre de données absolument nouvelles pour le même problème.
ÉDITER:
En outre, dans le cas où vous ne disposez pas de suffisamment de données pour un jeu de validation, vous pouvez utiliser la validation croisée pour ajuster les paramètres et estimer l'erreur de test.
la source
L'ensemble de validation croisée est utilisé pour la sélection du modèle, par exemple, sélectionnez le modèle polynomial avec le moins d'erreurs pour un ensemble de paramètres donné. L'ensemble de test est ensuite utilisé pour signaler l'erreur de généralisation sur le modèle sélectionné. De là: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets
la source
Nous créons un ensemble de validation pour
Pourquoi le jeu de validation utilisé :
la source
Supposons que vous entraîniez un modèle sur un ensemble d'entraînement, puis que vous mesuriez ses performances sur un ensemble de test. Vous pensez qu'il y a encore place à l'amélioration et vous essayez d'ajuster les hyper-paramètres (si le modèle est un réseau de neurones - les hyper-paramètres sont le nombre de couches ou de nœuds dans les couches). Maintenant, vous obtenez une performance légèrement meilleure. Cependant, lorsque le modèle est soumis à d'autres données (pas dans l'ensemble de test et d'apprentissage), vous risquez de ne pas obtenir le même niveau de précision. En effet, vous avez introduit un biais lors de la modification des hyper-paramètres pour obtenir une meilleure précision sur l'ensemble de test. Vous avez essentiellement adapté le modèle et les hyper-paramètres pour produire le meilleur modèle pour cet ensemble d'entraînement particulier.
Une solution courante consiste à diviser davantage l'ensemble d'entraînement pour créer un ensemble de validation . Maintenant vous avez
Vous procédez comme précédemment, mais cette fois, vous utilisez le jeu de validation pour tester les performances et ajuster les hyper-paramètres. Plus spécifiquement, vous entraînez plusieurs modèles avec divers hyper-paramètres sur l'ensemble d'apprentissage réduit (c'est-à-dire l'ensemble d'entraînement complet moins l'ensemble de validation) et vous sélectionnez le modèle qui fonctionne le mieux sur l'ensemble de validation.
Une fois que vous avez sélectionné le modèle le plus performant sur l'ensemble de validation, vous entraînez le meilleur modèle sur l'ensemble d'apprentissage complet (y compris l'ensemble de validation), ce qui vous donne le modèle final.
Enfin, vous évaluez ce modèle final sur l'ensemble de test pour obtenir une estimation de l'erreur de généralisation.
la source
Jeu de données d' entraînement : échantillon de données utilisé pour ajuster le modèle.
Ensemble de données de validation : échantillon de données utilisé pour fournir une évaluation non biaisée d'un ajustement de modèle sur l'ensemble de données d'entraînement lors du réglage des hyperparamètres du modèle. L'évaluation devient plus biaisée au fur et à mesure que la compétence sur l'ensemble de données de validation est intégrée à la configuration du modèle.
Ensemble de données de test : échantillon de données utilisé pour fournir une évaluation impartiale d'un ajustement final du modèle sur l'ensemble de données d'entraînement.
la source
En termes simples, définissez l'ensemble d'entraînement, l'ensemble de tests, l'ensemble de validation
Ensemble d'entraînement: est utilisé pour rechercher les voisins les plus proches. Ensemble de validation: sert à trouver différents k qui s'appliquent à l'ensemble de trains. Ensemble de test: est utilisé pour trouver la précision maximale et les données invisibles à l'avenir.
la source