R中的支持向量机用于回归

4

我有4个数据维度。在R中,我使用plot3d,其中第4个维度是颜色。现在,我想使用SVM找到最佳回归线,以给我最佳的相关性。基本上,一个最适合的超平面取决于颜色维度。我该怎么做?


你试图回归什么?你没有给出一个因变量。你清楚支持向量机的含义吗? - Iterator
修改后:取决于颜色维度(第四个维度) - CodeGuy
这很有帮助。顺便说一下,通常的术语是颜色变量取决于其他变量。更好的术语是其他变量是预测变量,颜色变量是响应变量。 - Iterator
我已经弄清楚了如何获取我的SVM拟合对象。现在我只是困惑如何在3D图中绘制那个超平面。我该如何绘制一个拟合对象? - CodeGuy
我离开了电脑,但可以查看“classifly”或“rggobi”作为示例。 - Iterator
2个回答

10

这是基本思路(当然,具体公式将因您的变量名称和依赖项而异):

library(e1071)

data = data.frame(matrix(rnorm(100*4), nrow=100))

fit = svm(X1 ~ ., data=data)

然后您可以在拟合的对象上使用常规的summaryplotpredict等函数。请注意,对于支持向量机(SVM),通常需要调整超参数以获得最佳结果。您可以使用tune包装器进行此操作。另外,请查看我认为非常好的caret包。


你能举个例子说明如何使用tune函数吗?另外,你会建议我如何使用caret吗? - CodeGuy
@CodeGuy 特别是在这个模型中,它也是因变量。你有一个因变量吗? - Iterator
是的,我希望回归取决于颜色变量。好的,那么我可以使用它。现在我该如何从拟合中获取数据,以便我可以叠加超平面?我打印了拟合结果,看到了成本和伽马等内容。但是我该如何获得线的方程,以便我可以绘制3D超平面? - CodeGuy
1
请看我帮助过的另一个问题和答案:https://dev59.com/2ms05IYBdhLWcg3wLfAj - John Colby
这似乎是用于数据分割,而不是回归。您能否举个例子,说明如何绘制超平面,给出上述代码的拟合结果? - CodeGuy
显示剩余5条评论

5

请查看e1071包中的svm函数。您还可以考虑使用kernelab、klaR或svmpath包。

编辑:@ CodeGuy,John已经为您提供了一个示例。我假设您的4个维度是用于对数据进行分类的特征,并且您还有另一个变量是真实类别。

y  <- gl(4, 5)
x1 <- c(0,1,2,3)[y]
x2 <- c(0,5,10,15)[y]
x3 <- c(1,3,5,7)[y]
x4 <- c(0,0,3,3)[y]

d <- data.frame(y,x1,x2,x3,x4)

library(e1071)
svm01 <- svm(y ~ x1 + x2 + x3 + x4, data=d)
ftable(predict(svm01), y)  # Tells you how your svm performance

我已经看过了,但是我无法弄清楚。你能给我一个示例代码吗?我的数据有4个维度。 - CodeGuy
你说的另一个变量是什么意思?想象一下带有数据的三维图。然后有第四个维度,由数据点的颜色给出。我想在那个三维图中找到依赖于第四个维度(颜色)的最佳回归超平面。你能更新代码以反映这一点吗?我该如何得到超平面的方程,以便实际绘制它并查看其外观? - CodeGuy
你发布的代码中有一个错误。你试过运行它了吗? - CodeGuy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接