Publié le :

Procédure SVMACHINE

Ce code est également disponible en : Deutsch English Español
En attente de validation
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é !
1CASLIB _ALL_ ASSIGN; /* Assurez-vous que la CASLIB est assignée */
2 
3DATA mycas.iris_subset;
4 SET sashelp.iris;
5 where species in ('Setosa', 'Versicolor');
6 IF species = 'Setosa' THEN target = 0;
7 ELSE target = 1;
8 drop species;
9RUN;
10 
11PROC SVMACHINE DATA=mycas.iris_subset;
12 INPUT sepalwidth sepallength petalwidth petallength / level=interval;
13 target target / level=binary;
14 kernel linear;
15 ods OUTPUT FitStatistics=FitStat;
16RUN;
17 
18PROC PRINT DATA=FitStat;
19 title 'Statistiques d''ajustement du modèle SVM Linéaire';
20RUN;
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é !
1CASLIB _ALL_ ASSIGN;
2 
3DATA 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 < 10 THEN target = 0;
9 ELSE target = 1;
10 OUTPUT;
11 END;
12RUN;
13 
14PROC SVMACHINE DATA=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;
20RUN;
21 
22PROC PRINT DATA=FitStat;
23 title 'Statistiques d''ajustement du modèle SVM RBF';
24RUN;
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é !
1CASLIB _ALL_ ASSIGN;
2 
3DATA mycas.complex_data;
4 call streaminit(456);
5 DO i = 1 to 200;
6 x1 = rand('Normal', 0, 2);
7 x2 = rand('Normal', 0, 2);
8 IF x1**2 + x2**2 < 4 and x1 > 0 THEN target = 0;
9 ELSE target = 1;
10 OUTPUT;
11 END;
12RUN;
13 
14PROC SVMACHINE DATA=mycas.complex_data;
15 INPUT x1 x2 / level=interval;
16 target target / level=binary;
17 kernel polynomial / degree=2; /* Noyau polynomial de degré 2 */
18 c 1;
19 partition fraction(train=0.7 val=0.3 seed=789);
20 ods OUTPUT FitStatistics=FitStat
21 MisclassificationMatrix=MisClass;
22RUN;
23 
24PROC PRINT DATA=FitStat;
25 title 'Statistiques d''ajustement du modèle SVM Polynomial';
26RUN;
27 
28PROC PRINT DATA=MisClass;
29 title 'Matrice de confusion du modèle SVM Polynomial';
30RUN;
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é !
1CASLIB _ALL_ ASSIGN;
2 
3PROC 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 1 1 0
10 9 9 1
11 5 5 0
12 2 8 1
13 7 3 0
14 ;
15 RUN;
16 
17 /* Entraînement d'un modèle simple pour la démonstration */
18 svmachine.svMachine /
19 TABLE={name='casuser.score_data'},
20 inputs={'x1', 'x2'},
21 target='target',
22 kernel={type='linear'},
23 savestate={name='my_svm_model', replace=true}
24 ;
25 
26 /* Préparation des nouvelles données à scorer */
27 DATA casuser.new_data / overwrite=true;
28 INPUT x1 x2;
29 DATALINES;
30 1.5 1.5
31 8.5 8.5
32 4.8 5.2
33 3.0 7.0
34 6.5 2.5
35 ;
36 RUN;
37 
38 /* Scoring des nouvelles données */
39 svmachine.svMachine /
40 TABLE={name='casuser.new_data'},
41 predict={model={name='my_svm_model'}},
42 OUTPUT={casout={name='casuser.predictions', replace=true}, copyvars={'x1', 'x2'}}
43 ;
44 
45 /* Affichage des prédictions */
46 printtable / TABLE={name='casuser.predictions'};
47QUIT;
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.