LIBSVM 对未训练类的样本给出相同的预测。为啥?

Posted

技术标签:

【中文标题】LIBSVM 对未训练类的样本给出相同的预测。为啥?【英文标题】:LIBSVM gives same prediction for samples of untrained class. Why?LIBSVM 对未训练类的样本给出相同的预测。为什么? 【发布时间】:2016-07-23 17:32:21 【问题描述】:

我已经在两个类上训练了 SVM。一是真实用户样本。第二个是与真实用户具有相同样本量的许多负样本。我已经在用于培训的课堂上测试了这个系统。结果很有趣,我无法解释;我不知道这是预期的,SVM 问题还是其他问题。

(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)
(0:0.9104172110162648)(1:0.08958278898373527)(Actual:1.0 Prediction:0.0)

上面是我从未经训练和未见过的类的不同样本中获得的那种输出示例。每个样本都完全相同。我希望它们更接近 1.0 级,并且我还希望至少概率会发生变化!

【问题讨论】:

【参考方案1】:

您是否对模型的性能进行了交叉验证?您是否对超参数进行了网格搜索?

您的输出可能很容易解释为机器学习执行不力。如果您使用的是 RBF 内核,并且它的宽度太小,那么有助于分类决策的唯一因素就是偏差项。就其性质而言,偏置项对于所有输入都是相同的。因此,对于所有看不见的测试数据,您将获得完全相同(或几乎)的所有相同输出(除非它非常接近训练数据)。

如果不了解有关您的数据的更多详细信息以及您实际做了什么,我无法确定这是发生了什么。但这似乎是一种可能的情况。

【讨论】:

谢谢,我会调查的。

以上是关于LIBSVM 对未训练类的样本给出相同的预测。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

LIBSVM 是不是适用于许多类别和样本?

LIBSVM:未知的预测标签给出的准确度为 0%

libsvm / e1071:获取二进制类的非二进制预测值?

Matlab 中的 Libsvm 回归预测测试集实例的相同值

使用 libsvm 提高标准化准确性的建议

为啥在 matlab 中使用带有 libsvm 的预计算内核