Я использую ksvm
из пакета kernlab в R для прогнозирования вероятностей, используя опцию type="probabilities"
в predict.ksvm
. Тем не менее, я считаю, что иногда использование predict(model,observation,type="r")
дает не класс с наивысшей вероятностью, заданный predict(model,observation,type="p")
.Почему вероятности и ответ в ksvm в R не согласованы?
Пример:
> predict(model,observation,type="r")
[1] A
Levels: A B
> predict(model,observation,type="p")
A B
[1,] 0.21 0.79
Является ли это правильное поведение, или ошибка? Если это правильное поведение, как я могу оценить наиболее вероятный класс из вероятностей?
Покушение на воспроизводимой Например:
library(kernlab)
set.seed(1000)
# Generate fake data
n <- 1000
x <- rnorm(n)
p <- 1/(1 + exp(-10*x))
y <- factor(rbinom(n, 1, p))
dat <- data.frame(x, y)
tmp <- split(dat, dat$y)
# Create unequal sizes in the groups (helps illustrate the problem)
newdat <- rbind(tmp[[1]][1:100,], tmp[[2]][1:10,])
# Fit the model using radial kernal (default)
out <- ksvm(y ~ x, data = newdat, prob.model = T)
# Create some testing points near the boundary
testdat <- data.frame(x = seq(.09, .12, .01))
# Get predictions using both methods
responsepreds <- predict(out, newdata = testdat, type = "r")
probpreds <- predict(out, testdat, type = "p")
results <- data.frame(x = testdat,
response = responsepreds,
P.x.0 = probpreds[,1],
P.x.1 = probpreds[,2])
Вывод результатов:
> results
x response P.x.0 P.x.1
1 0.09 0 0.7199018 0.2800982
2 0.10 0 0.6988079 0.3011921
3 0.11 1 0.6824685 0.3175315
4 0.12 1 0.6717304 0.3282696
Это очень помогло бы нам, если бы вы предоставили нам образцы данных и образец модели. Это упростит объяснение этого поведения. Короче говоря, это, вероятно, правильное поведение. – nograpes
Вероятно, никто не может согласиться, что это ошибка, если вы не предоставили воспроизводимый код, который генерирует это поведение. В противном случае байесовцы из нас просто скажут, что их предшественник «Вы допустили ошибку», вероятно, правильно. – joran
Вопрос в первую очередь заключается в том, возможно ли это, но я понимаю, что воспроизводимый пример будет полезен.К сожалению, я попытаюсь подготовить образец модели с таким поведением, но это произошло с моделью, которая слишком велика для SO, к сожалению. Я дам вам знать. – roelandvanbeek