我希望在R中实现核岭回归。我的问题是我不知道如何生成核值,并且不知道如何将它们用于岭回归。我想使用以下核函数:
kernel.eval <- function(x1,x2,ker) { k=0 if (kertype == 'RBF') {
# RBF kernel
k=exp(-sum((x1-x2)*(x1-x2)/(2*kerparam^2))) } else { # polynomial kernel k=(1+sum(x1*x2))^ker$param } return(k) }
此外,我知道岭回归的公式为:
myridge.fit <- function(X,y,lambda) { w= solve((t(X) %% X) +(lambdadiag(dim(X)[2])), (t(X) %*% y)) return(w) }
示例训练数据:
[,1] [,2]
[1,] -1.3981847 -1.3358413
[2,] 0.2698321 1.0661275
[3,] 0.3429286 0.8805642
[4,] 0.5210577 1.1228635
[5,] 1.5755659 0.2230754
[6,] -1.2167197 -0.6700215
测试数据示例:(我不确定此时是否需要这些)
[,1] [,2]
[1,] -2.05 -2.050
[2,] -2.05 -2.009
[3,] -2.05 -1.968
[4,] -2.05 -1.927
[5,] -2.05 -1.886
[6,] -2.05 -1.845
有人能帮我完成第一步吗?我需要为RBF核和多项式核执行岭回归。
M.inv <- solve(M)
,改为计算y.hat <- t(Labels) %*% solve(M, rbind(0,k))
可能会更加数值稳定。请参阅此文:http://civilstat.com/2015/07/dont-invert-that-matrix-why-and-how/。 - adviksh