?> assess - WeAreCAS
percentile

assess

Beschreibung

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.

percentile.assess result=<results> status=<rc> / attributes={{name="variable-name", format="string", formattedLength=integer, label="string", nfd=integer, nfl=integer}, ...} binNum=64-bit-integer casOut={caslib="string", compress=TRUE|FALSE, indexVars={"variable-name-1", ...}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR"|"INHERIT"|"STANDARD", name="table-name", promote=TRUE|FALSE, replace=TRUE|FALSE, replication=integer, tableRedistUpPolicy="DEFER"|"NOREDIST"|"REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1", ...}} cutStep=double epsilon=double event="string" fitStatOut={caslib="string", compress=TRUE|FALSE, indexVars={"variable-name-1", ...}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR"|"INHERIT"|"STANDARD", name="table-name", promote=TRUE|FALSE, replace=TRUE|FALSE, replication=integer, tableRedistUpPolicy="DEFER"|"NOREDIST"|"REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1", ...}} freq="variable-name" groupByLimit=64-bit-integer includeCutoffOne=TRUE|FALSE includeFitStat=TRUE|FALSE includeLift=TRUE|FALSE includeRoc=TRUE|FALSE includeZeroDepth=TRUE|FALSE inputs={{name="variable-name", format="string", formattedLength=integer, label="string", nfd=integer, nfl=integer}, ...} maxIters=integer method="EXACT"|"ITERATIVE" nBins=integer noMissingTarget=TRUE|FALSE partition=TRUE|FALSE partKey={"string-1", ...} pEvent={"string-1", ...} pResponse="variable-name" pVar={"variable-name-1", ...} response="variable-name" responseFmt="string" rocOut={caslib="string", compress=TRUE|FALSE, indexVars={"variable-name-1", ...}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR"|"INHERIT"|"STANDARD", name="table-name", promote=TRUE|FALSE, replace=TRUE|FALSE, replication=integer, tableRedistUpPolicy="DEFER"|"NOREDIST"|"REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1", ...}} table={caslib="string", computedOnDemand=TRUE|FALSE, computedVars={{...}}, computedVarsProgram="string", dataSourceOptions={{...}}, groupBy={{...}}, groupByMode="NOSORT"|"REDISTRIBUTE", importOptions={{...}}, name="table-name", orderBy={{...}}, singlePass=TRUE|FALSE, where="where-expression", whereTable={{...}}} useRawPResponse=TRUE|FALSE userCutoff=double weight="variable-name";
Einstellungen
ParameterBeschreibung
attributesGibt temporäre Attribute an, wie z. B. ein Format, das auf Eingabevariablen angewendet werden soll.
binNumAnzahl der Bins in einem Drei-Durchlauf-Verfahren.
casOutGibt die Ausgabetabelle für Lift-Statistiken an.
cutStepGibt die Schrittweite für die ROC-Berechnungen an. Standard ist 0.01.
epsilonGibt die Toleranz an, die zur Bestimmung der Konvergenz des iterativen Algorithmus für die Perzentilberechnung verwendet wird. Standard ist 1E-05.
eventGibt den formatierten Wert der Antwortvariablen an, der das Ereignis darstellt. Erforderlich für Klassifikationsmodelle.
fitStatOutGibt die Ausgabetabelle für die Anpassungsstatistiken an.
freqGibt die Variable an, die die Häufigkeit einer Beobachtung enthält.
groupByLimitGibt die maximale Anzahl von Stufen in einer Gruppierungsmenge an, um die Erstellung sehr großer Ergebnismengen zu vermeiden.
includeCutoffOneWenn 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.
includeFitStatWenn auf FALSE gesetzt, werden die Anpassungsstatistiken nicht generiert. Standard ist TRUE.
includeLiftWenn auf FALSE gesetzt, werden die Lift-Berechnungen nicht generiert. Standard ist TRUE.
includeRocWenn auf FALSE gesetzt, werden die ROC-Berechnungen nicht generiert. Standard ist TRUE.
includeZeroDepthWenn 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.
inputsGibt die Eingabevariablen an, die in der Analyse verwendet werden sollen. Dies sind typischerweise die vorhergesagten Wahrscheinlichkeiten oder Werte des Modells.
maxItersGibt die maximale Anzahl von Iterationen für den iterativen Algorithmus an.
methodGibt den Algorithmus für die Perzentilanalyse an. 'ITERATIVE' ist der Standard, 'EXACT' ist ressourcenintensiver.
nBinsGibt die Anzahl der Bins an, die für die Lift-Berechnungen verwendet werden sollen. Standard ist 20.
noMissingTargetWenn auf TRUE gesetzt, werden Beobachtungen ausgeschlossen, bei denen die Zielvariable einen fehlenden Wert hat. Standard ist FALSE.
partitionWenn auf TRUE gesetzt und die Tabelle partitioniert ist, werden die Ergebnisse für jede Partition effizient berechnet.
partKeyGibt einen Partitionsschlüssel an, um die Ergebnisse für eine einzelne Partition zu berechnen, wenn die Tabelle partitioniert ist.
pEventGibt die Ereignisse an, die jeder Wahrscheinlichkeitsvariable im `pVar`-Parameter entsprechen.
pResponseGibt die vorhergesagte Antwortvariable für die Modellbewertung an.
pVarGibt die Ereigniswahrscheinlichkeitsvariablen an, die bewertet werden sollen.
responseGibt die Antwortvariable (tatsächlicher Wert) für die Modellbewertung an. Dieser Parameter ist erforderlich.
responseFmtGibt ein temporäres Format für die Antwortvariable an, um das im `event`-Parameter angegebene Ereignis zu erzeugen.
rocOutGibt die Ausgabetabelle für die ROC-Berechnungen an.
tableGibt die Eingabetabelle an, die die Antwortvariable und die vorhergesagten Werte enthält. Dieser Parameter ist erforderlich.
useRawPResponseWenn auf TRUE gesetzt, werden Rohwerte der vorhergesagten Antwortvariablen verwendet, um die Beobachtungen zu filtern. Standard ist FALSE.
userCutoffVom Benutzer angegebener Schwellenwert für die Konfusionsmatrix.
weightGibt die Variable an, die die Gewichtung einer Beobachtung enthält.
Datenaufbereitung
Datenerstellung für die Modellbewertung

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.

data mycas.hmeq_assessed;\n  set sampsio.hmeq;\n  /* Simulieren einer vorhergesagten Wahrscheinlichkeit */\n  P_BAD1 = rand('UNIFORM');\nrun;

Beispiele

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.

SAS® / CAS-Code
Kopiert!
1PROC 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};
9RUN;
Ergebnis :
Die Aktion generiert zwei Ausgabetabellen in CAS: `assess_results`, die Lift-Chart-Statistiken enthält, und `roc_results`, die die Datenpunkte für die ROC-Kurve enthält. Zusätzlich werden die Anpassungsstatistiken (wie Gini, KS usw.) im SAS-Log ausgegeben.

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.

