Ich bin ein Support-Vektor-Maschine mit einer radialen Basis Kernel-Funktion im R caret
-Paket. Mein Code wird ohne Fehler oder Warnungen ausgeführt, generiert jedoch eine Meldung "maximale Anzahl an Iterationen erreicht ...", die ich interpretiere, dass der Algorithmus nicht zu einer Lösung konvergiert ist.Wie die maximale Anzahl von Iterationen in R Caret-Paket zwicken
ein kleines College Admissions Dataset (4 Funktionen, n = 400) als Beispiel:
# Load data & factor admit variable.
> mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mydata$admit <- as.factor(mydata$admit)
# Create levels yes/no to make sure the the classprobs get a correct name.
levels(mydata$admit) = c("yes", "no")
# Train SVM via 10-fold CV.
set.seed(123)
train_control <- trainControl(method="cv",
number=10,
classProbs = TRUE,
savePredictions = TRUE)
model_rbfsvm<- train(as.factor(admit) ~ .,
data=mydata,
trControl=train_control,
method="svmRadial",
family="binomial",
tuneGrid=expand.grid(C=c(.000001, .00001, .0001, .001, .01, .1, 1, 10), sigma=c(.00001, .0001, .001, .01, .1, 1, 10)),
metric="Accuracy",
preProcess=c("center","scale"))
erfolgreich ausführt, erzeugt aber die folgende Meldung (I abgekürzt habe - es ist für viele Linien geht weiter):
maximum number of iterations reached 4.663775e-05 4.663771e-05maximum number of iterations reached 0.0003396917 0.0003396878...
die maximale Anzahl von Iterationen mit der maxiter=
Anweisung in dem Zug-Einstellfunktion erzeugen die gleiche Meldung.
Kann die maximale Anzahl von Iterationen in caret
angepasst werden oder ist sie auf einen bestimmten Wert festgelegt?
Danke @phiver, das ist sehr hilfreich. Ja, ich sehe keine 'maxiter =' Argumente in der 'lssvm' Funktion, also gehe ich davon aus, dass der Algorithmus nur dann endet, wenn das Toleranzkriterium erfüllt ist (Standard = .0001). Trotz der Meldungen "maximale Anzahl an Iterationen erreicht ..." gibt 'caret' immer noch SVM-Vorhersagen aus, so dass dies eine falsche Warnung sein muss. – RobertF
Nach ein wenig mehr Graben, stieß ich auf diesen Beitrag: http://StackOverflow.com/Questions/15503027/Why-are-probabilities-and-response-in-ksvm-in-r-not-consistent], die diskutiert separate Methoden zur Anpassung der SVM, wenn 'classProbs = TRUE' (wo die vorhergesagte Antwort eine Wahrscheinlichkeit ist) vs.' classProbs = FALSE' (wobei die vorhergesagte Antwort eine Ja/Nein-Markierung ist). Möglicherweise sehen wir die maximale Iterationsmeldung, wenn "classProbs = TRUE" ist, weil der Algorithmus nicht konvergiert. – RobertF