Die SVMACHINE Prozedur ist ein leistungsstarkes Werkzeug zum Erstellen von Klassifizierungs- und Regressionsmodellen. Sie verwendet das Konzept von Hyperflächen, um Datenklassen zu trennen, indem der Abstand zwischen den nächstgelegenen Datenpunkten (Support-Vektoren) maximiert wird. Sie unterstützt verschiedene Kernel-Funktionen (linear, polynomial, RBF, Sigmoid), um komplexe Beziehungen in den Daten anzupassen. Die Prozedur wird auf dem CAS-Server ausgeführt, was die verteilte und parallele Verarbeitung großer Datenmengen ermöglicht. Sie ist besonders effizient bei binären Klassifizierungsproblemen und kann an Regressionsprobleme angepasst werden.
Datenanalyse
Type : CREATION_INTERNE
Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP, die in die CAS-Sitzung geladen werden.
1 Codeblock
PROC SVMACHINE Data
Erklärung : Dieses Beispiel veranschaulicht eine einfache binäre Klassifizierung mit der SVMACHINE-Prozedur mit einem linearen Kernel. Eine Untergruppe des SASHELP.IRIS-Datensatzes wird in CAS erstellt, wobei nur zwei Arten beibehalten werden. Die Variable 'target' wird binärisiert (0 oder 1). Die SVMACHINE-Prozedur wird dann ausgeführt, um ein Modell zu trainieren, und die Anpassungsstatistiken werden angezeigt.
Kopiert!
CASLIB _ALL_ ASSIGN; /* Assurez-vous que la CASLIB est assignée */
DATA mycas.iris_subset;
set sashelp.iris;
where species in ('Setosa', 'Versicolor');
if species = 'Setosa' then target = 0;
else target = 1;
drop species;
RUN;
PROC SVMACHINE data=mycas.iris_subset;
input sepalwidth sepallength petalwidth petallength / level=interval;
target target / level=binary;
kernel linear;
ods output FitStatistics=FitStat;
RUN;
PROC PRINT data=FitStat;
title 'Statistiques d''ajustement du modèle SVM Linéaire';
RUN;
1
CASLIB _ALL_ ASSIGN; /* Assurez-vous que la CASLIB est assignée */
title 'Statistiques d''ajustement du modèle SVM Linéaire';
20
RUN;
2 Codeblock
PROC SVMACHINE Data
Erklärung : Dieses Beispiel verwendet einen simulierten zweidimensionalen Datensatz mit einer nichtlinearen Entscheidungsgrenze. Die SVMACHINE-Prozedur ist mit einem RBF-Kernel (Radial Basis Function) und einem Kostenparameter 'C' von 10 konfiguriert. Der Parameter 'C' steuert die Strafe für falsch klassifizierte Datenpunkte und beeinflusst die Breite der Marge und die Komplexität des Modells.
Kopiert!
CASLIB _ALL_ ASSIGN;
DATA mycas.simulated_data;
call streaminit(123);
do i = 1 to 100;
x1 = rand('Uniform') * 10;
x2 = rand('Uniform') * 10;
if (x1 - 5)**2 + (x2 - 5)**2 < 10 then target = 0;
else target = 1;
output;
end;
RUN;
PROC SVMACHINE data=mycas.simulated_data;
input x1 x2 / level=interval;
target target / level=binary;
kernel rbf;
c 10; /* Paramètre de coût (C) */
ods output FitStatistics=FitStat;
RUN;
PROC PRINT data=FitStat;
title 'Statistiques d''ajustement du modèle SVM RBF';
RUN;
1
CASLIB _ALL_ ASSIGN;
2
3
DATA mycas.simulated_data;
4
call streaminit(123);
5
DO i = 1 to 100;
6
x1 = rand('Uniform') * 10;
7
x2 = rand('Uniform') * 10;
8
IF (x1 - 5)**2 + (x2 - 5)**2 < 10THEN target = 0;
9
ELSE target = 1;
10
OUTPUT;
11
END;
12
RUN;
13
14
PROC SVMACHINEDATA=mycas.simulated_data;
15
INPUT x1 x2 / level=interval;
16
target target / level=binary;
17
kernel rbf;
18
c 10; /* Paramètre de coût (C) */
19
ods OUTPUT FitStatistics=FitStat;
20
RUN;
21
22
PROC PRINTDATA=FitStat;
23
title 'Statistiques d''ajustement du modèle SVM RBF';
24
RUN;
3 Codeblock
PROC SVMACHINE Data
Erklärung : Dieses Beispiel demonstriert die Verwendung eines polynomischen Kernels vom Grad 2, um komplexere Beziehungen in den Daten zu erfassen. Es enthält auch einen Schritt zur Partitionierung der Daten in Trainings- (70%) und Validierungssätze (30%), um die Generalisierung des Modells zu bewerten. Die Ausgabe umfasst die Anpassungsstatistiken und eine Konfusionsmatrix.
Kopiert!
CASLIB _ALL_ ASSIGN;
DATA mycas.complex_data;
call streaminit(456);
do i = 1 to 200;
x1 = rand('Normal', 0, 2);
x2 = rand('Normal', 0, 2);
if x1**2 + x2**2 < 4 and x1 > 0 then target = 0;
else target = 1;
output;
end;
RUN;
PROC SVMACHINE data=mycas.complex_data;
input x1 x2 / level=interval;
target target / level=binary;
kernel polynomial / degree=2; /* Noyau polynomial de degré 2 */
c 1;
partition fraction(train=0.7 val=0.3 seed=789);
ods output FitStatistics=FitStat
MisclassificationMatrix=MisClass;
RUN;
PROC PRINT data=FitStat;
title 'Statistiques d''ajustement du modèle SVM Polynomial';
RUN;
PROC PRINT data=MisClass;
title 'Matrice de confusion du modèle SVM Polynomial';
RUN;
title 'Statistiques d''ajustement du modèle SVM Polynomial';
26
RUN;
27
28
PROC PRINTDATA=MisClass;
29
title 'Matrice de confusion du modèle SVM Polynomial';
30
RUN;
4 Codeblock
PROC CAS / SVMACHINE Data
Erklärung : Dieses fortgeschrittene Beispiel zeigt, wie mit der SVMACHINE-Prozedur über die CASL-Skriptsprache (CAS Language) innerhalb von PROC CAS interagiert wird. Es umfasst die Erstellung von Trainingsdaten und neuen Daten zum Scoren direkt in einer CAS-Tabelle. Das SVM-Modell wird mit der Aktion `svMachine.svMachine` trainiert und sein Zustand gespeichert. Anschließend wird dieses gespeicherte Modell verwendet, um Werte für neue Daten vorherzusagen, und die Ergebnisse werden angezeigt.
Kopiert!
CASLIB _ALL_ ASSIGN;
PROC CAS;
session casauto;
/* Création de données simulées directement dans CAS */
data casuser.score_data / overwrite=true;
input x1 x2 target;
datalines;
1 1 0
9 9 1
5 5 0
2 8 1
7 3 0
;
run;
/* Entraînement d'un modèle simple pour la démonstration */
svmachine.svMachine /
table={name='casuser.score_data'},
inputs={'x1', 'x2'},
target='target',
kernel={type='linear'},
savestate={name='my_svm_model', replace=true}
;
/* Préparation des nouvelles données à scorer */
data casuser.new_data / overwrite=true;
input x1 x2;
datalines;
1.5 1.5
8.5 8.5
4.8 5.2
3.0 7.0
6.5 2.5
;
run;
/* Scoring des nouvelles données */
svmachine.svMachine /
table={name='casuser.new_data'},
predict={model={name='my_svm_model'}},
output={casout={name='casuser.predictions', replace=true}, copyvars={'x1', 'x2'}}
;
/* Affichage des prédictions */
printtable / table={name='casuser.predictions'};
QUIT;
1
CASLIB _ALL_ ASSIGN;
2
3
PROC CAS;
4
SESSION casauto;
5
/* Création de données simulées directement dans CAS */
6
DATA casuser.score_data / overwrite=true;
7
INPUT x1 x2 target;
8
DATALINES;
9
11 0
10
991
11
55 0
12
281
13
73 0
14
;
15
RUN;
16
17
/* Entraînement d'un modèle simple pour la démonstration */
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.