La procédure SVMACHINE est un outil puissant pour construire des modèles de classification et de régression. Elle utilise le concept des hyperplans pour séparer les classes de données, en maximisant la marge entre les points de données les plus proches (vecteurs de support). Elle supporte différentes fonctions de noyau (linéaire, polynomial, RBF, sigmoïde) pour s'adapter à des relations complexes dans les données. La procédure s'exécute sur le serveur CAS, permettant le traitement de grands volumes de données de manière distribuée et parallèle. Elle est particulièrement efficace pour les problèmes de classification binaire et peut être adaptée aux problèmes de régression.
Analyse des données
Type : CREATION_INTERNE
Les exemples utilisent des données générées (datalines) ou SASHELP, chargées dans la session CAS.
1 Bloc de code
PROC SVMACHINE Data
Explication : Cet exemple illustre une classification binaire simple en utilisant la procédure SVMACHINE avec un noyau linéaire. Un sous-ensemble du jeu de données SASHELP.IRIS est créé dans CAS, ne conservant que deux espèces. La variable 'target' est binarisée (0 ou 1). La procédure SVMACHINE est ensuite exécutée pour entraîner un modèle, et les statistiques d'ajustement sont affichées.
Copié !
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 Bloc de code
PROC SVMACHINE Data
Explication : Cet exemple utilise un jeu de données bidimensionnel simulé avec une frontière de décision non linéaire. La procédure SVMACHINE est configurée avec un noyau RBF (Radial Basis Function) et un paramètre de coût 'C' de 10. Le paramètre 'C' contrôle la pénalité pour les points de données mal classés, influençant la largeur de la marge et la complexité du modèle.
Copié !
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 Bloc de code
PROC SVMACHINE Data
Explication : Cet exemple démontre l'utilisation d'un noyau polynomial de degré 2 pour capturer des relations plus complexes dans les données. Il intègre également une étape de partitionnement des données en ensembles d'entraînement (70%) et de validation (30%) pour évaluer la généralisation du modèle. La sortie inclut les statistiques d'ajustement et une matrice de confusion.
Copié !
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 Bloc de code
PROC CAS / SVMACHINE Data
Explication : Cet exemple avancé montre comment interagir avec la procédure SVMACHINE via le langage de script CASL (CAS Language) au sein de PROC CAS. Il inclut la création de données d'entraînement et de nouvelles données à scorer directement dans une table CAS. Le modèle SVM est entraîné en utilisant l'action `svMachine.svMachine` et son état est sauvegardé. Ensuite, ce modèle sauvegardé est utilisé pour prédire les valeurs sur de nouvelles données, et les résultats sont affichés.
Copié !
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 */
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.