Balancieren eines unausgewogenen Datensatzes mit Keras-Bildgenerator

9

Die Keras

%Vor%

kann verwendet werden, um "Stapel von Tensor-Bilddaten mit Echtzeit-Datenerweiterung zu generieren" ( Ссылка )

Das Tutorial unter

Ссылка

demonstriert, wie ein kleiner aber ausgewogener Datensatz mit dem ImageDataGenerator erweitert werden kann. Gibt es eine einfache Möglichkeit, diesen Generator zu verwenden, um ein stark unsymmetrisches Dataset zu erweitern, sodass der resultierende generierte Dataset ausgeglichen ist?

    
user1934212 14.01.2017, 08:29
quelle

1 Antwort

12

Dies wäre kein Standardansatz für den Umgang mit unsymmetrischen Daten. Ich glaube auch nicht, dass es wirklich gerechtfertigt wäre - du würdest die Verteilungen deiner Klassen signifikant verändern, wo die kleinere Klasse jetzt viel weniger variabel ist. Die größere Klasse hätte eine reiche Variation, die kleinere wären viele ähnliche Bilder mit kleinen affinen Transformationen. Sie würden auf einer viel kleineren Region im Bildraum leben als die Mehrheitsklasse.

Die meisten Standardansätze wären:

  • Das Argument class_weights in model.fit, das Sie verwenden können, damit das Modell mehr von der Minoritätsklasse lernt.
  • Reduzierung der Größe der Mehrheitsklasse.
  • akzeptiert das Ungleichgewicht. Deep Learning kann damit umgehen, es braucht nur viel mehr Daten (die Lösung für alles, wirklich).

Die ersten beiden Optionen sind wirklich Hacks, die Ihre Fähigkeit beeinträchtigen können, mit (unausgewogenen) realen Daten umzugehen. Das Problem der geringen Variabilität, das mit zu wenig Daten einhergeht, wird nicht wirklich gelöst. Wenn die Anwendung in einem echten Weltdatensatz nach dem Modelltraining keine Rolle spielt und Sie nur gute Ergebnisse mit Ihren Daten wünschen, dann sind diese Optionen in Ordnung (und viel einfacher als Generatoren für eine einzelne Klasse).

Die dritte Option ist der richtige Weg, wenn Sie genügend Daten haben (zum Beispiel das aktuelle Papier von Google) Der Nachweis diabetischer Retinopathie erreichte eine hohe Genauigkeit in einem Datensatz, in dem positive Fälle zwischen 10% und 30% lagen.

Wenn Sie wirklich eine Vielzahl von erweiterten Bildern für eine Klasse gegenüber einer anderen erstellen möchten, wäre es wahrscheinlich am einfachsten, dies in der Vorverarbeitung zu tun. Nimm die Bilder der Minderheitenklasse und erzeuge einige erweiterte Versionen und nenne das alles nur einen Teil deiner Daten. Wie ich schon sagte, das ist alles ziemlich hacky.

    
Luke_radio 14.01.2017, 08:47
quelle

Tags und Links