Libsvm 模型中的支持向量是如何排列的?

Posted

技术标签:

【中文标题】Libsvm 模型中的支持向量是如何排列的?【英文标题】:How is support vectors arranged in Libsvm model? 【发布时间】:2016-06-05 11:52:49 【问题描述】:

我想使用从 Libsvm 模型派生的参数来预测新数据(不是在 matlab 中)。请问model中的支持向量(nSV, sv_coef, SVs)是否按照模型中Label的顺序排列?下面是使用线性核从fisheriris 导出的模型,Label 是 [3;2;1] 那么这是否意味着 nSV、sv_coef、SV 的顺序是 [class3;class2;class1]?

【问题讨论】:

【参考方案1】:

确实如此。我一直在做类似的实验,我的结果是

看起来前三个 SV 来自第 1 类。从我得到的 SV 索引字段中

通过查看标签向量中的这些索引,我得到了:

第 24、第 25 和第 42 个模式确实有标签 1。

第 4 个 SV 索引是 53,它具有标签 2...等等。

【讨论】:

谢谢!还有...如果我做二进制分类,例如nSV=[25;24],Label=[2;1],sv_coef应该被分成2部分(前25个实例代表class2 vs class1的coef,后24个实例代表 class1 与 class2 的系数)。在计算class2 vs class1的决策值时,我应该使用zsvs'*coef-rho(z是新的数据样本),但是当计算class1 vs class2的决策值(即使用sv_coef的后半部分)时,应该我使用 zsvs'coef-rho 或 zsvs'*coef+rho(z 是新数据样本)...? 我可以对你说实话吗?在 LibSVM 中不需要这样的计算。通过在svmtrain()svmpredict() 中使用命令-b 1,LibSVM 会自动为您评估决策值。特别是,决策值将是svmpredict() 的第三个输出,您可以将其称为[PredictedLabels, Accuracy, DecisionValues]=svmpredict(ValidationLabels,ValidationSet,SVMmodel,'-b 1') 是的,是的,我知道 :D 但我需要在 matlab 之外做预测部分......这意味着我需要使用模型给我的参数在其他地方重建方程(在 java例如) 在这里看看这个答案:stats.stackexchange.com/questions/126379/…

以上是关于Libsvm 模型中的支持向量是如何排列的?的主要内容,如果未能解决你的问题,请参考以下文章

libsvm 不提供支持向量/没有支持向量

机器学习 - 支持向量机

如何在 weka 模型中找到支持向量

SVM 模型不支持概率估计?

将 LibSVM 输出转换为浮点向量

支持向量的数量 libsvm