我正在试验高斯进程模型,特别是在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))
知道这是怎么回事吗?非常感谢!
发布于 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,但它不起作用。我想出了一种方法,通过特殊的调整,使用多项式来获得线性核的结果:
test <- kernlab::gausspr(Species~.,data=iris,type="classification",
kernel="polydot", kpar=list(degree =1, scale =1, offset =0))
https://stackoverflow.com/questions/47278677
复制相似问题