Kurs
Verstehen von Datendrift und Modelldrift: Drift-Erkennung in Python
"Drift" ist ein Begriff aus dem maschinellen Lernen, der beschreibt, wie die Leistung eines maschinellen Lernmodells in der Produktion im Laufe der Zeit langsam schlechter wird. Dies kann aus verschiedenen Gründen geschehen, z. B. weil sich die Verteilung der Eingabedaten im Laufe der Zeit ändert oder weil sich die Beziehung zwischen der Eingabe (x) und dem gewünschten Ziel (y) verändert.
Drift kann ein großes Problem sein, wenn wir maschinelles Lernen in der realen Welt einsetzen, wo die Daten oft dynamisch sind und sich ständig ändern. In diesem Artikel geht es darum, warum Modelle driften, welche Arten von Drift es gibt, welche Algorithmen es gibt, um sie aufzuspüren, und schließlich wird dieser Artikel mit einer Open-Source-Implementierung der Drifterkennung in Python abgeschlossen.
Fähigkeiten im Bereich Machine Learning aufbauen
Was ist Drift?
Modelle des maschinellen Lernens werden mit historischen Daten trainiert, aber sobald sie in der realen Welt eingesetzt werden, können sie veraltet sein und im Laufe der Zeit ihre Genauigkeit verlieren, was als Drift bezeichnet wird. Die Drift ist die Veränderung der statistischen Eigenschaften der Daten, die zum Trainieren eines maschinellen Lernmodells verwendet wurden, im Laufe der Zeit. Dies kann dazu führen, dass das Modell ungenauer wird oder eine andere Leistung erbringt, als es eigentlich vorgesehen war.
Mit anderen Worten: "Drift" ist die Abnahme der Fähigkeit eines Modells, genaue Vorhersagen zu treffen, aufgrund von Veränderungen in der Umgebung, in der es eingesetzt wird.
Warum driften Machine Learning-Modelle ab?
Es gibt mehrere Gründe, warum Modelle für maschinelles Lernen im Laufe der Zeit abdriften können.
Ein häufiger Grund ist einfach, dass die Daten, auf denen das Modell trainiert wurde, veraltet sind oder nicht mehr den aktuellen Bedingungen entsprechen.
Nehmen wir zum Beispiel ein maschinelles Lernmodell, das darauf trainiert ist, den Aktienkurs eines Unternehmens auf der Grundlage historischer Daten vorherzusagen. Wenn wir das Modell mit Daten aus einem stabilen Markt trainieren, könnte es anfangs gut abschneiden. Wenn der Markt jedoch im Laufe der Zeit volatiler wird, ist das Modell möglicherweise nicht mehr in der Lage, den Aktienkurs genau vorherzusagen, weil sich die statistischen Eigenschaften der Daten verändert haben.
Ein weiterer Grund für die Modellabweichung ist, dass das Modell nicht dafür ausgelegt ist, Änderungen in den Daten zu verarbeiten. Einige Modelle für maschinelles Lernen können mit Veränderungen in den Daten besser umgehen als andere, aber kein Modell kann eine Abweichung vollständig vermeiden.
Arten von Drift
Schauen wir uns die zwei verschiedenen Arten von Abwanderung an, die es zu beachten gilt:
1. Konzept Drift
Konzeptdrift, auch bekannt als Modelldrift, tritt auf, wenn sich die Aufgabe, für die das Modell entwickelt wurde, im Laufe der Zeit ändert. Stell dir zum Beispiel vor, dass ein maschinelles Lernmodell darauf trainiert wurde, Spam-E-Mails anhand des Inhalts der E-Mail zu erkennen. Wenn sich die Arten von Spam-E-Mails, die Menschen erhalten, stark verändern, kann das Modell Spam möglicherweise nicht mehr genau erkennen.
Concept Drift kann weiter in vier Kategorien unterteilt werden (Lernen unter Concept Drift: A Review, Jie Lu et al.):
- Plötzliche Drift
- Allmähliche Drift
- Inkrementelle Drift
- Wiederkehrende Konzepte
Source: https://arxiv.org/pdf/2004.05785.pdf
2. Datendrift
Die Datendrift, auch bekannt als Kovariatenverschiebung, tritt auf, wenn sich die Verteilung der Eingabedaten im Laufe der Zeit ändert. Nehmen wir zum Beispiel ein maschinelles Lernmodell, das so trainiert wurde, dass es die Wahrscheinlichkeit vorhersagt, dass ein Kunde ein Produkt kauft, basierend auf seinem Alter und Einkommen. Wenn sich die Alters- und Einkommensverteilung der Kunden im Laufe der Zeit stark verändert, kann das Modell die Wahrscheinlichkeit eines Kaufs möglicherweise nicht mehr genau vorhersagen.
Es ist wichtig, sich sowohl der Konzept- als auch der Datendrift bewusst zu sein und Maßnahmen zu ergreifen, um ihre Auswirkungen zu verhindern oder abzuschwächen. Zu den Strategien zur Bekämpfung der Drift gehören die kontinuierliche Überwachung und Bewertung der Leistung eines Modells, die Aktualisierung des Modells mit neuen Daten und die Verwendung von Modellen für maschinelles Lernen, die robuster gegen Drift sind.
In unserer DataFrame-Podcast-Episode erfährst du mehr über Post-Deployment Data Science, wie zum Beispiel Drift.
Wie erkennst du Drift?
Es gibt zwei Möglichkeiten, wie wir Drift feststellen können:
1. Modellbasierter Ansatz für maschinelles Lernen: Modellbasierter Ansatz, um zu erkennen, ob die eingehenden Eingangsdaten gedriftet sind oder nicht.
2. Statistische Tests: Es gibt viele statistische Tests, um Datenabweichungen festzustellen. Sie werden hauptsächlich in drei Kategorien unterteilt:
-
- Sequentielle Analysemethoden
- Individuelles Modell zur Erkennung von Drift
- Zeitverteilungsmethode, die sehr verbreitet ist.
Zeitverteilungsbasierte Verfahren nutzen statistische Methoden, um die Differenz zwischen zwei Wahrscheinlichkeitsverteilungen zu berechnen, um eine Drift zu erkennen. Zu diesen Methoden gehören der Populationsstabilitätsindex, die KL-Divergenz, die JS-Divergenz, der KS-Test und die Wasserstein-Metrik.
Algorithmen zur Erkennung von Datendrift
Kolmogorov-Smirnov (K-S) Test
Der Kolmogorov-Smirnov (K-S)-Test ist ein nichtparametrischer statistischer Test, der verwendet wird, um festzustellen, ob zwei Datensätze aus der gleichen Verteilung stammen. Sie wird oft verwendet, um zu prüfen, ob eine Datenstichprobe aus einer bestimmten Population stammt oder um zwei Stichproben zu vergleichen, um festzustellen, ob sie aus derselben Population stammen.
Die Nullhypothese bei diesem Test ist, dass die Verteilungen gleich sind. Wenn diese Hypothese abgelehnt wird, deutet das darauf hin, dass es eine Abweichung im Modell gibt.
Der K-S-Test ist ein nützliches Instrument, um Datensätze zu vergleichen und festzustellen, ob sie aus der gleichen Verteilung stammen.
Index für die Bevölkerungsstabilität
Der Populationsstabilitätsindex (PSI) ist ein statistisches Maß, das verwendet wird, um die Verteilung einer kategorialen Variable in zwei verschiedenen Datensätzen zu vergleichen.
Der Populationsstabilitätsindex (PSI) ist ein Instrument, mit dem du messen kannst, wie stark sich die Verteilung einer Variable zwischen zwei Stichproben oder im Laufe der Zeit verändert hat. Sie wird häufig verwendet, um Veränderungen in den Merkmalen einer Population zu überwachen und mögliche Probleme mit der Leistung eines maschinellen Lernmodells zu erkennen.
Ursprünglich wurde die PSI entwickelt, um Veränderungen in der Verteilung einer Punktzahl in Risiko-Scorecards zu überwachen, aber inzwischen wird sie verwendet, um Verteilungsverschiebungen für alle modellbezogenen Attribute zu untersuchen, einschließlich abhängiger und unabhängiger Variablen.
Ein hoher PSI-Wert deutet darauf hin, dass es einen signifikanten Unterschied zwischen den Verteilungen der Variablen in den beiden Datensätzen gibt, was auf einen Drift im Modell hindeuten kann.
Wenn sich die Verteilung einer Variable erheblich verändert hat oder wenn sich mehrere Variablen in gewissem Umfang verändert haben, kann es notwendig sein, das Modell neu zu kalibrieren oder neu zu erstellen, um seine Leistung zu verbessern.
Page-Hinkley-Methode
Die Page-Hinkley-Methode ist ein statistisches Verfahren, mit dem man Veränderungen des Mittelwerts einer Datenreihe im Laufe der Zeit feststellen kann. Sie wird häufig verwendet, um die Leistung von Machine-Learning-Modellen zu überwachen und Veränderungen in der Verteilung der Daten zu erkennen, die auf eine Modellabweichung hindeuten könnten.
Um die Page-Hinkley-Methode anzuwenden, musst du zunächst einen Schwellenwert und eine Entscheidungsfunktion festlegen. Der Schwellenwert ist ein Wert, ab dem eine Veränderung des Mittelwerts als signifikant angesehen wird, und die Entscheidungsfunktion ist eine Funktion, die den Wert 1 liefert, wenn eine Veränderung festgestellt wurde, und den Wert 0, wenn keine Veränderung festgestellt wurde.
Als Nächstes wird der Mittelwert der Datenreihe bei jedem Zeitschritt berechnet und die Entscheidungsfunktion auf die Daten angewandt, um festzustellen, ob eine Veränderung eingetreten ist. Wenn die Entscheidungsfunktion den Wert 1 zurückgibt, bedeutet dies, dass eine Veränderung festgestellt wurde und das Modell möglicherweise abdriftet.
Die Page-Hinkley-Methode ist eine einfache und effektive Methode, um Veränderungen im Mittelwert einer Datenreihe im Laufe der Zeit zu erkennen. Sie ist besonders nützlich, um kleine Veränderungen im Mittelwert zu erkennen, die bei der Betrachtung der Daten vielleicht nicht sofort auffallen. Es ist jedoch wichtig, den Schwellenwert und die Entscheidungsfunktion sorgfältig auszuwählen, um sicherzustellen, dass die Methode empfindlich genug ist, um Veränderungen in den Daten zu erkennen, aber nicht so empfindlich, dass sie falsche Alarme erzeugt.
Implementierung der Drifterkennung in Python
In diesem Abschnitt werden wir Evidently nutzen, um Drift zu erkennen. Evidently ist eine Open-Source-Python-Bibliothek für Datenwissenschaftler und Ingenieure, die mit maschinellem Lernen arbeiten. Er hilft ihnen, ihre Modelle zu testen, zu bewerten und zu verfolgen, wie gut sie von der Validierung bis zur Produktion funktionieren.
Bibliotheken importieren
```
# import libraries
import pandas as pd
import numpy as np
from sklearn import datasets
from evidently.report import Report
from evidently.metrics import DataDriftTable
from evidently.metrics import DatasetDriftMetric
```
Datensatz importieren und Referenz- und Zielpartition erstellen
```
# create ref and cur dataset for drift detection
adult_data = datasets.fetch_openml(name='adult', version=2, as_frame='auto')
adult = adult_data.frame
adult_ref = adult[~adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])]
adult_cur = adult[adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])]
adult_cur.iloc[:2000, 3:5] = np.nan
```
Driftbericht generieren
```
#dataset-level metrics
data_drift_dataset_report = Report(metrics=[
DatasetDriftMetric(),
DataDriftTable(),
])
data_drift_dataset_report.run(reference_data=adult_ref, current_data=adult_cur)
data_drift_dataset_report
```
Drift Detection Dashboard - erstellt mit EvidentlyAI
Driftbericht im JSON-Format exportieren
```
#report in a JSON format
data_drift_dataset_report.json()
```
Hier findest du das komplette DataCamp-Notizbuch.
Fazit
Daten- und Modellabweichungen können maschinelle Lernsysteme in der Produktion vor große Herausforderungen stellen. Wenn du die Ursachen und Auswirkungen von Drift verstehst und wirksame Verfahren zur Überwachung der Drift einführst, kannst du sicherstellen, dass deine maschinellen Lernmodelle im Laufe der Zeit genau und zuverlässig bleiben.
Die Überwachung der Leistung deiner Modelle, die Verwendung eines Modells zur Erkennung von Drift und regelmäßiges Nachtrainieren anhand aktualisierter Daten sind nur einige der bewährten Verfahren, die du anwenden kannst, um die Risiken von Drift zu minimieren. Indem du die Drift proaktiv überwachst, kannst du sicherstellen, dass dein maschinelles Lernsystem auch weiterhin einen Mehrwert für dein Unternehmen liefert.
Die Überwachung von Machine-Learning-Modellen auf Drift ist nur ein Aspekt eines breiteren Feldes namens MLOps. Das Verständnis der MLOps-Konzepte ist für jeden Datenwissenschaftler, Ingenieur oder jede Führungskraft unerlässlich, um Machine-Learning-Modelle von einem lokalen Notebook zu einem funktionierenden Modell in der Produktion zu bringen.
Wenn du tiefer in das Verständnis von MLOps eintauchen möchtest und wissen willst, wie du davon in deiner Karriere profitieren kannst, schau dir unseren Kurs "MLOps-Konzepte " an. Hier erfährst du, was MLOps ist, verstehst die verschiedenen Phasen des MLOps-Prozesses und erkennst die verschiedenen Reifegrade von MLOps. Nachdem du die wichtigsten MLOps-Konzepte kennengelernt hast, bist du gut gerüstet, um maschinelles Lernen kontinuierlich, zuverlässig und effizient umzusetzen.
Drift Detection FAQs
Was ist eine Modelldrift beim maschinellen Lernen?
Ein Modelldrift beim maschinellen Lernen liegt vor, wenn die Leistung eines Modells bei neuen Daten anders ist als bei den Trainingsdaten, auf denen es aufgebaut wurde. Dafür kann es verschiedene Gründe geben, z. B. Veränderungen in der Verteilung der Daten im Laufe der Zeit, neue Daten, die nicht zu den Annahmen des ursprünglichen Modells passen, oder die Unfähigkeit des Modells, sich an veränderte Bedingungen anzupassen.
Warum ist die Modelldrift ein Problem?
Die Modelldrift kann die Leistung und Genauigkeit eines maschinellen Lernmodells erheblich beeinträchtigen. Wenn die Vorhersagen des Modells unzuverlässiger werden, kann dies zu falschen Entscheidungen oder Handlungen führen, die negative Folgen haben können. Im Gesundheitswesen könnte die Modelldrift zum Beispiel zu falschen Diagnosen oder Behandlungsempfehlungen führen, während sie im Finanzbereich zu schlechten Investitionsentscheidungen führen könnte.
Wie erkennst du die Modellabweichung?
Es gibt verschiedene Möglichkeiten, um festzustellen, ob ein Modell abdriftet, z. B. statistische Tests, Algorithmen zur Erkennung von Abdriften und die Untersuchung der Leistung des Modells. Einige dieser Methoden sind dafür gemacht, Drifts in Echtzeit zu finden, während andere besser für Tests zu bestimmten Zeiten oder in Gruppen geeignet sind. Es ist wichtig, die richtige Technik für die jeweilige Anwendung und Datenumgebung zu wählen.
Wie verhinderst du die Modellabweichung?
Um eine Modellabweichung zu verhindern, bedarf es einer Kombination aus sorgfältiger Modellauswahl, regelmäßiger Überwachung und Prüfung sowie proaktivem Eingreifen. Dies kann bedeuten, dass Algorithmen verwendet werden, die robuster gegenüber Drift sind, dass Modelle regelmäßig auf neue Daten umgeschult werden oder dass Strategien implementiert werden, um aktiv gegen Drift vorzugehen, wenn sie entdeckt wird. Es ist auch wichtig, dass du die Faktoren kennst, die zu einem Abdriften führen können, damit du Maßnahmen ergreifen kannst, um sie zu verhindern.
Wie beeinflusst die Datenverteilung die Modelldrift?
Die Datenverteilung kann die Leistung eines maschinellen Lernmodells erheblich beeinflussen. Wenn sich die Verteilung der Daten im Laufe der Zeit ändert, kann dies zu einer Modelldrift führen, da das Modell möglicherweise nicht mehr in der Lage ist, neue Daten, die nicht mit seinen ursprünglichen Annahmen übereinstimmen, genau vorherzusagen. Dies kann auf unterschiedliche Weise geschehen, z. B. durch natürliche Schwankungen in den Daten, die Hinzufügung neuer Datenquellen oder Änderungen in den zugrunde liegenden Prozessen oder Systemen, die die Daten erzeugen.
Ist die Modelldrift umkehrbar?
In manchen Fällen lässt sich die Modelldrift umkehren, indem das Modell mit neuen Daten neu trainiert oder seine Parameter angepasst werden. Das ist jedoch nicht immer möglich, vor allem, wenn sich die Datenverteilung stark verändert hat oder das Modell zu komplex oder spezialisiert geworden ist. In diesen Situationen kann es notwendig sein, mit einem neuen Modell zu beginnen.
Ist es möglich, die Modelldrift vollständig zu eliminieren?
Eine vollständige Beseitigung der Modelldrift ist schwierig, wenn nicht sogar unmöglich. Selbst die robustesten und am besten konzipierten Modelle für maschinelles Lernen können durch Veränderungen der Daten oder der zugrunde liegenden Prozesse, die sie erzeugen, beeinträchtigt werden. Am besten ist es, die Auswirkungen der Modellabweichung durch regelmäßige Überwachung, Tests und Eingriffe zu kontrollieren und abzumildern.
Wie wirkt sich die Modelldrift auf die Leistung des Modells aus?
Die Modelldrift kann einen erheblichen Einfluss auf die Leistung eines maschinellen Lernmodells haben. Wenn die Vorhersagen des Modells ungenauer werden, kann dies zu einer geringeren Leistung bei wichtigen Kennzahlen wie Genauigkeit, Präzision, Wiedererkennung und Gesamteffektivität des Modells führen. In manchen Fällen kann die Modelldrift sogar dazu führen, dass ein Modell komplett versagt, was zu falschen oder unzuverlässigen Vorhersagen führt.
Wie wirkt sich die Modelldrift auf die Modellgenauigkeit aus?
Die Modelldrift kann sich negativ auf die Genauigkeit eines maschinellen Lernmodells auswirken. Wenn die Vorhersagen des Modells ungenauer werden, kann dies zu falschen Entscheidungen oder Handlungen führen, was in der Praxis negative Folgen haben kann. Im Gesundheitswesen könnte die Modelldrift zum Beispiel zu falschen Diagnosen oder Behandlungsempfehlungen führen, während sie im Finanzbereich zu schlechten Investitionsentscheidungen führen könnte. Es ist wichtig, die Modelldrift regelmäßig zu überwachen und zu testen, um die Genauigkeit des Modells zu erhalten.
Verdiene eine Top-KI-Zertifizierung
MLOps-Kurse
Kurs
MLOps-Einsatz und Lebenszyklus
Kurs