繁体   English   中英

来自R包kernlab的gausspr函数挂在线性内核上

[英]gausspr function from R package kernlab hangs on linear kernel

我正在试验高斯过程模型,尤其是在kernlab R软件包中的实现。 我发现,使用线性核切除后,模型拟合会挂起。 分析表明它正忙于通过运算符“%*%”进行矩阵乘法。 下面是一个可重现的示例:

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))

知道这里发生了什么吗? 非常感谢!

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

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

  • 径向基础内核函数“ rbfdot ”和拉普拉斯内核“ laplacedot ”的sigma逆内核宽度。

  • 多项式内核“ polydot ”的degree, scale, offset 位数 degree, scale, offset

  • scale, offset双曲线正切核函数“ tanhdot ”的scale, offset

  • 贝塞尔内核“ besseldot ”的sigma, order, degree

  • sigma, degree方差分析内核“ anovadot ”的度数

如果您想更好地理解原因,请在第9页的pdf中检查内核功能。

但是,对于简单的LINEAR内核而言,事情有些棘手,即kernel = vanilladot 没有要指定的超参数。 我尝试了kpar = NA,但是没有用。 我想出了一种使用多项式进行特殊调整来获得LINEAR内核结果的方法:

test <- kernlab::gausspr(Species~.,data=iris,type="classification",
                     kernel="polydot", kpar=list(degree =1, scale =1, offset =0))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM