ML.CONFUSION_MATRIX-Funktion

ML.CONFUSION_MATRIX-Funktion

Mit der ML.CONFUSION_MATRIX-Funktion wird eine Wahrheitsmatrix für das gegebene logistische Regressionsmodell und dessen Eingabedaten zurückgegeben. Die ML.CONFUSION_MATRIX-Funktion kann mit logistischen Regressionsmodellen und mehrklassigen logistischen Regressionsmodellen verwendet werden. ML.CONFUSION_MATRIX unterstützt keine linearen Regressionsmodelle.

Die Ausgabespalten der ML.CONFUSION_MATRIX-Funktion hängen vom Modell ab. Die erste Ausgabespalte ist immer expected_label. Es gibt N zusätzliche Spalten, eine für jede Klasse im trainierten Modell. Die Namen der zusätzlichen Spalten hängen von den Klassenlabels ab, die zum Trainieren des Modells verwendet werden.

Wenn die Trainingsklassenlabels alle den Spaltenbenennungsregeln von BigQuery entsprechen, werden die Labels als Spaltennamen verwendet. Spalten, die nicht regelkonform sind, werden so geändert, dass sie den Spaltenbenennungsregeln entsprechen und eindeutig sind. Wenn die Labels beispielsweise 0 und 1 sind, lauten die Ausgabespaltennamen _0 und _1.

Die Spalten werden anhand der Klassenlabels in aufsteigender Reihenfolge angeordnet. Wenn die Labels in den Bewertungsdaten mit denen in den Trainingsdaten übereinstimmen, werden die richtig Positiven auf der Diagonalen von oben links nach unten rechts angezeigt. Die erwarteten (oder tatsächlichen) Labels werden eines pro Zeile und die vorhergesagten Labels eines pro Spalte aufgeführt.

Die Werte in der Spalte expected_label sind genau die Werte und der Typ, die an ML.CONFUSION_MATRIX in der Labelspalte der Bewertungsdaten übergeben werden. Dies gilt auch dann, wenn sie nicht genau mit den Werten oder dem Typ übereinstimmen, die während des Trainings verwendet wurden.

ML.CONFUSION_MATRIX-Syntax

ML.CONFUSION_MATRIX(MODEL model_name
           [, {TABLE table_name | (query_statement)}]
           [, STRUCT(<T> AS threshold)])

model_name

model_name ist der Name des Modells, das Sie bewerten. Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie die Projekt-ID dem Modellnamen im folgenden Format voran: `[PROJECT_ID].[DATASET].[MODEL]` (einschließlich der Backticks); zum Beispiel `myproject.mydataset.mymodel`.

table_name

(Optional) table_name ist der Name der Eingabetabelle, die die Bewertungsdaten enthält. Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie dem Tabellennamen die Projekt-ID im folgenden Format voran: "[PROJECT_ID].[DATASET].[TABLE]" (einschließlich der Backticks); zum Beispiel `myproject.mydataset.mytable`.

Wenn table_name angegeben ist, müssen die Namen der Eingabespalten in der Tabelle mit den Spaltennamen im Modell übereinstimmen und ihre Typen sollten gemäß den BigQuery-Regeln für die implizite Erzwingung kompatibel sein. Die Eingabe muss eine Spalte enthalten, die dem Namen der Labelspalte entspricht, die während des Trainings angegeben wurde. Dieser Wert wird mit der Option input_label_cols bereitgestellt. Wenn input_label_cols nicht angegeben ist, wird in den Trainingsdaten die Spalte "label" verwendet.

Wenn weder table_name noch query_statement angegeben ist, berechnet ML.CONFUSION_MATRIX die Ergebnisse der Wahrheitsmatrix so:

  • Wenn die Daten während des Trainings aufgeteilt werden, werden die aufgeteilten Bewertungsdaten zum Berechnen der Ergebnisse der Wahrheitsmatrix verwendet.
  • Wenn die Daten während des Trainings nicht aufgeteilt werden, wird die gesamte Trainingseingabe zum Berechnen der Ergebnisse der Wahrheitsmatrix verwendet.

query_statement

(Optional) Die query_statement-Klausel gibt die Standard-SQL-Abfrage an, die zum Generieren der Auswertungsdaten verwendet wird. Die unterstützte SQL-Syntax der query_statement-Klausel finden Sie auf der Seite Standard-SQL-Abfragesyntax.

Wenn query_statement angegeben ist, müssen die Namen der Eingabespalten aus der Abfrage mit den Spaltennamen im Modell übereinstimmen und ihre Typen sollten gemäß den BigQuery-Regeln für die implizite Erzwingung kompatibel sein. Die Eingabe muss eine Spalte enthalten, die dem Namen der Labelspalte entspricht, die während des Trainings angegeben wurde. Dieser Wert wird mit der Option input_label_cols bereitgestellt. Wenn input_label_cols nicht angegeben ist, wird in den Trainingsdaten die Spalte "label" verwendet. Die zusätzlichen Spalten werden ignoriert.

Wenn die TRANSFORM-Klausel in derCREATE MODEL-Anweisung zum Erstellen von model_name enthalten war, müssen in query_statement nur die in der TRANSFORM-Klausel angegebenen Eingabespalten vorhanden sein.

Wenn weder table_name noch query_statement angegeben ist, berechnet ML.CONFUSION_MATRIX die Ergebnisse der Wahrheitsmatrix so:

  • Wenn die Daten während des Trainings aufgeteilt werden, werden die aufgeteilten Bewertungsdaten zum Berechnen der Ergebnisse der Wahrheitsmatrix verwendet.
  • Wenn die Daten während des Trainings nicht aufgeteilt werden, wird die gesamte Trainingseingabe zum Berechnen der Ergebnisse der Wahrheitsmatrix verwendet.

threshold

(Optional) threshold ist ein benutzerdefinierter Schwellenwert für das logistische Regressionsmodell, das für die Bewertung verwendet wird. Der Standardwert ist 0,5. Der bereitgestellte Schwellenwert muss vom Typ STRUCT sein.

Ein Wert von null für die Genauigkeit oder die Trefferquote bedeutet, dass der ausgewählte Schwellenwert keine echt positiven Labels erzeugt hat. Ein NaN-Wert für die Genauigkeit bedeutet, dass der ausgewählte Schwellenwert keine positiven, echt positiven und falsch positiven Labels erzeugt hat.

Beispiel für ML.CONFUSION_MATRIX

Im folgenden Beispiel wird davon ausgegangen, dass sich Modell und Eingabetabelle in Ihrem Standardprojekt befinden.

Die folgende Abfrage wird verwendet, um die Wahrheitsmatrix für ein logistisches Regressionsmodell zurückzugeben:

SELECT
  *
FROM
  ML.CONFUSION_MATRIX(MODEL `mydataset.mymodel`,
  (
    SELECT
      *
    FROM
      `mydataset.mytable`))

Einschränkungen für ML.CONFUSION_MATRIX

Für die Funktion ML.CONFUSION_MATRIX gelten die folgenden Einschränkungen: