?>
Die Aktion `assess` im `percentile`-Aktionssatz dient zur Bewertung und zum Vergleich von Vorhersagemodellen. Sie ist besonders nützlich für die Evaluierung von Klassifikations- und Regressionsmodellen, indem sie wichtige Leistungsstatistiken wie ROC-Kurven (Receiver Operating Characteristic), Lift-Charts und Anpassungsstatistiken (z. B. Gini-Koeffizient, KS-Statistik, mittlere quadratische Abweichung) berechnet. Dies ermöglicht es Datenanalysten, die Genauigkeit und Vorhersagekraft ihrer Modelle objektiv zu messen und verschiedene Modelle miteinander zu vergleichen, um das leistungsstärkste auszuwählen.
| Parameter | Beschreibung |
|---|---|
| attributes | Gibt temporäre Attribute an, wie z. B. ein Format, das auf Eingabevariablen angewendet werden soll. |
| binNum | Anzahl der Bins in einem Drei-Durchlauf-Verfahren. |
| casOut | Gibt die Ausgabetabelle für Lift-Statistiken an. |
| cutStep | Gibt die Schrittweite für die ROC-Berechnungen an. Standard ist 0.01. |
| epsilon | Gibt die Toleranz an, die zur Bestimmung der Konvergenz des iterativen Algorithmus für die Perzentilberechnung verwendet wird. Standard ist 1E-05. |
| event | Gibt den formatierten Wert der Antwortvariablen an, der das Ereignis darstellt. Erforderlich für Klassifikationsmodelle. |
| fitStatOut | Gibt die Ausgabetabelle für die Anpassungsstatistiken an. |
| freq | Gibt die Variable an, die die Häufigkeit einer Beobachtung enthält. |
| groupByLimit | Gibt die maximale Anzahl von Stufen in einer Gruppierungsmenge an, um die Erstellung sehr großer Ergebnismengen zu vermeiden. |
| includeCutoffOne | Wenn auf TRUE gesetzt, wird eine Zeile für cutoff=1 in die ROC-Statistiken aufgenommen, um das Zeichnen der ROC-Kurve zu vereinfachen. Standard ist FALSE. |
| includeFitStat | Wenn auf FALSE gesetzt, werden die Anpassungsstatistiken nicht generiert. Standard ist TRUE. |
| includeLift | Wenn auf FALSE gesetzt, werden die Lift-Berechnungen nicht generiert. Standard ist TRUE. |
| includeRoc | Wenn auf FALSE gesetzt, werden die ROC-Berechnungen nicht generiert. Standard ist TRUE. |
| includeZeroDepth | Wenn auf TRUE gesetzt, wird eine Zeile für depth=0 in die Lift-Statistiken aufgenommen, um das Zeichnen der Lift-Kurve zu vereinfachen. Standard ist FALSE. |
| inputs | Gibt die Eingabevariablen an, die in der Analyse verwendet werden sollen. Dies sind typischerweise die vorhergesagten Wahrscheinlichkeiten oder Werte des Modells. |
| maxIters | Gibt die maximale Anzahl von Iterationen für den iterativen Algorithmus an. |
| method | Gibt den Algorithmus für die Perzentilanalyse an. 'ITERATIVE' ist der Standard, 'EXACT' ist ressourcenintensiver. |
| nBins | Gibt die Anzahl der Bins an, die für die Lift-Berechnungen verwendet werden sollen. Standard ist 20. |
| noMissingTarget | Wenn auf TRUE gesetzt, werden Beobachtungen ausgeschlossen, bei denen die Zielvariable einen fehlenden Wert hat. Standard ist FALSE. |
| partition | Wenn auf TRUE gesetzt und die Tabelle partitioniert ist, werden die Ergebnisse für jede Partition effizient berechnet. |
| partKey | Gibt einen Partitionsschlüssel an, um die Ergebnisse für eine einzelne Partition zu berechnen, wenn die Tabelle partitioniert ist. |
| pEvent | Gibt die Ereignisse an, die jeder Wahrscheinlichkeitsvariable im `pVar`-Parameter entsprechen. |
| pResponse | Gibt die vorhergesagte Antwortvariable für die Modellbewertung an. |
| pVar | Gibt die Ereigniswahrscheinlichkeitsvariablen an, die bewertet werden sollen. |
| response | Gibt die Antwortvariable (tatsächlicher Wert) für die Modellbewertung an. Dieser Parameter ist erforderlich. |
| responseFmt | Gibt ein temporäres Format für die Antwortvariable an, um das im `event`-Parameter angegebene Ereignis zu erzeugen. |
| rocOut | Gibt die Ausgabetabelle für die ROC-Berechnungen an. |
| table | Gibt die Eingabetabelle an, die die Antwortvariable und die vorhergesagten Werte enthält. Dieser Parameter ist erforderlich. |
| useRawPResponse | Wenn auf TRUE gesetzt, werden Rohwerte der vorhergesagten Antwortvariablen verwendet, um die Beobachtungen zu filtern. Standard ist FALSE. |
| userCutoff | Vom Benutzer angegebener Schwellenwert für die Konfusionsmatrix. |
| weight | Gibt die Variable an, die die Gewichtung einer Beobachtung enthält. |
Dieser Code erstellt eine Tabelle `hmeq_assessed` in der `mycas` CAS-Bibliothek. Er verwendet die `sampsio.hmeq`-Tabelle als Basis und fügt eine simulierte Vorhersagewahrscheinlichkeit `P_BAD1` für das Ereignis hinzu, dass ein Kredit schlecht ist (`BAD` = 1). Diese Tabelle wird in den folgenden Beispielen zur Bewertung der Modellleistung verwendet.
1 DATA mycas.hmeq_assessed; 2 SET sampsio.hmeq; 3 /* Simulieren einer vorhergesagten Wahrscheinlichkeit */ 4 P_BAD1 = rand('UNIFORM'); 5 RUN;
Dies ist ein grundlegendes Beispiel zur Bewertung eines Klassifikationsmodells. Es verwendet die `assess`-Aktion, um Lift- und ROC-Informationen für die Antwortvariable `BAD` und die vorhergesagte Wahrscheinlichkeit `P_BAD1` zu berechnen. Das Ereignis von Interesse ist, wenn `BAD` den Wert '1' hat. Die Ergebnisse werden in den Tabellen `assess_results` und `roc_results` gespeichert.
| 1 | PROC CAS; |
| 2 | percentile.assess / |
| 3 | TABLE={name='hmeq_assessed'}, |
| 4 | response='BAD', |
| 5 | inputs={{name='P_BAD1'}}, |
| 6 | event='1', |
| 7 | casOut={name='assess_results', replace=true}, |
| 8 | rocOut={name='roc_results', replace=true}; |
| 9 | RUN; |
Dieses Beispiel zeigt, wie ein Regressionsmodell bewertet wird, bei dem die Zielvariable (`LOAN`) intervallbasiert ist. Es wird eine simulierte Vorhersage `P_LOAN` erstellt. Da der `event`-Parameter weggelassen wird, führt die Aktion eine Regressionsbewertung durch und gibt Anpassungsstatistiken wie die mittlere quadratische Abweichung (ASE) aus.
| 1 | /* Erstellen von Regressionsdaten mit einer Vorhersage */ |
| 2 | DATA mycas.hmeq_regression; |
| 3 | SET sampsio.hmeq; |
| 4 | P_LOAN = LOAN * (0.8 + rand('UNIFORM') * 0.4); |
| 5 | IF missing(loan) or missing(P_LOAN) THEN delete; |
| 6 | RUN; |
| 7 | |
| 8 | /* Bewertung des Regressionsmodells */ |
| 9 | PROC CAS; |
| 10 | percentile.assess / |
| 11 | TABLE={name='hmeq_regression'}, |
| 12 | response='LOAN', |
| 13 | inputs={{name='P_LOAN'}}, |
| 14 | fitStatOut={name='regression_fit_stats', replace=true}; |
| 15 | RUN; |
Dieses Beispiel vergleicht die Leistung von zwei verschiedenen Vorhersagemodellen (`P_BAD1` und `P_BAD2`). Durch die Angabe beider Variablen im `inputs`-Parameter berechnet die Aktion die Bewertungsstatistiken für jedes Modell separat, was einen direkten Vergleich ihrer Vorhersagekraft ermöglicht. Die Anpassungsstatistiken werden zur einfachen Analyse in der Tabelle `fit_stats_compare` gespeichert.
| 1 | /* Erstellen von Daten mit zwei Modellvorhersagen */ |
| 2 | DATA mycas.hmeq_compare; |
| 3 | SET sampsio.hmeq; |
| 4 | P_BAD1 = rand('UNIFORM'); |
| 5 | P_BAD2 = 0.1 + (rand('UNIFORM') * 0.85); /* Zweites, etwas anderes Modell */ |
| 6 | RUN; |
| 7 | |
| 8 | /* Vergleichsbewertung durchführen */ |
| 9 | PROC CAS; |
| 10 | percentile.assess / |
| 11 | TABLE={name='hmeq_compare'}, |
| 12 | response='BAD', |
| 13 | inputs={{name='P_BAD1'}, {name='P_BAD2'}}, |
| 14 | event='1', |
| 15 | casOut={name='assess_compare_lift', replace=true}, |
| 16 | rocOut={name='assess_compare_roc', replace=true}, |
| 17 | fitStatOut={name='fit_stats_compare', replace=true}; |
| 18 | RUN; |
Dieses Beispiel zeigt eine Bewertung, bei der Beobachtungen sowohl gewichtet (`weight`) als auch mit einer Frequenz (`freq`) versehen sind. Dies ist nützlich, wenn einige Beobachtungen wichtiger sind als andere oder wenn die Daten in einem zusammengefassten Format vorliegen. Die `VALUE`-Variable wird als Gewichtung und `YOJ` als Frequenz verwendet.
| 1 | PROC CAS; |
| 2 | percentile.assess / |
| 3 | TABLE={name='hmeq_assessed', where='VALUE > 0 and YOJ > 0'}, |
| 4 | response='BAD', |
| 5 | inputs={{name='P_BAD1'}}, |
| 6 | event='1', |
| 7 | weight='VALUE', |
| 8 | freq='YOJ', |
| 9 | casOut={name='assess_weighted_results', replace=true}; |
| 10 | RUN; |