0

J'ai exécuté la fonction Perceptron suivante à partir du module sklearn ou scikit et le nombre de n_tera est de 40. Le nombre total d'erreurs de classification était 4 sur 45 données de test.Inconvénients de gérer plus d'époques sur le même taux d'apprentissage?

sklearn_percep=Perceptron(n_iter=40,eta0=0.1,random_state=0) 

Plus tard, je fait n_iterat à 100, mais maintenant les erreurs de classification a augmenté à 16 sur 45.

sklearn_percep=Perceptron(n_iter=100,eta0=0.1,random_state=0) 

Par curiosité, je couru à nouveau pour n_itera = 1000 maintenant les erreurs de classification sont 5 sur 45

J'utilise Iris Data Set et 3 classifications sont present.I savoir quand le taux d'apprentissage est très les époques basses doivent être élevées pour atteindre la convergence, mais comment les époques vraiment élevées réduisent-elles les performances des algorithmes d'apprentissage?

Mes données est 0,3 et 0,7 divisé sur 150 lignes de données et seule fois divisé

Nous vous remercions de votre temps.

Répondre

0

En général, si le nombre d'époques est suffisant, un classificateur stable devrait converger. Une fois qu'il a trouvé un minimum local pour sa fonction de coût, il devrait rester là. Cependant, il y aura certainement du bruit pendant que le classificateur apprend.

Il est souvent recommandé de garder une trace de précision sur votre ensemble de tests lors de votre entraînement. Vous pouvez tracer ceci pour voir à quelle vitesse l'algorithme converge. N_iter, est un hyper paramètre pour l'algorithme de Perceptron.

+0

Merci pour la réponse.Pouvez-vous donner un aperçu plus profond à ce sujet? –

+0

Vous ne savez pas si c'est ce que vous cherchez, mais: En réalité, ce que vous générez avec votre perceptron est un classificateur qui ne généralise pas à votre ensemble de test. À 100 époques (ou, honnêtement, probablement 10 époques même), un perceptron devrait converger et séparer votre ensemble d'entraînement plutôt bien. Cependant, ce classificateur peut ne pas décrire efficacement la division de toutes les données. Il y a un certain nombre de choses que vous pouvez faire pour combattre cela, y compris la régularisation de votre perceptron. Vous pouvez essayer d'imposer une pénalité L1 ou L2 et voir si cela s'améliore. D'autres algorithmes pourraient également être mieux adaptés. –

0

Dépend de votre problème de classification, et de vos données, cet hyper paramètre (n_iter) doit choisir correctement

Une astuce utile est de régler l'hyper paramètre (n_iter) avec différents nombres d'entiers et d'évaluer la précision de la classification. Essayez de regarder http://scikit-learn.org/stable/modules/grid_search.html pour plus de détails. Ceci est une bonne fonction pour rechercher le meilleur paramètre hyper, dépend de vos données