gpt4 book ai didi

r - kernlab::ksvm 中的概率模型

转载 作者:行者123 更新时间:2023-12-02 09:43:36 31 4
gpt4 key购买 nike

对于kernlab::ksvm中的分类任务,使用的默认SVM是C-svm(LIBSVM,Chang & Lin),它计算二元分类任务。通过计算多个一对多二元分类器并聚合结果,可以将其扩展到多类问题。通过 spoc-svm(Crammer、Singer)和 kbb-svm(Weston、Watkins)支持 native 多类分类。

这些在 kernlab 中通过 ksvm 中的 type 参数得到支持(请参阅 ?kernlab::ksvm) :

ksvm(..., type= "C-svc", ...)
ksvm(..., type= "spoc-svc", ...)
ksvm(..., type= "kbb-svc", ...)

但是,预测概率只能通过 C-svm 获得。为什么?这是执行中的错误吗?

library(kernlab)
data(iris)
# default - C-svc allows for a prob.model
k1 <- ksvm(Species ~. ,data= iris,
type= "C-svc",
prob.model=TRUE,
kernel= "rbfdot", C= 1)

p1 <- predict(k1, iris, type= "probabilities") # works

#### non default, doesn't work:
k1 <- ksvm(Species ~. ,data= iris,
type= "spoc-svc",
prob.model=TRUE,
kernel= "rbfdot", C= 1)

p1 <- predict(k1, iris, type= "probabilities")
Error in .local(object, ...) :
ksvm object contains no probability model. Make sure you set the paramater prob.model in ksvm during training.

k1 <- ksvm(Species ~. ,data= iris,
type= "kbb-svc",
prob.model=TRUE,
kernel= "rbfdot", C= 1)

p1 <- predict(k1, iris, type= "probabilities")
Error in .local(object, ...) :
ksvm object contains no probability model. Make sure you set the paramater prob.model in ksvm during training.

文档没有注意到这一点或提供任何指导。正如您所看到的,参数 prob.model 已在函数调用中指定。至少,这似乎是一个有问题的错误消息。

最佳答案

kernlab 目前不支持除 C-svcnu-svcC-bsvc< 之外的类型的概率估计 (check the code)。

if(type == "probabilities")
{
if(is.null(prob.model(object)[[1]]))
stop("ksvm object contains no probability model. Make sure you set the paramater prob.model in ksvm during training.")

if(type(object)=="C-svc"||type(object)=="nu-svc"||type(object)=="C-bsvc")
{
[...]
}
else
stop("probability estimates only supported for C-svc, C-bsvc and nu-svc")
}
<小时/>

问题是 native 多类解决方案缺乏作为输入的二元概率。实际上,编写自己的解决方案并不那么困难。

关于r - kernlab::ksvm 中的概率模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34323072/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com