【发布时间】:2016-09-18 21:00:46
【问题描述】:
我是 SVM 和 e1071 的新手。我发现每次运行完全相同的代码时结果都不同。
例如:
data(iris)
library(e1071)
model <- svm(Species ~ ., data = iris[-150,], probability = TRUE)
pred <- predict(model, iris[150,-5], probability = TRUE)
result1 <- as.data.frame(attr(pred, "probabilities"))
model <- svm(Species ~ ., data = iris[-150,], probability = TRUE)
pred <- predict(model, iris[150,-5], probability = TRUE)
result2 <- as.data.frame(attr(pred, "probabilities"))
然后我得到result1:
setosa versicolor virginica
150 0.009704854 0.1903696 0.7999255
和result2 为:
setosa versicolor virginica
150 0.01006306 0.1749947 0.8149423
结果每一轮都在变化。
这里我使用前 149 行作为训练集,最后一行作为测试。 result1 和 result2 中每个类的概率并不完全相同。我猜在预测过程中有一些“随机”的过程。这是怎么回事?
我知道,如果我在每次通话前set.seed() 使用相同的号码,则可以修复预测的概率。我并不是“瞄准”一个固定的预测结果,只是好奇为什么会发生这种情况以及生成概率预测需要哪些步骤。
微小的差异对 iris 数据并没有真正的大影响,因为最后一个样本仍会被预测为“virginica”。但是当我的数据(有两个 A 和 B 类)不是那么“好”,并且预测未知样本两次成为 A 类的概率分别为 0.489 和 0.521 时,就会令人困惑。
谢谢!
【问题讨论】:
标签: r svm probability