在某些情况下,根据probability
输入参数的设置,e1071软件包svm模型的预测会有差异。此代码示例:
rm(list = ls())
data(iris)
## Training and testing subsets
set.seed(73) # For reproducibility
ri = sample(seq(1, nrow(iris)), round(nrow(iris)*0.8))
train = iris[ri, ]
test = iris[-ri,]
## Models and predictions with probability setting F or T
set.seed(42) # Just to exclude that randomness in algorithm itself is the cause
m1 <- svm(Species ~ ., data = train, probability = F)
pred1 = predict(m1, newdata = test, probability = F)
set.seed(42) # Just to exclude that randomness in algorithm itself is the cause
m2 <- svm(Species ~ ., data = train, probability = T)
pred2 = predict(m2, newdata = test, probability = T)
## Accuracy
acc1 = sum(test$Species == pred1)/nrow(iris)
acc2 = sum(test$Species == pred2)/nrow(iris)
会给予
acc1 = 0.18666 ...
acc2 = 0.19333 ...
我的结论是svm()
根据概率参数的设置执行不同的计算。
正确吗?
如果是这样,为什么又有何不同?
在包或函数的文档中,我还没有看到任何有关此的信息。
我为此感到烦恼的原因是,我发现分类的性能不仅不同,而且在我根据〜250个〜800个观察值进行分类的项目中probability = T
时始终表现稍差基因丰度(生物信息学的东西)。该项目中的代码包含数据清理功能,并使用交叉验证,因此在此处包含的代码有点庞大,因此您必须相信我的意思。
有什么想法的人吗?