L'action `assess` du jeu d'actions `percentile` est un outil puissant pour évaluer et comparer les performances de modèles prédictifs. Elle est particulièrement utile dans les scénarios de classification binaire et de régression. Pour les modèles de classification, elle calcule des statistiques d'ajustement, génère des courbes ROC (Receiver Operating Characteristic) et des courbes de lift, qui sont essentielles pour comprendre la capacité du modèle à discriminer les classes. Pour les modèles de régression, elle fournit des métriques d'erreur pour évaluer la précision des prédictions. Cette action permet une analyse fine en supportant la pondération des observations, le traitement par groupe (`groupBy`) et l'évaluation sur des partitions de données spécifiques, ce qui en fait un outil flexible pour la validation de modèles dans SAS Viya.
| Paramètre | Description |
|---|---|
| attributes | Spécifie les attributs temporaires, tels qu'un format, à appliquer aux variables d'entrée. |
| binNum | Nombre de bins dans un processus en trois passes. |
| casOut | Spécifie les paramètres de la table de sortie pour les statistiques d'évaluation. |
| cutStep | Spécifie la taille du pas à utiliser pour les calculs ROC. |
| epsilon | Spécifie la tolérance utilisée pour déterminer la convergence de l'algorithme itératif pour le calcul des percentiles. |
| event | Spécifie la valeur formatée de la variable de réponse qui représente l'événement. Si non spécifié pour une variable numérique, une évaluation de régression est effectuée. |
| fitStatOut | Spécifie la table de sortie pour les statistiques d'ajustement. Pour les variables de réponse nominales, les événements et variables de probabilité doivent être spécifiés. |
| freq | Spécifie la variable de fréquence d'une observation. |
| groupByLimit | Spécifie le nombre maximum de niveaux dans un ensemble de regroupement pour éviter de créer des ensembles de résultats trop volumineux. |
| includeCutoffOne | Si TRUE, inclut une ligne pour cutoff=1 dans les statistiques ROC pour simplifier le traçage de la courbe. Ignoré si la variable cible est un intervalle. |
| includeFitStat | Si FALSE, les statistiques d'ajustement ne sont pas générées. |
| includeLift | Si FALSE, les calculs de lift ne sont pas générés. |
| includeRoc | Si FALSE, les calculs ROC ne sont pas générés. |
| includeZeroDepth | Si TRUE, inclut une ligne pour depth=0 dans les statistiques de lift pour simplifier le traçage de la courbe de lift. |
| inputs | Spécifie les variables d'entrée à utiliser dans l'analyse. |
| maxIters | Spécifie le nombre maximum d'itérations de l'algorithme. |
| method | Spécifie l'algorithme pour l'analyse des percentiles (EXACT ou ITERATIVE). |
| nBins | Spécifie le nombre de bins à utiliser pour les calculs de lift. |
| noMissingTarget | Exclut les observations où la variable cible a une valeur manquante. |
| partition | Si TRUE et que la table est partitionnée, les résultats sont calculés efficacement pour chaque partition. |
| partKey | Spécifie une clé de partition pour calculer les résultats sur une seule partition spécifique. |
| pEvent | Spécifie les événements correspondant à chaque variable de probabilité, à l'exclusion de l'événement de la variable de réponse. |
| pResponse | Spécifie la variable de réponse prédite pour l'évaluation du modèle. |
| pVar | Spécifie les variables de probabilité d'événement. Doit être utilisé avec le paramètre pEvent. |
| response | Spécifie la variable de réponse pour l'évaluation du modèle. (Requis) |
| responseFmt | Spécifie un format temporaire pour la variable de réponse afin de produire l'événement spécifié. |
| rocOut | Spécifie les paramètres de la table de sortie pour les calculs ROC. |
| table | Spécifie les paramètres de la table d'entrée. (Requis) |
| useRawPResponse | Si TRUE, les valeurs brutes de la variable de réponse prédite sont utilisées pour filtrer les observations. |
| userCutoff | Seuil de classification spécifié par l'utilisateur pour la matrice de confusion. |
| weight | Spécifie la variable de poids d'une observation. |
Ce bloc de code SAS crée une table CAS nommée `hmeq_scored`. Il charge d'abord la table `hmeq` depuis la librairie `Sampsio`, puis la charge dans CAS. Ensuite, un modèle de régression logistique est entraîné pour prédire la variable `BAD` en fonction d'autres variables. Enfin, le modèle est utilisé pour scorer la table `hmeq` et stocker les probabilités prédites dans `hmeq_scored`, qui servira de base pour l'évaluation avec l'action `assess`.
| 1 | DATA casuser.hmeq_scored; |
| 2 | SET sampsio.hmeq; |
| 3 | RUN; |
| 4 | |
| 5 | PROC CASUTIL; |
| 6 | load DATA=casuser.hmeq_scored outcaslib='casuser' replace; |
| 7 | QUIT; |
| 8 | |
| 9 | PROC LOGISTIC DATA=casuser.hmeq_scored; |
| 10 | class reason job; |
| 11 | model bad(event='1') = reason job derog delinq clage ninq clno debtinc; |
| 12 | OUTPUT out=casuser.hmeq_scored p=p_bad1; |
| 13 | QUIT; |
| 14 |
Cet exemple montre comment utiliser l'action `assess` pour évaluer un modèle de classification binaire. Il utilise la table `hmeq_scored` où `BAD` est la variable de réponse réelle et `P_BAD1` est la probabilité prédite de l'événement '1'. L'action générera des statistiques de lift et ROC par défaut.
| 1 | |
| 2 | PROC CAS; |
| 3 | percentile.assess TABLE='hmeq_scored', response='BAD', event='1', pVar={'P_BAD1'}; |
| 4 | RUN; |
| 5 |
Ici, l'action `assess` est utilisée pour évaluer un modèle de régression. La variable `DEBTINC` est la réponse réelle et `P_BAD1` (utilisé ici comme une prédiction continue) est la réponse prédite. Comme le paramètre `event` n'est pas spécifié, l'action calcule des statistiques d'erreur de régression.
| 1 | |
| 2 | PROC CAS; |
| 3 | percentile.assess TABLE='hmeq_scored', response='DEBTINC', pResponse='P_BAD1'; |
| 4 | RUN; |
| 5 |
Cet exemple réalise une évaluation complète d'un modèle de classification. Il spécifie la variable de réponse `BAD`, l'événement d'intérêt '1', et la probabilité prédite `P_BAD1`. De plus, il demande la création de deux tables de sortie : `hmeq_roc` pour les données de la courbe ROC et `hmeq_fit` pour les statistiques d'ajustement détaillées. Ces tables peuvent ensuite être utilisées pour des visualisations ou des analyses plus poussées.
| 1 | PROC CAS; |
| 2 | percentile.assess |
| 3 | TABLE={name='hmeq_scored'}, |
| 4 | response='BAD', |
| 5 | event='1', |
| 6 | pVar={'P_BAD1'}, |
| 7 | rocOut={name='hmeq_roc', replace=true}, |
| 8 | fitStatOut={name='hmeq_fit', replace=true}; |
| 9 | RUN; |
Cet exemple personnalise les calculs de ROC et de lift. `cutStep=0.05` augmente la granularité de la courbe ROC. `nBins=50` augmente le nombre de quantiles pour les calculs de la courbe de lift, offrant une vue plus détaillée. `includeCutoffOne=true` et `includeZeroDepth=true` ajoutent des points de départ aux tables ROC et de lift respectivement, ce qui facilite leur tracé.
| 1 | PROC CAS; |
| 2 | percentile.assess |
| 3 | TABLE='hmeq_scored', |
| 4 | response='BAD', |
| 5 | event='1', |
| 6 | pVar={'P_BAD1'}, |
| 7 | cutStep=0.05, |
| 8 | nBins=50, |
| 9 | includeCutoffOne=true, |
| 10 | includeZeroDepth=true, |
| 11 | casOut={name='hmeq_lift', replace=true}; |
| 12 | RUN; |
Cette analyse évalue la performance du modèle séparément pour chaque catégorie de la variable `JOB`. L'option `groupBy={'JOB'}` segmente les données, permettant de comparer comment le modèle se comporte pour différents segments de la population (par exemple, par profession). Cela est crucial pour détecter d'éventuels biais ou des variations de performance du modèle.
| 1 | PROC CAS; |
| 2 | percentile.assess |
| 3 | TABLE={name='hmeq_scored', groupBy={'JOB'}}, |
| 4 | response='BAD', |
| 5 | event='1', |
| 6 | pVar={'P_BAD1'}, |
| 7 | fitStatOut={name='hmeq_fit_by_job', replace=true}; |
| 8 | RUN; |
Une entreprise de vente au détail a développé un modèle prédictif pour identifier les clients les plus susceptibles de répondre à une nouvelle campagne promotionnelle. L'objecti...
Une institution financière doit évaluer un modèle de détection de fraude sur un grand volume de transactions. Il est crucial d'évaluer la performance du modèle non seulement glo...
Une entreprise industrielle utilise un modèle pour prédire les pannes de ses équipements. Les données collectées des capteurs sont souvent incomplètes. Ce scénario vise à tester...