Ensemble-Lernen zur Betrugserkennung

Ensemble-Lernen zur Betrugserkennung

Anomaliedetektion in Zeitserien-Daten: Ein Beispiel mit dem Isolation Forest Modell zur Analyse von Verkaufsdaten

Anomalieerkennung in Zeitreihendaten mit dem Isolation Forest-Modell

In der heutigen digitalen Welt ist die Analyse von Daten zu einem unverzichtbaren Instrument geworden. Besonders in der Verkaufsanalyse kann die Identifizierung von Anomalien entscheidend sein, um Trends zu erkennen und fundierte Entscheidungen zu treffen. In diesem Blogbeitrag werden wir ein einfaches Beispiel vorstellen, wie das Isolation Forest-Modell zur Anomalieerkennung in Zeitreihendaten eingesetzt werden kann. Dabei konzentrieren wir uns auf einen bestimmten Parameter: die Verkaufszahlen im Zeitverlauf.

Datenimport und -vorbereitung

Für unser Beispiel verwenden wir einen Verkaufsdatensatz, der Tag, Produktinformationen, geografische Informationen über den Kunden und den Verkaufsbetrag enthält. Um die Komplexität zu reduzieren, konzentrieren wir uns jedoch nur auf die Verkaufszahlen über die Zeit. Die Daten können hier abgerufen werden.

Zuerst importieren wir die erforderlichen Pakete und laden die Verkaufsdaten:

import pandas as pd
from datetime import datetime
from sklearn.ensemble import IsolationForest
import matplotlib.pyplot as plt

# Veräußere die Verkaufsdaten
sales = pd.read_excel("Data/Sales Data.xlsx")
# Wähle nur das Datum und den Verkauf aus
revenue = sales[['Order Date', 'Sales']]
revenue.head()

Datenvorverarbeitung

Da wir über vier Jahre Daten verfügen, ist es sinnvoll, die monatlichen Verkaufszahlen zu aggregieren und zu visualisieren. Hier ist der Code zur Vorverarbeitung der Daten:

# Formatiere das Bestelldatum zu Datetime für Monat und Jahr
revenue['Order Date'] = pd.to_datetime(revenue['Order Date'], format='%Y-%m').dt.to_period('M')
# Summe der Verkäufe nach Monat und Jahr
revenue = revenue.groupby(revenue['Order Date']).sum()
# Setze das Datum als Index
revenue.index = revenue.index.strftime('%m-%Y')

Nun visualisieren wir die monatlichen Verkaufszahlen:

plt.figure(figsize=(8, 5))
plt.plot(revenue['Order Date'], revenue['Sales'])
plt.xlabel('Monat')
plt.ylabel('Gesamtverkauf')
plt.title('Monatliche Verkaufszahlen')
plt.xticks(rotation=90)
plt.show()

Anomalieerkennung mit dem Isolation Forest-Modell

Nachdem wir die Verkaufszahlen visualisiert haben, müssen wir unser Isolation Forest-Modell initialisieren und anpassen. Die wichtigsten Parameter sind:

  • n_estimators: Anzahl der Basisschätzer im Ensemble
  • max_samples: Anzahl der Proben, die von X gezogen werden, um jeden Basisschätzer zu trainieren
  • contamination: Anteil der Anomalien im Datensatz
  • max_features: Anzahl der Merkmale, die von X gezogen werden, um jeden Basisschätzer zu trainieren

Hier ist der Code zum Erstellen und Anpassen des Modells:

model = IsolationForest(n_estimators=100, max_samples='auto', contamination=float(0.1), max_features=1.0)
model.fit(revenue[['Sales']])

Nun fügen wir die Anomalie-Scores und Vorhersagen zu unserem Datensatz hinzu:

revenue['scores'] = model.decision_function(revenue[['Sales']])
revenue['anomaly'] = model.predict(revenue[['Sales']])

Visualisierung der Anomalien

Um die Anomalien zu visualisieren, erstellen wir dasselbe Liniendiagramm und heben die Anomalien hervor:

plt.figure(figsize=(8, 5))
plt.plot(revenue['Order Date'], revenue['Sales'], label='Monatliche Verkaufszahlen')
plt.scatter(revenue[revenue['anomaly'] == -1].index, revenue['Sales'][revenue['anomaly'] == -1], color='red', label='Anomalien')
plt.xlabel('Monat')
plt.ylabel('Gesamtverkauf')
plt.title('Monatliche Verkaufszahlen mit Anomalien')
plt.xticks(rotation=90)
plt.legend()
plt.show()

Ergebnisse und Interpretation

Die Analyse zeigt, dass das Modell gut funktioniert. Anomalien, die durch signifikante Abweichungen von den Verkaufszahlen identifiziert wurden, sind deutlich erkennbar. jedoch ist es wichtig, die Natur der Daten zu verstehen. Beispielsweise sollte ein Anstieg oder Rückgang zu Beginn eines neuen Geschäftsjahres nicht zwangsläufig als Anomalie betrachtet werden.

In unserem Fall können wir die erste Anomalie im Februar 2015 beobachten, die möglicherweise durch den Neubeginn des Geschäfts bedingt ist. Bei unserer letzten Anomalie im November 2018 könnte es sich jedoch um einen tatsächlichen Anzeichen für einen Aufwärtstrend handeln.

Fazit

Die Anomalieerkennung in Zeitreihendaten ist ein leistungsfähiges Werkzeug zur Analyse von Verkaufsdaten. Das Isolation Forest-Modell bietet eine robuste Methode zur Identifizierung von Abweichungen, die Unternehmen helfen können, Trends zu erkennen und besser auf Marktveränderungen zu reagieren. Denken Sie jedoch daran, dass das Verständnis des Kontexts der Daten entscheidend ist, um genaue Schlussfolgerungen zu ziehen.

Durch die Kombination von statistischen Modellen und Geschäftsanalysen können Unternehmen wertvolle Einblicke gewinnen, um ihre Strategien zu optimieren und den Erfolg ihres Geschäfts zu steigern.