Die Datenaugmentierung ist eine Technik, die verwendet wird, um die Menge und Vielfalt der Trainingsdaten künstlich zu erhöhen, ohne tatsächlich neue Daten zu sammeln. Dies ist besonders nützlich, wenn die verfügbaren Trainingsdaten begrenzt sind und das Risiko der Überanpassung besteht. Durch die Anwendung verschiedener Transformationen auf die vorhandenen Datenpunkte können neue Beispiele generiert werden, die dem Modell helfen, robuster und generalisierbarer zu werden.
1. Bilddatenaugmentierung: Bei Bilddaten werden Techniken wie das Drehen, Spiegeln, Skalieren, Zuschneiden und Ändern der Helligkeit der Bilder angewendet. Diese Transformationen helfen dem Modell, invariant gegenüber diesen Änderungen zu werden und die Leistung auf neuen Bildern zu verbessern.
import numpy as npimport matplotlib.pyplot as pltfrom keras.preprocessing.image import ImageDataGeneratorfrom keras.preprocessing import image# Erstellung eines ImageDataGenerators mit verschiedenen Datenaugmentierungstechnikendatagen =ImageDataGenerator(rotation_range=40,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,fill_mode='nearest')# Beispielhafte Anwendung der Datenaugmentierung auf ein Bildimg_path ='path_to_image.jpg'# Pfad zu einem Beispielbildimg = image.load_img(img_path,target_size=(150,150))x = image.img_to_array(img)x = np.expand_dims(x,axis=0)# Generierung von augmentierten Bilderni =0for batch in datagen.flow(x,batch_size=1): plt.figure(i) imgplot = plt.imshow(image.array_to_img(batch[0])) i +=1if i %4==0:breakplt.show()
2. Textdatenaugmentierung: Bei Textdaten werden Techniken angewendet wie Synonymersetzung, Einfügen von Rauschen, Umsortieren von Wörtern und andere Transformationen, die die Vielfalt der Textdaten erhöhen, ohne deren Bedeutung wesentlich zu verändern.
3. Tabellendatenaugmentierung: Bei tabellarischen Daten können Techniken wie das Hinzufügen von Rauschen zu numerischen Werten, das Erzeugen synthetischer Datenpunkte durch Bootstrapping oder das Verwenden von SMOTE (Synthetic Minority Over-sampling Technique) zur Erhöhung der Vielfalt und Balance der Daten beitragen.
Durch die Anwendung von Datenaugmentierungstechniken können Modelle robuster und generalisierbarer gemacht werden, was zu besseren Leistungen auf unbekannten Daten führt. Es ist ein wichtiger Schritt, insbesondere bei kleinen Datensätzen, um die Menge der verfügbaren Trainingsdaten zu erhöhen und die Modellleistung zu verbessern.
import nlpaug.augmenter.word as naw
# Erstellung eines Augmenters für Synonymersetzungen
aug = naw.SynonymAug(aug_src='wordnet')
text = 'This is an example sentence for text augmentation.'
augmented_text = aug.augment(text)
from imblearn.over_sampling import SMOTE
from sklearn.datasets import make_classification
import pandas as pd
# Erstellung eines Beispiel-Datensatzes
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, weights=[0.1, 0.9], random_state=42)
# Anwendung von SMOTE zur Datenaugmentierung
smote = SMOTE(random_state=42)
X_res, y_res = smote.fit_resample(X, y)
# Umwandlung in Pandas DataFrame für bessere Übersicht
df_res = pd.DataFrame(X_res)
df_res['target'] = y_res