在MATLAB中使用多变量数据训练LIBSVM

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具有相同的值。


回答:

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

LIBSVM如何执行多变量回归是我的一个普遍性问题?

LibSVM只是一个库,特别是它实现了用于回归任务的支持向量回归模型。简而言之,在线性情况下,SVR试图找到一个超平面,使得你的数据点位于其周围的某个范围内(这与经典SVM试图以尽可能大的范围分离数据的双重方法相当)。

source:kernelsvm.tripod.com/

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

enter image description here

关于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]区间的值,否则某些特征可能因为它们的规模而变得比其他特征更重要。

现在,如果你想为每个链接创建一个单独的模型,并遵循上述建议,你最终会得到1个输入变量(var2)和1个输出变量var4,所以我不建议这样做。总的来说,你似乎有非常有限的特征集,收集更多信息量的特征将是有价值的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注