Die PROC FOREST Prozedur ist ein leistungsstarkes Werkzeug für überwachtes Lernen, das komplexe Daten verwalten und präzise Vorhersagen liefern kann. Sie ist besonders effektiv in ihrer Fähigkeit, Überanpassung (Overfitting) zu handhaben und ist robust gegenüber Ausreißern und Rauschen. Die Prozedur führt Berechnungen im verteilten Speicher auf dem CAS-Server aus, wodurch sehr große Datensätze verarbeitet werden können. Sie unterstützt kontinuierliche und kategoriale Eingabevariablen sowie kontinuierliche (Regression) oder kategoriale (Klassifizierung) Zielvariablen. Es stehen Optionen für Datenpartitionierung, Variablenauswahl, Anzahl der Bäume, Tiefe der Bäume und die Bewertung der Variablenbedeutung zur Verfügung.
Datenanalyse
Type : INTERNE_ERSTELLUNG
Die Beispiele verwenden generierte Daten (Datalines) oder Daten aus der SASHELP-Bibliothek, die zum Laden in CAS angepasst wurden.
1 Codeblock
PROC FOREST Data
Erklärung : Dieses Beispiel zeigt eine einfache binäre Klassifizierung mit PROC FOREST. Es erstellt eine CAS-Tabelle namens 'CreditData' mit Informationen zu Alter, Kredit-Score, Einkommen und Kundenstatus (Ziel). Die Prozedur wird dann mit den Variablen 'Age', 'ScoreCredit', 'Revenu' als Eingaben und 'StatutClient' als nominale Zielvariable aufgerufen. Dies ist die grundlegendste Verwendung zum Trainieren eines Zufallswaldmodells.
Kopiert!
/* Création d'une session CAS et d'une caslib */
CAS;
LIBNAME mycas CAS;
/* Données d'exemple pour la classification binaire */
DATA mycas.CreditData;
INPUT Age ScoreCredit Revenu StatutClient $;
DATALINES;
25 700 50000 Bon
30 650 40000 Mauvais
35 720 60000 Bon
40 600 30000 Mauvais
45 750 70000 Bon
50 680 45000 Mauvais
60 710 55000 Bon
28 670 38000 Mauvais
33 730 62000 Bon
55 690 48000 Bon
;
RUN;
/* Exécution de la procédure FOREST pour la classification */
PROC FOREST data=mycas.CreditData;
input Age ScoreCredit Revenu;
target StatutClient / level=nominal;
RUN;
/* Nettoyage de la session CAS si nécessaire */
CAS_TERMINATE;
1
/* Création d'une session CAS et d'une caslib */
2
CAS;
3
LIBNAME mycas CAS;
4
5
/* Données d'exemple pour la classification binaire */
6
DATA mycas.CreditData;
7
INPUT Age ScoreCredit Revenu StatutClient $;
8
DATALINES;
9
2570050000 Bon
10
3065040000 Mauvais
11
3572060000 Bon
12
4060030000 Mauvais
13
4575070000 Bon
14
5068045000 Mauvais
15
6071055000 Bon
16
2867038000 Mauvais
17
3373062000 Bon
18
5569048000 Bon
19
;
20
RUN;
21
22
/* Exécution de la procédure FOREST pour la classification */
23
PROC FORESTDATA=mycas.CreditData;
24
INPUT Age ScoreCredit Revenu;
25
target StatutClient / level=nominal;
26
RUN;
27
28
/* Nettoyage de la session CAS si nécessaire */
29
CAS_TERMINATE;
2 Codeblock
PROC FOREST Data
Erklärung : Dieses erweiterte Beispiel verwendet PROC FOREST für eine Regressionsaufgabe zur Vorhersage von Verkäufen. Es führt die Optionen 'partition' zur Aufteilung der Daten in Trainings- und Testsets (70%/30%) und 'varimportance' zur Berechnung und Anzeige der Variablenbedeutung im Modell ein. Die Variable 'Region' wird explizit als nominal definiert. Das trainierte Modell wird über 'save state' gespeichert.
Kopiert!
/* Création d'une session CAS et d'une caslib */
CAS;
LIBNAME mycas CAS;
/* Données d'exemple étendues pour la régression avec une variable catégorielle */
DATA mycas.SalesData;
INPUT Publicite Internet Vendeurs Region $ Ventes;
DATALINES;
10 5 2 Est 100
12 6 3 Ouest 120
8 4 2 Nord 90
15 7 4 Sud 150
11 5 3 Est 110
13 6 4 Ouest 130
9 4 2 Nord 95
16 8 5 Sud 160
10 5 3 Est 105
14 7 4 Ouest 140
;
RUN;
/* Exécution de la procédure FOREST avec partition et importance des variables */
PROC FOREST data=mycas.SalesData seed=12345;
input Publicite Internet Vendeurs Region / level=interval Publicite Internet Vendeurs Region level=nominal Region;
target Ventes / level=interval;
partition fraction(0.7 train = training 0.3 test = testing);
varimportance;
ods output VariableImportance=mycas.VarImp;
save state out=mycas.ForestModel / onestore;
RUN;
/* Affichage de l'importance des variables */
PROC PRINT data=mycas.VarImp;
RUN;
/* Nettoyage de la session CAS si nécessaire */
CAS_TERMINATE;
1
/* Création d'une session CAS et d'une caslib */
2
CAS;
3
LIBNAME mycas CAS;
4
5
/* Données d'exemple étendues pour la régression avec une variable catégorielle */
6
DATA mycas.SalesData;
7
INPUT Publicite Internet Vendeurs Region $ Ventes;
8
DATALINES;
9
1052 Est 100
10
1263 Ouest 120
11
842 Nord 90
12
1574 Sud 150
13
1153 Est 110
14
1364 Ouest 130
15
942 Nord 95
16
1685 Sud 160
17
1053 Est 105
18
1474 Ouest 140
19
;
20
RUN;
21
22
/* Exécution de la procédure FOREST avec partition et importance des variables */
23
PROC FORESTDATA=mycas.SalesData seed=12345;
24
INPUT Publicite Internet Vendeurs Region / level=interval Publicite Internet Vendeurs Region level=nominal Region;
25
target Ventes / level=interval;
26
partition fraction(0.7 train = training 0.3 test = testing);
27
varimportance;
28
ods OUTPUT VariableImportance=mycas.VarImp;
29
save state out=mycas.ForestModel / onestore;
30
RUN;
31
32
/* Affichage de l'importance des variables */
33
PROC PRINTDATA=mycas.VarImp;
34
RUN;
35
36
/* Nettoyage de la session CAS si nécessaire */
37
CAS_TERMINATE;
3 Codeblock
PROC FOREST Data
Erklärung : Dieses fortgeschrittene Beispiel zeigt eine Regression zur Vorhersage von Hauspreisen. Es verwendet Optionen wie 'ntrees' (Anzahl der Bäume), 'maxdepth' (maximale Tiefe der Bäume), 'nsubsets' (Anzahl der zu samplenden Variablen an jedem Knoten) und 'baggingfraction', um den Trainingsprozess des Zufallswaldes zu steuern. Die Option 'proctime' liefert Informationen zur Ausführungszeit. Das trainierte Modell wird gespeichert und über PROC ASTORE zum Scoring neuer Daten verwendet.
Kopiert!
/* Création d'une session CAS et d'une caslib */
CAS;
LIBNAME mycas CAS;
/* Données d'exemple pour la régression avec plus de complexité */
DATA mycas.HousingPrices;
INPUT Surface Chambres NbSallesBains AgeMaison Garage NbEtages PrixMaison;
DATALINES;
1500 3 2 10 1 2 250000
1200 2 1 20 0 1 180000
2000 4 3 5 2 3 350000
1000 2 1 30 0 1 150000
1800 3 2 15 1 2 290000
1300 3 1 25 1 1 200000
2200 4 3 8 2 3 380000
900 2 1 40 0 1 130000
1700 3 2 12 1 2 270000
1600 3 2 18 1 2 260000
;
RUN;
/* Exécution de la procédure FOREST avec tuning d'hyperparamètres et sortie détaillée */
PROC FOREST data=mycas.HousingPrices ntrees=100 maxdepth=10 nsubsets=5 seed=54321;
input Surface Chambres NbSallesBains AgeMaison Garage NbEtages;
target PrixMaison / level=interval;
baggingfraction=0.7;
proctime;
performance nthreads=4;
ods output FitStatistics=mycas.FitStats;
save rforest out=mycas.ForestModel_Adv;
RUN;
/* Création de nouvelles données pour la prédiction */
DATA mycas.NewHouses;
INPUT Surface Chambres NbSallesBains AgeMaison Garage NbEtages;
DATALINES;
1400 3 2 12 1 2
1900 4 2 7 2 3
;
RUN;
/* Application du modèle pour faire des prédictions */
PROC ASTORE;
score data=mycas.NewHouses
out=mycas.NewHouses_Scored
rstore=mycas.ForestModel_Adv;
run;
PROC PRINT data=mycas.NewHouses_Scored;
RUN;
/* Nettoyage de la session CAS si nécessaire */
CAS_TERMINATE;
1
/* Création d'une session CAS et d'une caslib */
2
CAS;
3
LIBNAME mycas CAS;
4
5
/* Données d'exemple pour la régression avec plus de complexité */
/* Application du modèle pour faire des prédictions */
43
PROC ASTORE;
44
score DATA=mycas.NewHouses
45
out=mycas.NewHouses_Scored
46
rstore=mycas.ForestModel_Adv;
47
RUN;
48
49
PROC PRINTDATA=mycas.NewHouses_Scored;
50
RUN;
51
52
/* Nettoyage de la session CAS si nécessaire */
53
CAS_TERMINATE;
4 Codeblock
PROC FOREST Data
Erklärung : Dieses Beispiel beleuchtet die Verwendung von PROC FOREST in einer CAS-Umgebung für die Klassifizierung. Es lädt einen vorhandenen Datensatz (SASHELP.CLASS) in den CAS-Speicher, erstellt eine neue binäre Zielvariable ('TooOld') und trainiert dann ein Zufallswaldmodell. Optionen wie 'ntrees' und 'maxdepth' werden angepasst. Das Modell wird gespeichert und zur Vorhersage auf einem neuen Datensatz verwendet, was den typischen Workflow in einer verteilten Umgebung demonstriert.
Kopiert!
/* Établissement d'une session CAS */
CAS;
LIBNAME mycas CAS;
/* Chargement d'un jeu de données SASHELP dans CAS pour simuler un grand jeu de données */
/* (Assurez-vous que le jeu de données SASHELP.CLASS est disponible et a une taille raisonnable) */
PROC CASUTIL;
LOAD DATA=SASHELP.CLASS OUTCASLIB=mycas OUTCAS=ClassData REPLACE;
RUN;
/* Préparation des données: ajout d'une variable cible binaire pour la classification */
/* Exemple: 'TooOld' si Age > 14 */
DATA mycas.ClassDataPrepared;
SET mycas.ClassData;
IF Age > 14 THEN TooOld = 1;
ELSE TooOld = 0;
RUN;
/* Exécution de la procédure FOREST sur la table CAS */
PROC FOREST data=mycas.ClassDataPrepared ntrees=200 maxdepth=15 seed=67890;
input Age Height Weight;
target TooOld / level=binary;
ods output FitStatistics=mycas.ForestFitStats
IterationHistory=mycas.ForestIterHist;
save rforest out=mycas.BinaryForestModel;
RUN;
/* Vérification des statistiques d'ajustement */
PROC PRINT data=mycas.ForestFitStats;
RUN;
/* Chargement de nouvelles données pour le scoring */
DATA mycas.NewStudents;
INPUT Name $ Age Height Weight;
DATALINES;
John 15 65 120
Jane 12 58 90
Mike 17 70 150
Sarah 13 60 100
;
RUN;
/* Scoring des nouvelles données avec le modèle entraîné */
PROC ASTORE;
score data=mycas.NewStudents
out=mycas.NewStudents_Scored
rstore=mycas.BinaryForestModel;
RUN;
PROC PRINT data=mycas.NewStudents_Scored;
RUN;
/* Nettoyage de la session CAS */
CAS_TERMINATE;
1
/* Établissement d'une session CAS */
2
CAS;
3
LIBNAME mycas CAS;
4
5
/* Chargement d'un jeu de données SASHELP dans CAS pour simuler un grand jeu de données */
6
/* (Assurez-vous que le jeu de données SASHELP.CLASS est disponible et a une taille raisonnable) */
/* Chargement de nouvelles données pour le scoring */
33
DATA mycas.NewStudents;
34
INPUT Name $ Age Height Weight;
35
DATALINES;
36
John 1565120
37
Jane 125890
38
Mike 1770150
39
Sarah 1360100
40
;
41
RUN;
42
43
/* Scoring des nouvelles données avec le modèle entraîné */
44
PROC ASTORE;
45
score DATA=mycas.NewStudents
46
out=mycas.NewStudents_Scored
47
rstore=mycas.BinaryForestModel;
48
RUN;
49
50
PROC PRINTDATA=mycas.NewStudents_Scored;
51
RUN;
52
53
/* Nettoyage de la session CAS */
54
CAS_TERMINATE;
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.