2017-10-12 4 views
-1

J'essaie de former un NN pour la classification binaire mais en utilisant une approche multi-classes, donc Classe (C) = 2. La précision sur les ensembles de données de train et de test est de ~ 96%. Cependant, la vérification manuelle révèle que Tensorflow sélectionne toujours 0 pour chaque exemple.Tensorflow prédit toujours 0

Je suis curieux de savoir comment résoudre ce problème et ce que je fais de mal. Appréciez grandement votre aide. Merci.

(S'il vous plaît laissez-moi savoir si je suis trop vague et ne pas fournir assez d'informations pour que vous puissiez d'identifier une bonne solution. Merci.)

+2

Veuillez [voir MCVE] (https://stackoverflow.com/help/mcve) et modifier votre question en conséquence. –

+1

Nous aurons probablement besoin du code d'un MCVE (voir le commentaire ci-dessus) pour vous aider correctement. Juste en vérifiant la réponse triviale: votre classe 0 représente-t-elle 96% de vos données? Dans ce cas il n'y a pas de problème, il vient d'apprendre à prédire 0 tout le temps, ce qui donne 96% de bonnes réponses. Sinon, nous aurons besoin de code et de connaissances sur les données. – gdelab

Répondre

0

Si vous avez 96% de précision et toutes les prévisions sont 0, votre jeu de données est probablement déséquilibré. Vous devez l'équilibrer et rendre le nombre d'échantillons des classes positives et négatives identiques. Vous pouvez également ajouter des poids pour la classe, en pénalisant plus la classe avec moins d'échantillons.

+0

Cette réponse et celle de @gdelab sont justes. J'ai jeté un coup d'oeil à l'ensemble de données et en effet c'est ce que vous aviez suggéré. Des suggestions sur la façon de résoudre ce problème? (Malheureusement, je n'ai pas assez de réputations pour voter pour vos réponses) –

+0

Pour les réseaux de neurones, il n'y a pas de solution simple, vous pouvez ajouter des poids à votre modèle ou corriger l'ensemble de données. Ma solution serait de rééchantillonner l'ensemble de données, vous pouvez sous-échantillonner la classe prédominante de sorte que vous avez 50/50 de chaque classe, ou vous pouvez sur-échantillonner la classe minoritaire. Theres une bibliothèque en python avec plusieurs solutions pour cela: https://github.com/scikit-learn-contrib/imbalanced-learn –