SAS® / CAS-Code
Kopiert!
1/* Erstellen von Regressionsdaten mit einer Vorhersage */
2DATA 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;
6RUN;
7 
8/* Bewertung des Regressionsmodells */
9PROC 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};
15RUN;
Ergebnis :
Die Aktion erstellt eine Ausgabetabelle `regression_fit_stats`, die Anpassungsstatistiken für Regressionsmodelle enthält, wie z.B. die durchschnittliche quadratische Abweichung (ASE) und die mittlere absolute Abweichung (MAE). Da es sich um ein Regressionsmodell handelt, werden keine ROC- oder Lift-Tabellen erstellt.

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.

SAS® / CAS-Code
Kopiert!
1/* Erstellen von Daten mit zwei Modellvorhersagen */
2DATA 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 */
6RUN;
7 
8/* Vergleichsbewertung durchführen */
9PROC 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};
18RUN;
Ergebnis :
Erstellt drei Ausgabetabellen: `assess_compare_lift` (Lift-Statistiken), `assess_compare_roc` (ROC-Daten) und `fit_stats_compare`. Die Tabellen enthalten Spalten, die die Ergebnisse nach Modell (`_INPUTVAR_`) aufschlüsseln, was einen direkten Vergleich von Metriken wie dem Gini-Koeffizienten oder der Fläche unter der Kurve (AUC) ermöglicht.

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.

SAS® / CAS-Code
Kopiert!
1PROC 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};
10RUN;
Ergebnis :
Die resultierenden Lift- und ROC-Statistiken in der Tabelle `assess_weighted_results` und im Protokoll werden unter Berücksichtigung der angegebenen Gewichtungen und Frequenzen berechnet, was zu einer anderen Bewertung als bei einer ungewichteten Analyse führt.

FAQ

Was ist der Zweck der `assess`-Aktion im `percentile`-Aktionssatz?
Wie kann ich eine Eingabetabelle für die `assess`-Aktion angeben?
Welche Funktion hat der `event`-Parameter?
Wie kann ich die ROC-Berechnungen in der Ausgabe steuern?
Was ist der Unterschied zwischen den Methoden `EXACT` und `ITERATIVE` für den `method`-Parameter?
Wie kann ich die Lift-Berechnungen anpassen?
Wie gebe ich die vorhergesagten Wahrscheinlichkeitsvariablen für die Bewertung an?