ReceiverOperatingCharacteristic

Calcule les valeurs pour construire la courbe des Caractéristiques de Fonctionnement du Récepteur (Receiver Operating Characteristic, ROC). De la même manière que ClassificationScore, cette méthode est appliquée au vecteur de valeurs vraies.

bool vector::ReceiverOperatingCharacteristic(
   const matrix&                 pred_scores,   // matrice contenant la distribution de probabilité pour chaque classe 
   const ENUM_ENUM_AVERAGE_MODE  mode           // mode de moyenne 
   matrix&                       fpr,           // valeurs de taux de faux positifs calculées pour chaque valeur de seuil 
   matrix&                       tpr,           // valeurs de taux vraiment positives calculées pour chaque valeur de seuil 
   matrix&                       thresholds,    // valeurs de seuil triées par ordre décroissant 
   );

Paramètres

pred_scores

[in]  Une matrice contenant un ensemble de vecteurs horizontaux avec des probabilités pour chaque classe. Le nombre de lignes de la matrice doit correspondre à la taille du vecteur de valeurs vraies.

mode

[in]  Mode de moyenne à partir de l'énumération ENUM_AVERAGE_MODE. Seuls AVERAGE_NONE, AVERAGE_BINARY et AVERAGE_MICRO sont utilisés.

fpr

[out]  Une matrice avec les valeurs calculées de la courbe de taux de faux positifs. Si aucune moyenne n'est appliquée (AVERAGE_NONE), le nombre de lignes dans la matrice correspond au nombre de classes du modèle. Le nombre de colonnes correspond à la taille du vecteur de valeurs vraies (ou au nombre de lignes dans la matrice de distribution de probabilité pred_score). Dans le cas d'une micromoyenne, le nombre de lignes dans la matrice correspond au nombre total de valeurs de seuil, hors doublons.

tpr

[out]  Une matrice avec les valeurs calculées de la courbe de taux véritablement positive.

threshold

[out]  Matrice de seuil obtenue en triant la matrice de probabilité

 

Note

Voir les notes sur la méthode ClassificationScore.

Exemple

Un exemple de tracé graphique ROC, où les valeurs tpr sont tracées sur l'axe y et les valeurs fpr sont tracées sur l'axe x. Les graphiques fpr et tpr sont également tracés séparément, avec des valeurs de seuil tracées sur l'axe des 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);
     }
    

Courbes des résultats :

Caractéristiques de Fonctionnement du Récepteur (ROC)

Graphique micro-moyenne fpr-tpr

 

Le code de sortie graphique est simple et basé sur la bibliothèque standard <Graphics/Graphic.mqh>.

Les exemples utilisent les données du modèle mnist.onnx. Le code est présenté dans la description de la méthode PrecisionRecall.

ROC AUC est proche de l’idéal.
 

roc auc score micro = [0.99991]