首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R包kernlab中的gausspr函数在线性内核上挂起

R包kernlab中的gausspr函数在线性内核上挂起
EN

Stack Overflow用户
提问于 2017-11-14 14:00:53
回答 1查看 492关注 0票数 1

我正在试验高斯进程模型,特别是在kernlab R包中的实现。我发现模型拟合在去掉线性核时会挂起。分析显示它正忙于通过运算符"%*%“进行矩阵乘法。下面给出了一个可重复使用的示例:

代码语言:javascript
运行
复制
data(iris)
#this doesn't hang
test <- kernlab::gausspr(Species~.,data=iris,type="classification",kernel="rbfdot")
#this hangs with message "Setting default kernel parameters"
test <- kernlab::gausspr(Species~.,data=iris,type="classification",kernel="vanilladot")
#this also hangs
test <- kernlab::gausspr(Species~.,data=iris,type="classification",kernel="polydot", kpar=list(degree=1))
#this doesn't hang
test <- kernlab::gausspr(Species~.,data=iris,type="classification",kernel="polydot", kpar=list(degree=2))

知道这是怎么回事吗?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-03-15 10:00:05

需要为每种内核类型指定不同的调优超参数kpar默认列表选项是kpar =(sigma= 0.1),它只适用于高斯内核。

每个内核kpar的超参数列表如下:

径向基核函数的

  • sigma逆核宽度和多项式核的拉普拉斯核"laplacedot".
  • degree, scale, offset对于双曲正切核函数"polydot".
  • scale, offset对于贝塞尔核"tanhdot".
  • sigma, order, degree对于方差分析核"anovadot".

的核

如果您想更好地了解原因,请查看第9页的this pdf中的内核函数。

然而,对于简单的线性内核来说,事情有点棘手,即内核= vanilladot。没有要指定的超参数。我尝试了kpar = NA,但它不起作用。我想出了一种方法,通过特殊的调整,使用多项式来获得线性核的结果:

代码语言:javascript
运行
复制
test <- kernlab::gausspr(Species~.,data=iris,type="classification",
                     kernel="polydot", kpar=list(degree =1, scale =1, offset =0))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47278677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档