ReceiverOperatingCharacteristic

Berechnet werden die Werte, um die ROC-Kurve (Receiver Operating Characteristic) zu erstellen. Ähnlich wie ClassificationScore wird diese Methode auf den Vektor mit wahren Werte angewendet.

bool vector::ReceiverOperatingCharacteristic(
   const-Matrix&                 pred_scores,   // die Matrix, die die Wahrscheinlichkeitsverteilung für jede Klasse enthält.
   const ENUM_ENUM_AVERAGE_MODE  mode           // Mittelungsmodus
   matrix&                       fpr,           // berechnete Falsch-Positiv-Verhältniswerte für jeden Schwellenwert
   matrix&                       tpr,           // berechnete echte positive Verhältniswerte für jeden Schwellenwert
   matrix&                       thresholds,    // Schwellenwerte in absteigender Reihenfolge sortiert
   );

Parameter

pred_scores

[in]  Eine Matrix, die eine Reihe horizontaler Vektoren mit Wahrscheinlichkeiten für jede Klasse enthält. Die Anzahl der Matrixzeilen muss der Größe des Vektors der wahren Werte entsprechen.

mode

[in]  Der Modus der Durchschnittsermittlung aus der Enumeration ENUM_AVERAGE_MODE. Es werden nur AVERAGE_NONE, AVERAGE_BINARY und AVERAGE_MICRO verwendet.

Verhältnisw

[out]  Eine Matrix mit berechneten Werten der Falsch-Positiv-Verhältniskurve. Wenn keine Mittelung angewendet wird (AVERAGE_NONE), entspricht die Anzahl der Zeilen in der Matrix der Anzahl der Modellklassen.Die Anzahl der Spalten entspricht der Größe des Vektors der wahren Werte (oder der Anzahl der Zeilen in der Wahrscheinlichkeitsverteilungsmatrix pred_score). Bei der Mikromittelung entspricht die Anzahl der Zeilen in der Matrix der Gesamtzahl der Schwellenwerte, ohne Duplikate.

tpr

[out]  Eine Matrix mit berechneten Werten der echten positiven Verhältniskurve.

threshold

[out]  Schwellenwertmatrix, die durch Sortieren der Wahrscheinlichkeitsmatrix erhalten wird.

 

Hinweis

Siehe die Hinweise zur Methode ClassificationScore.

Beispiel

Ein Beispiel für das Zeichnen von ROC-Diagrammen, bei dem tpr-Werte auf der y-Achse und fpr-Werte auf der x-Achse aufgetragen werden. Außerdem werden fpr- und tpr-Diagramme separat dargestellt, wobei auf der x-Achse Schwellenwerte aufgetragen sind

   matrixf mat_thres;
   matrixf mat_fpr;
   matrixf mat_tpr;
 
   if(y_true.ReceiverOperatingCharacteristic(y_scores,AVERAGE_MICRO,mat_fpr,mat_tpr,mat_thres))
     {
      double fpr[],tpr[],thres[];
      ArrayResize(fpr,mat_thres.Cols());
      ArrayResize(tpr,mat_thres.Cols());
      ArrayResize(thres,mat_thres.Cols());
 
      for(uint i=0; i<fpr.Size(); i++)
        {
         fpr[i]=mat_fpr[0][i];
         tpr[i]=mat_tpr[0][i];
         thres[i]=mat_thres[0][i];
        }
      thres[0]=thres[1]+0.001;
 
      PlotCurve("ROC curve (micro average)","roc","0.5",fpr,tpr);
      Plot2Curves("fpr-tpr (micro average)","fpr","tpr",thres,fpr,tpr);
     }
    

Resultierende Kurven:

Receiver Operating Characteristic (ROC)

Graph fpr-tpr Mikro-Durchschnitte

 

Der Ausgabecode des Diagramms ist einfach und basiert auf der Standardbibliothek <Graphics/Graphic.mqh>.

Die Beispiele verwenden die Daten des Modells mnist.onnx. Der Code wird in der Methodenbeschreibung PrecisionRecall dargestellt.

ROC AUC ist nahezu ideal.
 

roc auc score micro = [0.99991]