ReceiverOperatingCharacteristic

Calcola i valori per costruire la curva ROC (Receiver Operating Characteristic). Analogamente a ClassificationScore, questo metodo viene applicato al vettore dei valori reali.

bool vector::ReceiverOperatingCharacteristic(
   const matrix&                 pred_scores,   // matrice contenente la distribuzione di probabilità per ogni classe
   const ENUM_ENUM_AVERAGE_MODE  mode           // modalità di calcolo della media
   matrix&                       fpr,           // valori delle percentuali dei falsi positivi calcolati per ogni valore di soglia
   matrix&                       tpr,           // valori delle percentuali dei veri positivi calcolati per ogni valore di soglia
   matrix&                       thresholds,    // Valori di soglia ordinati in ordine decrescente
   );

Parametri

pred_scores

[in] Matrice contenente un insieme di vettori orizzontali con le probabilità per ciascuna classe. Il numero di righe della matrice deve corrispondere alla dimensione del vettore dei valori reali.

mode

[in] Modalità di media dall'enumerazione ENUM_AVERAGE_MODE. Vengono utilizzati solo AVERAGE_NONE, AVERAGE_BINARY e AVERAGE_MICRO.

fpr

[out] Una matrice con i valori calcolati della curva delle percentuali dei falsi positivi. Se non viene applicata la media (AVERAGE_NONE), il numero di righe nella matrice corrisponde al numero di classi del modello. Il numero di colonne corrisponde alla dimensione del vettore dei valori reali (o al numero di righe nella matrice di distribuzione di probabilità pred_score). Nel caso della micro media, il numero di righe nella matrice corrisponde al numero totale dei valori soglia, escludendo i duplicati.

tpr

[out] Una matrice con i valori calcolati della curva delle percentuali dei veri positivi.

threshold

[out] Matrice di soglia ottenuta ordinando la matrice di probabilità

 

Note

Vedi note per il metodo ClassificationScore.

Esempio

Un esempio di tracciamento di grafico ROC, dove i valori tpr sono tracciati sull'asse y e i valori fpr sono tracciati sull'asse x. Anche i grafici fpr e tpr sono tracciati separatamente, con valori di soglia tracciati sull'asse x

   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);
     }
    

Curve risultanti:

Receiver Operating Characteristic (ROC)

Grafico fpr-tpr micro media

 

Il codice di output del grafico è semplice ed è basato sulla libreria standard <Graphics/Graphic.mqh>.

Gli esempi utilizzano i dati del modello mnist.onnx. Il codice è presentato nella descrizione del metodo PrecisionRecall.

ROC AUC è vicino all'ideale.
 

roc auc score micro = [0.99991]