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 模型中的支持向量是如何排列的?的主要内容,如果未能解决你的问题,请参考以下文章