1

LIBSVM 的工作原理是如何执行多元回归是我的普遍问题?详细地说,我有一定数量的链接的一些数据。(示例 3 链接)。每个链接都有 3 个因变量,当在模型中使用时会给出输出 Y。我在某个时间间隔内收集了这些链接上的数据。

LinkId | var1 |  var2  | var3 | var4(OUTPUT)
   1   |  10  |  12.1  |  2.2 |  3
   2   |  11  |  11.2  |  2.3 |  3.1
   3   |  12  |  12.4  |  4.1 |  1
   1   |  13  |  11.8  |  2.2 |  4
   2   |  14  |  12.7  |  2.3 |  2
   3   |  15  |  10.7  |  4.1 |  6
   1   |  16  |  8.6   |  2.2 |  6.6
   2   |  17  |  14.2  |  2.3 |  4
   3   |  18  |  9.8   |  4.1 |  5

我需要执行预测以找到

(2,19,10.2,2.3). 

如何使用上述数据在 Matlab 中使用 LIBSVM 进行训练?我可以将整个数据训练为 svmtrain 的输入以创建模型,还是需要单独训练每个链接并使用模型创建进行预测?它有什么不同吗?注意:请注意每个具有相同 ID 的链接具有相同的值。

4

1 回答 1

2

这实际上不是一个matlablibsvm问题,而是一个通用的svm相关问题。

LIBSVM 的工作原理是如何执行多元回归是我的普遍问题?

LibSVM 只是一个库,它特别为回归任务实现了支持向量回归模型。简而言之,在线性情况下,SVR 试图找到一个超平面,您的数据点在它周围的某个边距中放置(这是经典 SVM 的双重方法,它试图以尽可能大的边距分离数据) .

来源:kernelsvm.tripod.com/

在非线性情况下,使用内核技巧(与 SVM 中的方式相同),因此它仍在寻找超平面,但在特定内核诱导的特征空间中,这导致输入空间中的非线性回归.

在此处输入图像描述

可以在这里找到对 SVR 的相当好的介绍:http: //alex.smola.org/papers/2003/SmoSch03b.pdf

如何使用上述数据在 Matlab 中使用 LIBSVM 进行训练?我可以将整个数据训练为 svmtrain 的输入以创建模型,还是需要单独训练每个链接并使用模型创建进行预测?它有什么不同吗?注意:请注意每个具有相同 ID 的链接具有相同的值。

SVR您可以使用整个数据进行训练(因为这是一个回归问题),但是:

  • 似乎var3LinkId是相同的变量 ( 1->2.2, 2->2.3, 3->4.1),如果是这种情况,您应该删除该LinkId列,
  • var1唯一升序整数的值吗?如果是这样,这些也可能是无用的功能(因为它们似乎没有携带任何信息,它们似乎是您的id号码),
  • 您应该在应用 SVM 之前预处理您的数据,例如。每列都包含来自[0,1]区间的值,否则某些特征可能会因为它们的规模而变得比其他特征更重要。

现在,如果你想为每个链接创建一个单独的模型,并按照上面的线索,你最终会得到1input variable ( var2) 和1output variable var4,所以我不推荐这样的步骤。一般来说,您的特征集似乎非常有限,收集更多信息特征将是有价值的。

于 2013-08-15T05:34:26.543 回答