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!
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 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!
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 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!
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 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!
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 */
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.