Page cover

Datenaugmentierung

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.

Mehr erfahren: Keras/ImageDataGenerator

import numpy as np
import matplotlib.pyplot as plt
from keras.preprocessing.image import ImageDataGenerator
from keras.preprocessing import image

# Erstellung eines ImageDataGenerators mit verschiedenen Datenaugmentierungstechniken
datagen = 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 Bild
img_path = 'path_to_image.jpg'  # Pfad zu einem Beispielbild
img = 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 Bildern
i = 0
for batch in datagen.flow(x, batch_size=1):
    plt.figure(i)
    imgplot = plt.imshow(image.array_to_img(batch[0]))
    i += 1
    if i % 4 == 0:
        break
plt.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.

Mehr erfahren: nlpaug

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)

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.

Mehr erfahren: imbalanced-learn/SMOTE

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

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.

Mehr erfahren: Arocom/Datenaugmentierung, Datacamp/A Complete Guide to Data Augmentation

Last updated