SVM 模型不支持概率估计?

Posted

技术标签:

【中文标题】SVM 模型不支持概率估计?【英文标题】:SVM Model does not support probability estimation? 【发布时间】:2014-03-28 01:53:04 【问题描述】:

我正在使用支持向量机 (SVM) 执行一些分类任务。 我正在使用 libSVM(支持 Matlab)来预测概率估计矩阵。但是,libSVM 显示消息: 模型不支持概率估计 以下是我的示例代码; (train_label 包含训练数据的标签,test_label 包含测试数据的标签)

    model = svmtrain(train_label, train_data, '-t 2 -g .01 -c 0.7 -b 1);
    [y,accuracy,prob_estimates]=svmpredict(test_label,test_data,model,'-b 1');

谁能告诉我我的做法是否有问题?任何帮助/建议将不胜感激。

【问题讨论】:

【参考方案1】:

不知道Matlab的实现,但通常你必须设置这个option:

-b probability_estimates:是否训练SVC或SVR模型进行概率估计,0或1(默认0)

【讨论】:

感谢您的回复。但我已经为训练和预测设置了选项“-b 1”。 @user35919 抱歉,忽略了这一点。您是否使用 -t 选项尝试过不同的 SVM 类型? (我只是猜测,不确定这是否会有所帮助)。 是的,我确实尝试过使用“-t 1”和“-t 2”。没有区别。 @user35919 再次道歉,-t 指定了内核类型,我想建议尝试不同的 SVM 类型,通过-s [0... 4] 指定。这是我最后的猜测;)【参考方案2】:

我以同样的方式使用 libsvm 没有任何问题。

在您的代码中,以下行中仅缺少一个 '

model = svmtrain(train_label, train_data, '-t 2 -g .01 -c 0.7 -b 1);

应该是

model = svmtrain(train_label, train_data, '-t 2 -g .01 -c 0.7 -b 1');

【讨论】:

感谢@Zahid Mahmood。【参考方案3】:

我遇到了同样的问题,模型中没有ProbAProbB。 在它是这样并给出错误之前:

linear_model = svmtrain(trainClass, trainData, ['-t 0', cmd]);

然后我把它改成了这个,错误消失了:) - 删除了 cmd 并输入了准确的值

linear_model = svmtrain(trainClass, trainData, ['-t 0 -c 1 -g 0.125 -b 1']); 

如果仍然出错,请尝试更改 cg 参数。

希望这会有所帮助。

【讨论】:

【参考方案4】:

这是因为您的模型不支持概率估计。

您应该在训练和测试过程中都使用“-b 1”选项。

另请参阅:https://***.com/a/43509667/7893127

【讨论】:

【参考方案5】:

您可以只使用默认参数训练模型。 在训练和测试程序时尝试使用“-b 1”。

【讨论】:

这并没有提供问题的答案。一旦你有足够的reputation,你就可以在任何帖子上comment。还要检查这个what can I do instead。【参考方案6】:

C:\setup\python36\Lib\site-packages\svm.pyself.probability 的默认值为0。可以设置1

【讨论】:

以上是关于SVM 模型不支持概率估计?的主要内容,如果未能解决你的问题,请参考以下文章

SVM 模型将概率分数大于 0.1(默认阈值 0.5)的实例预测为正例

机器学习中的概率模型和概率密度估计方法及VAE生成式模型详解之四(第2章)

具有逻辑链接功能的 SVM 回归?

支持向量机(SVM)

SVM支持向量机

支持向量机