Veröffentlicht am :
Statistik CREATION_INTERNE

BART-Prozedur: Speichern und Scoren

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die BART-Prozedur ermöglicht den Aufbau robuster prädiktiver Modelle. Diese Funktionalität ist besonders nützlich für die Vorhersage auf neuen Datensätzen oder für die Analyse von Interventionen bei erklärenden Variablen. Das bereitgestellte Beispiel veranschaulicht die Erstellung eines BART-Modells, dessen Speicherung in einem analytischen Speicher und dessen anschließendes Laden zur Vorhersage und Berechnung prädiktiver Margen. Die Optionen TRAININMEM und MAPINMEM werden verwendet, um den Prozess im CAS-Speicher zu optimieren. Die Anweisungen MARGIN und MARGINDIFF werden zur Analyse der Auswirkungen spezifischer Änderungen auf die Prädiktoren vorgestellt.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden synthetische Daten, die mit der SAS-Funktion rand() generiert wurden, um einen Datensatz mit einer kontinuierlichen Antwortvariablen (y) und 40 kontinuierlichen erklärenden Variablen (x1-x40) zu simulieren. Nur x1-x5 beeinflussen tatsächlich die Antwortvariable.

1 Codeblock
PROC BART Data
Erklärung :
Dieses Beispiel generiert einen synthetischen Datensatz von 10.000 Beobachtungen und trainiert ein BART-Modell mit `PROC BART`. Das Modell wird dann mithilfe der `STORE`-Anweisung in einem analytischen Speicher namens `mylib.modelFit` gespeichert. Die Optionen `trainInMem` und `mapInMem` werden verwendet, um die Leistung zu verbessern, indem Daten und Modellelemente im CAS-Speicher verwaltet werden, was für moderate Datengrößen empfohlen wird.
Kopiert!
1/* Création du jeu de données d'entraînement simulé */
2DATA mylib.inputData / single =yes;
3 drop j w1-w40;
4 array x{40};
5 array w{40};
6 call streaminit(6524);
7 pi=constant("pi");
8 
9 DO i=1 to 10000;
10 u = rand("Uniform");
11 DO j=1 to dim(x);
12 w{j} = rand("Uniform");
13 x{j} = (w{j} + u)/2;
14 END;
15 
16 f1 = sin(pi * x1 * x2 );
17 f2 = (x3-0.5)**2;
18 f3 = x4;
19 f4 = x5;
20 fb = 10*f1 +20*f2+10*f3+5*f4;
21 
22 y = fb + rand("Normal");
23 OUTPUT;
24 END;
25RUN;
26 
27/* Entraînement du modèle BART et stockage dans un magasin analytique */
28PROC BART DATA=mylib.inputData seed=9181 trainInMem mapInMem;
29 model y = x1-x40;
30 store mylib.modelFit;
31RUN;
2 Codeblock
PROC BART / PROC MEANS Data
Erklärung :
Dieses zweite Beispiel generiert einen neuen Datensatz von 1.000 Beobachtungen (`mylib.toScoreData`) für die Vorhersage. Es verwendet dann `PROC BART` mit der Option `RESTORE=mylib.modelFit`, um das zuvor gespeicherte Modell zu laden und die Antwortvariable vorherzusagen. Die `OUTPUT`-Anweisung wird verwendet, um eine Tabelle `mylib.scoredData` zu erstellen, die die Vorhersagen (`predResp`) und Residuen (`residual`) enthält. Schließlich werden ein `DATA`-Schritt und `PROC MEANS` verwendet, um den mittleren quadratischen Fehler (ASE) der Vorhersagen zu berechnen, was eine Bewertung der Generalisierung des Modells ermöglicht.
Kopiert!
1/* Création du jeu de données à scorer simulé */
2DATA mylib.toScoreData / single =yes;
3 drop j w1-w40;
4 array x{40};
5 array w{40};
6 call streaminit(1972);
7 pi=constant("pi");
8 
9 DO i=1 to 1000;
10 u = rand("Uniform");
11 DO j=1 to dim(x);
12 w{j} = rand("Uniform");
13 x{j} = (w{j} + u)/2;
14 END;
15 
16 f1 = sin(pi * x1 * x2 );
17 f2 = (x3-0.5)**2;
18 f3 = x4;
19 f4 = x5;
20 fb = 10*f1 +20*f2+10*f3+5*f4;
21 
22 y = fb + rand("Normal");
23 OUTPUT;
24 END;
25RUN;
26 
27/* Scoring des nouvelles observations en utilisant le modèle stocké */
28PROC BART DATA=mylib.toScoreData restore=mylib.modelFit;
29 OUTPUT out = mylib.scoredData pred = predResp resid = residual;
30RUN;
31 
32/* Calcul de l'erreur carrée moyenne (ASE) pour les données scorées */
33DATA fitCheck;
34 SET mylib.scoredData;
35 SquareError = residual * residual;
36RUN;
37 
38PROC MEANS DATA=fitCheck mean;
39 var SquareError;
40RUN;
3 Codeblock
PROC BART
Erklärung :
Dieses Beispiel veranschaulicht die Verwendung der `MARGIN`-Anweisung zur Berechnung der prädiktiven Margen des BART-Modells. Unter Verwendung des gespeicherten Modells (`mylib.modelFit`) und der Trainingsdaten werden Interventionsszenarien definiert, bei denen die Werte der erklärenden Variablen (hier `x1`, `x2`, `x3`) geändert werden. Zum Beispiel setzt 'Scenario1' `x2` auf 0.25, während 'Scenario2' `x2` auf 0.25 und `x3` auf 0.5 setzt. Dies ermöglicht die Analyse der Auswirkungen kontrollierter Änderungen auf die Modellvorhersagen.
Kopiert!
1/* Calcul des marges prédictives avec interventions */
2PROC BART restore = mylib.modelFit DATA=mylib.inputData;
3 margin "Scenario1" x2 = 0.25;
4 margin "Scenario2" x2 = 0.25 x3 = 0.5;
5 margin "x1Ref" x1 = 0.25;
6 margin "x1Evt1" x1 = 0.5;
7 margin "x1Evt2" x1 = 0.75;
8RUN;
4 Codeblock
PROC BART
Erklärung :
Dieses letzte Beispiel baut auf der Berechnung prädiktiver Margen auf, um Vergleiche durchzuführen. Die `MARGINDIFF`-Anweisung wird verwendet, um Kontraste zwischen verschiedenen prädiktiven Margen zu spezifizieren, die durch die `MARGIN`-Anweisung definiert wurden. Hier werden die Auswirkungen der Intervention auf `x1` bei 0.5 und 0.75 mit einem Referenzwert von `x1` bei 0.25 verglichen. Dies ermöglicht die direkte Ermittlung der durchschnittlichen Differenzen der Margenschätzungen mit ihren Glaubwürdigkeitsintervallen und bietet eine vergleichende Analyse der Szenarien.
Kopiert!
1/* Calcul et comparaison des différences de marges prédictives */
2PROC BART restore = mylib.modelFit DATA=mylib.inputData;
3 margin "x1Ref" x1 = 0.25;
4 margin "x1Evt1" x1 = 0.5;
5 margin "x1Evt2" x1 = 0.75;
6 margindiff event = "x1Evt1" ref = "x1Ref" / label= "x1:0.5 - 0.25";
7 margindiff event = "x1Evt2" ref = "x1Ref" / label= "x1:0.75 - 0.25";
8RUN;
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.