J'ai un problème de classification où la classe d'intérêt est seulement de 7% de l'ensemble de données, et la population entière est d'environ 1200 observations. Je comprends que ImageDataGenerator
de Keras aide à augmenter les données pour augmenter le nombre d'observations avant d'entraîner le modèle, mais est-il possible d'augmenter une seule classe, comme ajouter du bruit, brouiller ou effectuer des transformations seulement sur la classe minoritaire ?Classes déséquilibrées dans les réseaux de neurones convolutionnels
Répondre
Vous pouvez soit essayer d'équilibrer avec l'argument class_weight dans la fonction d'ajustement() qui prend un cours de cartographie dictionnaire à une valeur de poids. Vous pouvez même utiliser sklearn pour calculer les poids de classe appropriés. Voir PSCS réponse ici: https://datascience.stackexchange.com/questions/13490/how-to-set-class-weights-for-imbalanced-classes-in-keras
Ou vous pouvez utiliser Keras ImageDateGenerator avec flow_from_directory() et enregistrer une image augmenter l'exécution dans un répertoire avec l'argument save_to_dir générant ainsi plus d'exemples de la classe sous-représentés: https://keras.io/preprocessing/image/#imagedatagenerator
Pour ce mannequin exécutez-vous seulement fournir des échantillons de la classe que vous voulez plus d'échantillons de. Ensuite, vous utilisez vos données équilibrées d'entraînement et de validation pour votre entraînement actuel.
Il existe une boîte à outils d'apprentissage automatique qui vous permet d'effectuer des augmentations sur les images, notamment les transformations, le zoom/strech, le bruit et le flou.
Le augmentateur d'image peuvent être trouvées ici: https://github.com/codebox/image_augmentor