Wenn Sie Driftauswertungen konfigurieren, können Sie Metriken generieren, mit deren Hilfe Sie feststellen können, wie gut Ihr Modell die Ergebnisse im Laufe der Zeit vorhersagt.
Sie können die Ergebnisse Ihrer Drift-Bewertungen auf dem Insights-Dashboard einsehen. Zum Anzeigen der Ergebnisse können Sie eine Modellbereitstellungskachel auswählen und auf den Pfeil im Abschnitt Drift klicken, um eine Zusammenfassung der Driftmetriken aus Ihrer letzten Auswertung anzuzeigen. Weitere Informationen finden Sie unter Abweichungsergebnisse überprüfen.
Driftmetriken werden berechnet, indem das Verhalten Ihres Modells analysiert und ein eigenes Modell erstellt wird, um vorherzusagen, ob Ihr Modell genaue Vorhersagen für Datenpunkte erzeugt. Dieses Abweichungserkennungsmodell verarbeitet Nutzdaten, um die Anzahl der Datensätze zu ermitteln, für die Ihr Modell ungenaue Vorhersagen erstellt, und generiert die vorhergesagte Genauigkeit Ihres Modells.
Drift wird nur für strukturierte Daten unterstützt und unterstützt keine Python -Funktionen.
Unterstützte Driftmetriken
Die folgenden Driftmetriken werden für Driftbewertungen unterstützt:
Abnahme der Genauigkeit
Drift-Evaluierungen schätzen den Rückgang der Genauigkeit Ihres Modells zur Laufzeit im Vergleich zu den Trainingsdaten. Die Modellgenauigkeit sinkt, wenn es eine Zunahme von Transaktionen gibt, die denen ähneln, die das Modell in den Trainingsdaten nicht ordnungsgemäß ausgewertet hat.
Funktionsweise
Die Driftüberwachung funktioniert in Vorproduktions- und Produktionsumgebungen unterschiedlich.
Wenn Sie in Vorproduktionsumgebungen beschriftete Testdaten hochladen, werden die Daten den Feedback- und Nutzdatentabellen hinzugefügt. Die beschrifteten Daten werden als Annotation zur Nutzdatentabelle hinzugefügt. Die Genauigkeit wird anhand der gekennzeichneten Datenspalte und der Vorhersagespalte aus der Nutzdatentabelle berechnet.
In Produktionsumgebungen wird ein Modell zur Drifterkennung erstellt, indem die Daten betrachtet werden, die zum Trainieren und Testen des Modells verwendet wurden. Hat das Modell beispielsweise eine Genauigkeit von 90% bei den Testdaten, bedeutet dies, dass es bei 10% der Testdaten falschen Vorhersagen liefert. Es wird ein binäres Klassifizierungsmodell erstellt, das einen Datenpunkt akzeptiert und vorhersagt, ob dieser Datenpunkt den Daten ähnlich ist, die das Modell entweder falsch (10 %) oder richtig (90 %) vorhergesagt hat.
Nach der Erstellung des Drifterkennungsmodells wird dieses Modell zur Laufzeit anhand aller Daten, die das Client-Modell erhält, bewertet. Wenn beispielsweise das Client-Modell in den letzten 3 Stunden 1000 Datensätze erhalten hat, wird das Modell zur Erkennung von Drift auf denselben 1000 Datenpunkten ausgeführt. Es wird berechnet, wie viele der Datensätze den 10% der Datensätze ähneln, bei denen das Modell beim Training einen Fehler gemacht hat. Wenn 200 dieser Datensätze den 10% ähnlich sind, dann bedeutet dies, dass die Modellgenauigkeit wahrscheinlich 80% beträgt. Da die Modellgenauigkeit während des Trainings 90% betrug, bedeutet dies, dass das Modell eine Genauigkeitsdrift von 10% aufweist.
Um die Drift nach ihrer Entdeckung zu mindern, müssen Sie eine neue Version des Modells erstellen, die das Problem behebt. Als Ausgangspunkt eignen sich die Datenpunkte, die als Ursache für die Drift hervorgehoben sind. Führen Sie die neuen Daten in das Vorhersagemodell ein, nachdem Sie die Transaktionen mit Drift manuell beschriftet und zum erneuten Trainieren des Modells verwendet haben.
Berechnung
Die Abnahme der Genauigkeitsmetrik wird nur für strukturierte Binär- und Mehrklassenklassifikationsmodelle berechnet. Jede Transaktion wird analysiert, um abzuschätzen, ob die Vorhersage des Modells richtig ist. Wenn die Modellvorhersage ungenau ist, wird die Transaktion als 'mit Drift' markiert. Die geschätzte Genauigkeit wird dann als Bruchteil der nicht abweichenden Transaktionen zur Gesamtzahl der analysierten Transaktionen berechnet. Die Basisgenauigkeit ist die Genauigkeit des Modells bei den Testdaten. Das Ausmaß der Genauigkeitsabweichung wird als Differenz zwischen der Basisgenauigkeit und der geschätzten Genauigkeit berechnet. Darüber hinaus werden alle abweichenden Transaktionen berechnet und dann auf der Grundlage der Ähnlichkeit des Beitrags jedes Merkmals zur Abweichung der Genauigkeit gruppiert. In jedem Cluster werden die wichtigen Merkmale geschätzt, die zur Genauigkeitsabweichung beigetragen haben, und ihr Einfluss wird als groß, etwas und gering eingestuft.
Abnahme der Datenkonsistenz
Funktionsweise
Jede Transaktion wird auf Dateninkonsistenz untersucht, indem die Transaktionen zur Laufzeit mit den Mustern der Transaktionen in den Trainingsdaten verglichen werden. Wenn eine Transaktion gegen mindestens ein Trainingsdatenmuster verstößt, wird die Transaktion als inkonsistent identifiziert. Um den Rückgang der Datenkonsistenz zu berechnen, wird die Gesamtzahl der Transaktionen durch die Anzahl der Transaktionen geteilt, die als inkonsistent identifiziert wurden. Wenn beispielsweise 10 Transaktionen als inkonsistent aus einer Gruppe von 100 Transaktionen identifiziert werden, beträgt der Rückgang der Datenkonsistenz 10%.
Berechnung
Um Dateninkonsistenzen zu erkennen, wird bei der Konfiguration der Drifterkennung ein Schema generiert, indem eine constraints.json
erstellt wird, in der die Regeln festgelegt werden, denen die Eingabedaten folgen müssen. Das Schema wird verwendet, um Ihre Daten auf Drift zu prüfen, indem Ausreißer identifiziert werden, die nicht in die angegebenen Beschränkungen passen. Das Schema wird als JSON-Objekt mit columns
-und constraints
-Arrays angegeben, die die Trainingsdaten wie im folgenden Beispiel beschreiben:
{
"columns": [
{
"name": "CheckingStatus",
"dtype": "categorical",
"count": 5000,
"sparse": false,
"skip_learning": false
},
"constraints": [
{
"name": "categorical_distribution_constraint",
"id": "f0476d40-d7df-4095-9be5-82564511432c",
"kind": "single_column",
"columns": [
"CheckingStatus"
],
"content": {
"frequency_distribution": {
"0_to_200": 1304,
"greater_200": 305,
"less_0": 1398,
"no_checking": 1993
}
}
}
Spalten
Zur Beschreibung einer Spalte werden Werte für die Schlüssel name
, dtype
, count
sparse
und skip_learning
angegeben.
Die Schlüssel name
und dtype
beschreiben die Bezeichnung und den Datentyp für eine Spalte. Die folgenden Werte, die mit dem Schlüssel dtype
angegeben werden, beschreiben den Datentyp:
categorical
numeric_discrete
numeric_continuous
Der angegebene Datentyp bestimmt, ob weitere statistische Eigenschaften mit Schlüsseln wie min
, max
und mean
beschrieben werden. Wenn beispielsweise der Datentyp numeric_discrete
oder numeric_continuous
angegeben wird, werden Eigenschaften wie im folgenden Beispiel beschrieben:
{
"name": "LoanDuration",
"dtype": "numeric_discrete",
"count": 5000,
"sparse": false,
"skip_learning": false,
"min": 4,
"max": 53,
"mean": 21.28820697954272,
"std": 10.999096037050032,
"percentiles": [
13.0,
21.0,
29.0
],
"count_actual": 4986
}
Der Schlüssel count
gibt die Anzahl der Zeilen für eine Spalte an. Boolesche Werte werden angegeben, um die sparse
und skip_learning
Schlüssel für eine Spalte zu beschreiben. Der Schlüssel sparse
gibt an, ob eine Spalte dünn besetzt ist, und der Schlüssel skip_learning
gibt an, ob eine Spalte das Lernen einer der im Schema beschriebenen Regeln überspringt. Eine Spalte ist spärlich, wenn das 25th und 75th Perzentil denselben Wert haben.
Einschränkungen
Der Schlüssel name
gibt den Einschränkungstyp an. Die folgenden Werte werden angegeben, um den Einschränkungstyp zu beschreiben:
categorical_distribution_constraint
numeric_range_constraint
numeric_distribution_constraint
catnum_range_constraint
catnum_distribution_constraint
catcat_distribution_constraint
Der Schlüssel id
identifiziert Integritätsbedingungen mit einer UUID (Universally Unique Identifier). Der Schlüssel kind
gibt an, ob die Integritätsbedingung eine single_column
-oder two-column
-Integritätsbedingung ist.
Der Schlüssel columns
gibt ein Array von Spaltennamen an. Wenn eine single_column
Einschränkung mit dem kind
Schlüssel angegeben wird, enthält das Array einen Wert, der mit der Spalte korreliert, die Sie beschreiben möchten. Wenn eine two-column
Einschränkung mit dem kind
Schlüssel angegeben ist, enthält das Array Werte, die mit Spalten korrelieren, die Bezugsdaten enthalten.
Der Schlüssel content
gibt Attribute an, die die statistischen Merkmale Ihrer Daten beschreiben. Der mit dem Schlüssel name
angegebene Einschränkungstyp bestimmt, welches Attribut im Schlüssel content
angegeben wird, wie in der folgenden Tabelle gezeigt:
Attribut | Einschränkungen |
---|---|
Häufigkeitsverteilung | categorical_distribution_constraint (Integritätsbedingung für Kategorieverteilung) |
Bereiche | numeric_range_constraint, catnum_range_constraint |
Vertrieb | numeric_distribution_constraint, catnum_distribution_constraint |
rare_kombinationen | catcat_distribution_constraint (Katalogverteilungseinschränkung) |
Quellenspalte | catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint |
Zielspalte | catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint |
Die folgenden Abschnitte enthalten Beispiele für die Angabe der einzelnen Einschränkungstypen:
- Einschränkung für kategoriale Verteilung
- Einschränkung für numerischen Bereich
- Numerische Verteilungseinschränkung
- Kategoriale/kategoriale Verteilungseinschränkung
- Einschränkung für kategorialen numerischen Bereich
- Einschränkung für kategoriale numerische Verteilung
Integritätsbedingung für kategoriale Verteilung
{
"name": "categorical_distribution_constraint",
"id": "f0476d40-d7df-4095-9be5-82564511432c",
"kind": "single_column",
"columns": [
"CheckingStatus"
],
"content": {
"frequency_distribution": {
"0_to_200": 1304,
"greater_200": 305,
"less_0": 1398,
"no_checking": 1993
}
}
}
In den Trainingsdaten enthält die Spalte CheckingStatus
vier Werte, die mit dem Attribut frequency_distribution
angegeben werden. The frequency_distribution
attribute specifies the frequency counts with values for categories, such as 0_to_200
. Wenn in den Nutzdaten Datensätze gefunden werden, die Werte angeben, die sich von den frequency_distribution
Attributwerten unterscheiden, werden die Datensätze als Drift identifiziert.
Integritätsbedingung für numerischen Bereich
{
"name": "numeric_range_constraint",
"id": "79f3a1f5-30a1-4c7f-91a0-1613013ee802",
"kind": "single_column",
"columns": [
"LoanAmount"
],
"content": {
"ranges": [
{
"min": 250,
"max": 11676,
"count": 5000
}
]
}
}
Die Spalte LoanAmount
enthält Mindest-und Maximalwerte, die mit dem Attribut ranges
angegeben werden, um einen Bereich für die Trainingsdaten festzulegen. Das Attribut ranges
gibt die Bereiche mit hoher Dichte der Spalte an. Bereiche, die in den Trainingsdaten selten vorkommen, werden nicht berücksichtigt. Wenn in den Nutzdaten Datensätze gefunden werden, die nicht in den Bereich und einen vordefinierten Puffer passen, werden die Datensätze als Drift identifiziert.
Integritätsbedingung für numerische Verteilung
{
"name": "numeric_distribution_constraint",
"id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
"kind": "single_column",
"columns": [
"LoanAmount"
],
"content": {
"distribution": {
"name": "norm",
"parameters": {
"loc": 3799.62,
"scale": 1920.0640064678398
},
"p-value": 0.22617155797563282
}
}
}
Die Spalte LoanAmount
enthält Werte, die mit dem Attribut distribution
angegeben werden, um eine Normalverteilung für die Trainingsdaten festzulegen. Wenn in den Nutzdaten Datensätze gefunden werden, die nicht in die Normalverteilung passen, werden die Datensätze als Drift identifiziert. Bei den Verteilungen, die angepasst werden, handelt es sich um Gleichverteilungen, Exponential- oder Normalverteilungen. Wenn keine Datensätze gefunden werden, die in diese Verteilungen passen, wird diese Einschränkung nicht gelernt.
Kategorial-Kategoriale Verteilungseinschränkung
{
"name": "catcat_distribution_constraint",
"id": "99468600-1924-44d9-852c-1727c9c414ee",
"kind": "two_column",
"columns": [
"CheckingStatus",
"CreditHistory"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "CreditHistory",
"rare_combinations": [
{
"source_value": "no_checking",
"target_values": [
"no_credits"
]
}
]
}
}
Für die Spalten CheckingStatus
und CreditHistory
gibt das Attribut rare_combinations
eine Kombination von Werten an, die in den Trainingsdaten selten vorkommen. Wenn in den Nutzdaten Datensätze gefunden werden, die diese Kombination enthalten, werden diese als Drift identifiziert.
Integritätsbedingung für kategorialen numerischen Bereich
{
"name": "catnum_range_constraint",
"id": "f252033c-1635-4974-8976-3f7904d0c37d",
"kind": "two_column",
"columns": [
"CheckingStatus",
"LoanAmount"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "LoanAmount",
"ranges": {
"no_checking": [
{
"min": 250,
"max": 11676,
"count": 1993
}
],
"less_0": [
{
"min": 250,
"max": 7200,
"count": 1398
}
],
"0_to_200": [
{
"min": 250,
"max": 9076,
"count": 1304
}
],
"greater_200": [
{
"min": 250,
"max": 9772,
"count": 305
}
]
}
}
}
Das Attribut ranges
gibt die Minimal-und Maximalwerte für die Spalten CheckingStatus
und LoanAmount
an, die einen Bereich für die Trainingsdaten festlegen. Wenn in den Nutzdaten Datensätze gefunden werden, die keine LoanAmount
und CheckingStatus
Spaltenwerte enthalten, die in den Bereich und einen vordefinierten Puffer passen, werden die Datensätze als Drift identifiziert.
Integritätsbedingung für kategorialnumerische Verteilung
{
"name": "catnum_distribution_constraint",
"id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
"kind": "two_column",
"columns": [
"CheckingStatus",
"LoanAmount"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "LoanAmount",
"distribution": {
"greater_200": {
"name": "norm",
"parameters": {
"loc": 3799.62,
"scale": 1920.0640064678398
},
"p-value": 0.22617155797563282
}
}
}
}
Die Spalten LoanAmount
und CheckingStatus
enthalten Werte, die mit dem Attribut distribution
angegeben werden, um eine Normalverteilung für die Trainingsdaten festzulegen. Wenn in den Nutzdaten Datensätze gefunden werden, die keine LoanAmount
und CheckingStatus
Spaltenwerte enthalten, die in die Normalverteilung passen, werden die Datensätze als Drift identifiziert.
Um die Drift nach ihrer Entdeckung zu mindern, müssen Sie eine neue Version des Modells erstellen, die das Problem behebt. Als Ausgangspunkt eignen sich die Datenpunkte, die als Ursache für die Drift hervorgehoben sind. Führen Sie die neuen Daten in das Vorhersagemodell ein, nachdem Sie die Transaktionen mit Drift manuell beschriftet und zum erneuten Trainieren des Modells verwendet haben.
Weitere Informationen
Übergeordnetes Thema: Abweichungsmetriken