Publicado el :
Aprendizaje Automático CREATION_INTERNE

Procedimiento SVMACHINE

Este código también está disponible en: Deutsch English Français
En espera de validación
El procedimiento SVMACHINE es una herramienta potente para construir modelos de clasificación y regresión. Utiliza el concepto de hiperplanos para separar las clases de datos, maximizando el margen entre los puntos de datos más cercanos (vectores de soporte). Admite diferentes funciones de núcleo (lineal, polinomial, RBF, sigmoide) para adaptarse a relaciones complejas en los datos. El procedimiento se ejecuta en el servidor CAS, permitiendo el procesamiento de grandes volúmenes de datos de manera distribuida y paralela. Es particularmente eficaz para problemas de clasificación binaria y se puede adaptar a problemas de regresión.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP, cargados en la sesión CAS.

1 Bloque de código
PROC SVMACHINE Data
Explicación :
Este ejemplo ilustra una clasificación binaria simple utilizando el procedimiento SVMACHINE con un núcleo lineal. Se crea un subconjunto del conjunto de datos SASHELP.IRIS en CAS, conservando solo dos especies. La variable 'target' se binariza (0 o 1). Luego, se ejecuta el procedimiento SVMACHINE para entrenar un modelo y se muestran las estadísticas de ajuste.
¡Copiado!
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 Bloque de código
PROC SVMACHINE Data
Explicación :
Este ejemplo utiliza un conjunto de datos bidimensional simulado con una frontera de decisión no lineal. El procedimiento SVMACHINE se configura con un núcleo RBF (Radial Basis Function) y un parámetro de costo 'C' de 10. El parámetro 'C' controla la penalización para los puntos de datos mal clasificados, influyendo en el ancho del margen y la complejidad del modelo.
¡Copiado!
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 Bloque de código
PROC SVMACHINE Data
Explicación :
Este ejemplo demuestra el uso de un núcleo polinomial de grado 2 para capturar relaciones más complejas en los datos. También integra un paso de partición de datos en conjuntos de entrenamiento (70%) y validación (30%) para evaluar la generalización del modelo. La salida incluye las estadísticas de ajuste y una matriz de confusión.
¡Copiado!
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 Bloque de código
PROC CAS / SVMACHINE Data
Explicación :
Este ejemplo avanzado muestra cómo interactuar con el procedimiento SVMACHINE a través del lenguaje de script CASL (CAS Language) dentro de PROC CAS. Incluye la creación de datos de entrenamiento y nuevos datos para puntuar directamente en una tabla CAS. El modelo SVM se entrena utilizando la acción `svMachine.svMachine` y su estado se guarda. Luego, este modelo guardado se utiliza para predecir los valores en nuevos datos y se muestran los resultados.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.