Wie gehe ich mit einem binären Klassifizierungsproblem um, bei dem die Instanzen in der negativen Klasse sehr ähnlich sind? [Duplikat]

Dec 01 2020

Angenommen, man möchte erkennen, ob ein Bild fester Größe eine Katze enthält oder nicht. Als Datensatz haben Sie jedoch 10000 Bilder von Katzen und 30000 Bilder, die keine Katze enthalten, aber einander sehr ähnlich sind. Nehmen wir zum Beispiel an, die 30000 Bilder in der Klasse "nicht Katze" enthalten nur Bilder von einer oder zwei Arten von Spinnen.

Wenn Sie ein CNN trainieren, werden Sie feststellen, dass Sie im Test-Set eine hohe Punktzahl erreichen (hier hohe Punktzahl = fast vollständig diagonale Verwirrungsmatrix), aber wenn Sie das CNN in der realen Welt verwenden möchten, werden Sie feststellen, dass fast alles als klassifiziert wird eine Katze.

Warum verallgemeinert sich das Netzwerk in diesem Fall schlecht? Selbst wenn der Datensatz nicht die Art von Daten darstellt, würde das CNN in der realen Welt sehen, sollte es für das CNN nicht einfach sein zu sagen: "Ich habe 10000 Beispiele von Katzen gesehen, also alles, was nicht so aussieht." eine Katze ist keine Katze "?

Wie würde man mit diesem Problem umgehen (außer mehr Daten zu sammeln)?

Antworten

etiennedm Dec 01 2020 at 21:30

Die CNN in diesem Fall nicht lernen , was eine Katze ist , sondern was zu unterscheiden von einem ohne eine Katze , ein Bild mit einer Katze.
Wenn alle Ihre "No-Cat" -Bilder Spinnen enthalten, kann der CNN auch nur durch Erkennen der Spinne (n) konvergieren: Bilder mit Spinne (n) gehören zu "No-Cat" und andere zu "Cat" . Das erklärt, warum Sie eine so gute Verwirrungsmatrix für das Testen von Daten und eine so schlechte Leistung in der realen Welt haben.

Sie haben einige Möglichkeiten, um eine solche Situation zu vermeiden:

  • Fügen Sie Ihrem "No-Cat" -Label wie gesagt weitere Bilder hinzu (z. B. mithilfe öffentlicher Datensätze).
  • Versuchen Sie es mit Ein-Klassen-Klassifizierungsansätzen . Wenn Sie mit neuronalen Netzen vertraut sind, können Sie sich mit Rekonstruktionsfehlern von Autoencodern befassen (siehe diesen Beitrag: So verwenden Sie einen Datensatz mit nur einer Datenkategorie oder diesen sklearn-Leitfaden )

Ich hoffe es hilft