ROC-Informationen (Receiver Operating Characteristic): Analyse der Fähigkeit des Modells, Ereignisse von Nicht-Ereignissen bei verschiedenen Wahrscheinlichkeitsschwellen zu trennen.
Lift-Informationen: Misst die Effektivität des Modells, indem es den Anteil der vom Modell erfassten Ereignisse im Vergleich zu einer Zufallsauswahl vergleicht.
Anpassungsstatistiken (Fit Statistics): Verschiedene Metriken zur Quantifizierung der Gesamtleistung des Modells, wie z. B. der quadratische Fehler oder der logistische Verlust.
Die bereitgestellten Beispiele veranschaulichen, wie Daten erstellt werden, gängige Optionen (wie die Anzahl der Cutoff-Schwellenwerte und Bins) verwendet werden, fortgeschrittene Szenarien mit benutzerdefinierten Formaten und die Integration mit der verteilten CAS-Umgebung zur Verarbeitung großer Datenmengen.
Datenanalyse
Type : CREATION_INTERNE
Die Beispiele verwenden synthetische Daten, die durch einen Data Step generiert wurden, um Vorhersagevariablen (p_good, p_bad) und eine binäre Zielvariable (good_bad) zu erstellen. Ein großer Datensatz wird auch direkt in CAS für das fortgeschrittene Beispiel generiert, um die Verarbeitungskapazität für große Datenmengen zu demonstrieren.
1 Codeblock
PROC ASSESS Data
Erklärung : Dieses Beispiel veranschaulicht die einfachste Verwendung des ASSESS-Verfahrens zur Modellevaluierung. Nach dem Aufbau einer CAS-Verbindung und der Erstellung synthetischer Score-Daten (mit `p_good` als Wahrscheinlichkeit für ein positives Ereignis und `good_bad` als Ziel) werden die Daten in eine CAS-Tabelle namens `score_data` geladen. Das ASSESS-Verfahren wird dann aufgerufen, wobei die Prädiktorvariable (`p_good`) und die binäre Zielvariable (`good_bad`) angegeben werden. Standardmäßig berechnet das Verfahren grundlegende ROC- und Lift-Metriken.
Kopiert!
/* Configuration CAS */
cas;
caslib _all_ assign;
/* Préparation des données: Création d'un jeu de données de score synthétiques */
data work.score_data;
length good_bad $4;
input _PartInd_ good_bad $ p_good p_bad;
datalines;
0 good 0.6675 0.3325
0 good 0.5189 0.4811
0 good 0.6852 0.3148
0 bad 0.0615 0.9385
0 bad 0.3053 0.6947
0 bad 0.6684 0.3316
0 good 0.6422 0.3578
0 good 0.6752 0.3248
0 good 0.5396 0.4604
0 good 0.4983 0.5017
0 bad 0.1916 0.8084
0 good 0.5722 0.4278
0 good 0.7099 0.2901
0 good 0.4642 0.5358
0 good 0.4863 0.5137
1 bad 0.4942 0.5058
1 bad 0.4863 0.5137
1 bad 0.4942 0.5058
1 good 0.6118 0.3882
1 good 0.5375 0.4625
1 good 0.8132 0.1868
1 good 0.6914 0.3086
1 good 0.5700 0.4300
1 good 0.8189 0.1811
1 good 0.2614 0.7386
1 good 0.1910 0.8090
1 good 0.5129 0.4871
1 good 0.8417 0.1583
1 good 0.5500 0.4500
;
run;
/* Charger les données dans la session CAS */
proc casutil incaslib="WORK" outcaslib="CASUSER" outkeep=(_ALL_) replace;
load data=score_data outcasfmt;
run;
/* Exemple 1 : Utilisation Basique de PROC ASSESS */
proc assess data=casuser.score_data;
var p_good;
target good_bad;
run;
1
/* Configuration CAS */
2
cas;
3
caslib _all_ assign;
4
5
/* Préparation des données: Création d'un jeu de données de score synthétiques */
/* Exemple 1 : Utilisation Basique de PROC ASSESS */
48
PROC ASSESSDATA=casuser.score_data;
49
var p_good;
50
target good_bad;
51
RUN;
2 Codeblock
PROC ASSESS Data
Erklärung : Dieses Beispiel erweitert die grundlegende Verwendung um gängige Optionen für eine detailliertere Analyse. `NCUTS=5` definiert 5 Cutoff-Schwellenwerte für die ROC-Analyse, und `NBINS=5` gibt 5 Bins für die Lift-Analyse an. `EVENT="good" LEVEL=NOMINAL` zeigt an, dass 'good' die Ereignisklasse von Interesse für die nominale Zielvariable ist. Die `FITSTAT`-Anweisung wird hinzugefügt, um Anpassungsstatistiken zu berechnen, wobei `p_bad` als Wahrscheinlichkeit des Referenzereignisses ('bad') verwendet wird.
Kopiert!
/* Configuration CAS (si non déjà configurée) */
cas;
caslib _all_ assign;
/* Préparation des données: Création d'un jeu de données de score synthétiques */
data work.score_data;
length good_bad $4;
input _PartInd_ good_bad $ p_good p_bad;
datalines;
0 good 0.6675 0.3325
0 good 0.5189 0.4811
0 good 0.6852 0.3148
0 bad 0.0615 0.9385
0 bad 0.3053 0.6947
0 bad 0.6684 0.3316
0 good 0.6422 0.3578
0 good 0.6752 0.3248
0 good 0.5396 0.4604
0 good 0.4983 0.5017
0 bad 0.1916 0.8084
0 good 0.5722 0.4278
0 good 0.7099 0.2901
0 good 0.4642 0.5358
0 good 0.4863 0.5137
1 bad 0.4942 0.5058
1 bad 0.4863 0.5137
1 bad 0.4942 0.5058
1 good 0.6118 0.3882
1 good 0.5375 0.4625
1 good 0.8132 0.1868
1 good 0.6914 0.3086
1 good 0.5700 0.4300
1 good 0.8189 0.1811
1 good 0.2614 0.7386
1 good 0.1910 0.8090
1 good 0.5129 0.4871
1 good 0.8417 0.1583
1 good 0.5500 0.4500
;
run;
/* Charger les données dans la session CAS */
proc casutil incaslib="WORK" outcaslib="CASUSER" outkeep=(_ALL_) replace;
load data=score_data outcasfmt;
run;
/* Exemple 2 : Utilisation de PROC ASSESS avec options courantes */
proc assess data=casuser.score_data ncuts=5 nbins=5;
var p_good;
target good_bad / event="good" level=nominal;
fitstat pvar=p_bad / pevent="bad";
run;
1
/* Configuration CAS (si non déjà configurée) */
2
cas;
3
caslib _all_ assign;
4
5
/* Préparation des données: Création d'un jeu de données de score synthétiques */
Erklärung : Dieses fortgeschrittene Beispiel zeigt, wie die Analyse personalisiert und vertieft werden kann. Ein `PROC FORMAT` wird verwendet, um ein benutzerdefiniertes Format für die Variable `_PartInd_` zu erstellen, was die Ausgaben bei der Analyse nach Gruppen lesbarer macht. Die formatierten Daten werden dann in eine neue CAS-Tabelle geladen. Die Option `NBINS=10` erhöht die Granularität der Lift-Analyse. Die `ROC`-Anweisung verwendet die Option `CUTOFF`, um benutzerdefinierte Schwellenwerte (von 0,1 bis 0,9 in Schritten von 0,1) anzugeben, und die Option `PLOTS`, um grafische Darstellungen (wie die ROC-Kurve) zu generieren. Die `BY _PartInd_`-Anweisung führt separate Analysen für jede Datenpartition durch.
Kopiert!
/* Configuration CAS (si non déjà configurée) */
cas;
caslib _all_ assign;
/* Préparation des données: Création d'un jeu de données de score synthétiques */
data work.score_data;
length good_bad $4;
input _PartInd_ good_bad $ p_good p_bad;
datalines;
0 good 0.6675 0.3325
0 good 0.5189 0.4811
0 good 0.6852 0.3148
0 bad 0.0615 0.9385
0 bad 0.3053 0.6947
0 bad 0.6684 0.3316
0 good 0.6422 0.3578
0 good 0.6752 0.3248
0 good 0.5396 0.4604
0 good 0.4983 0.5017
0 bad 0.1916 0.8084
0 good 0.5722 0.4278
0 good 0.7099 0.2901
0 good 0.4642 0.5358
0 good 0.4863 0.5137
1 bad 0.4942 0.5058
1 bad 0.4863 0.5137
1 bad 0.4942 0.5058
1 good 0.6118 0.3882
1 good 0.5375 0.4625
1 good 0.8132 0.1868
1 good 0.6914 0.3086
1 good 0.5700 0.4300
1 good 0.8189 0.1811
1 good 0.2614 0.7386
1 good 0.1910 0.8090
1 good 0.5129 0.4871
1 good 0.8417 0.1583
1 good 0.5500 0.4500
;
run;
/* Charger les données dans la session CAS */
proc casutil incaslib="WORK" outcaslib="CASUSER" outkeep=(_ALL_) replace;
load data=score_data outcasfmt;
run;
/* Création d'un format personnalisé pour la variable _PartInd_ */
proc format;
value $partfmt '0' = 'Partition A'
'1' = 'Partition B';
run;
data casuser.score_data_fmt;
set casuser.score_data;
format _PartInd_ $partfmt.;
run;
/* Exemple 3 : Cas Avancé de PROC ASSESS */
proc assess data=casuser.score_data_fmt nbins=10;
var p_good;
target good_bad / event="good" level=nominal;
fitstat pvar=p_bad / pevent="bad";
roc / cutoff=0.1 to 0.9 by 0.1 plots; /* Spécifie des seuils de coupure personnalisés et demande les tracés ROC */
by _PartInd_;
run;
1
/* Configuration CAS (si non déjà configurée) */
2
cas;
3
caslib _all_ assign;
4
5
/* Préparation des données: Création d'un jeu de données de score synthétiques */
/* Création d'un format personnalisé pour la variable _PartInd_ */
48
PROC FORMAT;
49
value $partfmt '0' = 'Partition A'
50
'1' = 'Partition B';
51
RUN;
52
53
DATA casuser.score_data_fmt;
54
SET casuser.score_data;
55
FORMAT _PartInd_ $partfmt.;
56
RUN;
57
58
/* Exemple 3 : Cas Avancé de PROC ASSESS */
59
PROC ASSESSDATA=casuser.score_data_fmt nbins=10;
60
var p_good;
61
target good_bad / event="good" level=nominal;
62
fitstat pvar=p_bad / pevent="bad";
63
roc / cutoff=0.1 to 0.9BY0.1 plots; /* Spécifie des seuils de coupure personnalisés et demande les tracés ROC */
64
BY _PartInd_;
65
RUN;
4 Codeblock
PROC ASSESS Data
Erklärung : Dieses Beispiel konzentriert sich auf die Integration mit SAS Viya für die Verarbeitung großer Datenmengen. Ein Datensatz von 20.000 Beobachtungen wird direkt in CAS generiert, was die Fähigkeit der Plattform hervorhebt, große Datenmengen im Speicher zu verwalten. Die Option `NBINS=20` wird für eine detailliertere Lift-Analyse verwendet. Die `ROC`-Anweisung enthält `ADJUSTFOR=good_bad(event="good")`, um die ROC-Metriken an die tatsächliche Verteilung der Zielvariable anzupassen, was für unausgewogene Datensätze entscheidend ist. Die temporäre CAS-Tabelle wird anschließend gelöscht, um die Umgebung zu bereinigen.
Kopiert!
/* Configuration CAS (si non déjà configurée) */
cas;
caslib _all_ assign;
/* Exemple 4 : Intégration Viya / Grand volume de données */
/* Création d'un grand jeu de données synthétique directement dans CAS */
data casuser.large_score_data;
do _PartInd_ = 0 to 1;
do i = 1 to 10000; /* Créer 20,000 observations */
good_bad = ifc(ranuni(0) > 0.7, 'bad', 'good');
p_good = ranuni(0); /* Probabilité de 'good' */
p_bad = 1 - p_good; /* Probabilité de 'bad' */
output;
end;
end;
drop i;
run;
proc assess data=casuser.large_score_data nbins=20;
var p_good;
target good_bad / event="good" level=nominal;
fitstat pvar=p_bad / pevent="bad";
roc / adjustfor=good_bad(event="good") plots; /* ajuster pour la distribution de la cible */
by _PartInd_;
run;
/* Nettoyage du dataset temporaire CAS */
proc cas;
droptable "large_score_data" caslib="CASUSER";
run;
1
/* Configuration CAS (si non déjà configurée) */
2
cas;
3
caslib _all_ assign;
4
5
/* Exemple 4 : Intégration Viya / Grand volume de données */
6
7
/* Création d'un grand jeu de données synthétique directement dans CAS */
8
DATA casuser.large_score_data;
9
DO _PartInd_ = 0 to 1;
10
DO i = 1 to 10000; /* Créer 20,000 observations */
roc / adjustfor=good_bad(event="good") plots; /* ajuster pour la distribution de la cible */
25
BY _PartInd_;
26
RUN;
27
28
/* Nettoyage du dataset temporaire CAS */
29
PROC CAS;
30
droptable "large_score_data" caslib="CASUSER";
31
RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.