【发布时间】:2014-07-24 21:45:23
【问题描述】:
我在 R 中使用 eps 回归和 e1017 包中的径向内核训练了一个 svm 模型。使用函数 predict() 时,我可以对新的观察结果进行预测,但我有兴趣在 R 环境之外重现它。为此,我需要知道 R 如何预测新的观察结果。
有一个示例说明如何在使用 svm 进行分类 (here) 时这样做,但由于预测函数具有不同的公式,因此在进行回归时它不起作用: 在分类的情况下,预测函数由
给出$\hat{f}(x)= \sum^N_{i=1} \hat{\alpha}_i y_i K(x,x_i)+\hat{\beta}_0 $,
其中 $y_i$ 已包含在 m$coefs 中
而在回归的情况下,预测函数由
$\hat{f}(x)= \sum^N_{i=1} \hat{\alpha}_i K(x,x_i) $
这两个公式均根据 Hastie, Tibshirani, Friedman (2001)。
我还阅读了here 说 \hat{\alpha}_i 是支持向量,因此我尝试在我的预测函数中使用它们,而不是在分类案例中使用的系数。
举个例子:
library(e1071)
x <- seq(0.1, 5, by = 0.05)
y <- log(x) + rnorm(x, sd = 0.2)
m <- svm(y~x)
new <- predict(m, x)
k<-function(x,x1,gamma){
return(exp(-gamma*sum((x-x1)^2))) }
f<-function(x,m){
return(t(m$SV) %*% as.matrix(apply(m$SV,1,k,x,m$gamma))) }
my.predict<-function(m,x){
apply(x,1,f,m)}
x<-as.matrix(x)
my.predict(m,x)[1:10]
new[1:10]
有人可以解释哪里出了问题和/或推荐有关该主题的文献吗?
谢谢,
玛塔
【问题讨论】:
标签: r regression svm predict