r - 访问 R 中 kernlab::gausspr 函数中的估计变量

标签 r kernlab

我正在查看用于高斯过程回归的 kernlab 包中的 R 函数 gausspr。该过程由核函数的超参数和数据中的噪声定义。我在文档中看到我可以指定

var: the initial noise variance, (only for regression) (default : 0.001)

但我不知道如何在回归运行后访问估计值。例如,假设我有一些观察点,并且想要预测 X 给出的位置处的 y 值:

obs <- data.frame(x = c(-4, -3, -1,  0,  2),
                  y = c(-2,  0,  1,  2, -1))
X <- seq(-5,5,len=50)

我可以使用 kernlab::gausspr 来做到这一点:

gp <- gausspr(obs$x, obs$y, kernel="rbfdot", scaled=FALSE, var=.09)
Ef <- predict(gp, X)

我可以获得内核超参数的估计值:

gp@kernelf@kpar

但我不知道如何返回噪声参数 var 的估计值?

最佳答案

我可能忽略了一些东西,但我不认为初始噪声方差var“适合”任何东西;我不认为它是一个参数(尽管我同意使用“初始”这个词会让你有不同的想法)。

噪声方差只是添加到训练点的相关矩阵的对角线上,如 this page 中所述。关于其他一些软件。查看函数定义,看起来这正是它在 kernlab 中所做的事情:

# The only relevant line where 'var' is used
alpha(ret) <- solve(K + diag(rep(var, length = m))) %*% y

如果您想通过噪声方差获得误差(或任何拟合度量),您可以执行以下操作:

error.fun<-function(x) error(gausspr(obs$x, obs$y, kernel="rbfdot", scaled=FALSE, var=x))
noises<-seq(0.1,1,by=0.1)
y<-sapply(noises,error.fun)
plot(noises,y,type='l')

据我所知,内置交叉验证无论如何都不“适合”var。交叉验证中唯一相关的行在这里:

cret <- gausspr(x[cind, ], y[cind], type = type(ret), 
                scaled = FALSE, kernel = kernel, var = var, 
                tol = tol, cross = 0, fit = FALSE)

您可以看到 var 只是放入,没有任何更改。

关于r - 访问 R 中 kernlab::gausspr 函数中的估计变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13424882/

相关文章:

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

r - 在 R 中运行 kernlab 包的 ksvm 时出现此错误意味着什么

r - KSVM(在 r 中)给出 - 索引错误[[j]] : subscript out of bounds

r - 从 sys.time 中获取数字

正则表达式 - 替换匹配子字符串中的字符

r - 在数据框中按组选择第一行和最后一行

r - 在Shiny R中,有没有办法在observeEvent之后立即运行observeEvent而没有延迟(renderUI的问题)?

sql - 如何在 R 中对 data.table 进行基本的左外连接?

r - 从 kernlab 调整 ksvm

r - 参数 C. epsilon 作为 R 中 kernlab 的 ksvm 中的向量