8 votos

¿Cómo puedo elegir los núcleos de SVM que voy a utilizar?

Tengo problemas para determinar qué kernel debo utilizar en una SVM no lineal sin hacer pruebas previas. Quiero saber si hay alguna otra manera de determinar el mejor kernel sin pruebas? ¿Cómo se relaciona con los datos?

0 votos

¿Qué suele hacer la gente de su ámbito? Puede intentar utilizar el mismo núcleo como punto de partida; lo mismo con los valores C y sigma/gamma.

17voto

Boris Tsirelson Puntos 191

Haga su análisis con varios núcleos diferentes. Asegúrese de realizar una validación cruzada. Elija el núcleo que mejor funcione durante la validación cruzada y ajústelo a todo el conjunto de datos.

/edit: Aquí hay un código de ejemplo en R, para una SVM de clasificación:

#Use a support vector machine to predict iris species
library(caret)
library(caTools)

#Choose x and y
x <- iris[,c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width")]
y <- iris$Species

#Pre-Compute CV folds so we can use the same ones for all models
CV_Folds <- createMultiFolds(y, k = 10, times = 5)

#Fit a Linear SVM
L_model <- train(x,y,method="svmLinear",tuneLength=5,
    trControl=trainControl(method='repeatedCV',index=CV_Folds))

#Fit a Poly SVM
P_model <- train(x,y,method="svmPoly",tuneLength=5,
    trControl=trainControl(method='repeatedCV',index=CV_Folds))

#Fit a Radial SVM
R_model <- train(x,y,method="svmRadial",tuneLength=5,
    trControl=trainControl(method='repeatedCV',index=CV_Folds))

#Compare 3 models:
resamps <- resamples(list(Linear = L_model, Poly = P_model, Radial = R_model))
summary(resamps)
bwplot(resamps, metric = "Accuracy")
densityplot(resamps, metric = "Accuracy")

#Test a model's predictive accuracy Using Area under the ROC curve
#Ideally, this should be done with a SEPERATE test set
pSpecies <- predict(L_model,x,type='prob')
colAUC(pSpecies,y,plot=TRUE)

0 votos

¿La validación cruzada me da la mejor frontera que se ajusta a mi conjunto de datos? Quiero decir que no hay diferentes parámetros para decidir los mejores kernels?

1 votos

Cada uno de ellos necesitará también un cierto ajuste para seleccionar los mejores parámetros para ese núcleo. Este ajuste también debe hacerse mediante la validación cruzada, DENTRO de la validación cruzada general. Las SVM son complicadas.

0 votos

Gracias :) Muy útil

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X