[英]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.