0 / 0
Zurück zur englischen Version der Dokumentation
Driftmetriken
Letzte Aktualisierung: 25. Okt. 2024
Driftmetriken

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 Navigationspfeil 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, countsparse 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, maxund meanbeschrieben 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:

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.

Hinweis:

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

Modelleinblicke überprüfen

Übergeordnetes Thema: Abweichungsmetriken

Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen