假设我们有5个不同类别的样本,如A、B、C、D和E。在我的例子中,要使用"one vs rest分类“方法,就必须有5个1-VS-rest SVM分类器,如下所示:
SVM1: a和rest
SVM2: B对rest
SVM3: C对rest
SVM4: d与rest
SVM5: e对rest
用训练样本训练这5个分类器,每个分类器使用不同的核。新输入的样本被传递给每一个被分类的5个分类器。然后考虑一个实际属于"A“类的新样本被SVM1分类为"A”的备忘录(这是正确的),同时又被SVM4分类为"D“的成员(这是不正确的),问题是如何找出这两种支持向量机中哪一种预测是正确的。我知道必须有某种标准来比较这两种预测的可信度。我正在使用opencv 2.4.8,通过下面的语法,它可以预测新示例所属的类的标签:
float Response = SVM.predict(new_test_sample,false);我还知道有一个选项可以通过以下语法了解新样本离SVM决策边界有多远:
float Distanc = SVM.predict(test, true);由于我对每个SVM分类器使用不同的核和不同的参数(因此我知道我不能简单地比较到决策边距的距离来比较预测的可信度……),我的问题是如何比较分类器的预测信任,从而最终知道新样本属于哪一类?感谢所有人
发布于 2016-05-03 00:16:17
在这种情况下,您通常做的是使用Platt的缩放。有效地,它仅仅适合逻辑回归在您的决策功能之上,以“校准”您的估计,所以它们是可比的。作为一种效果,您可以得到每个分类器的概率估计P(y=x),它现在可以跨多个模型进行比较。
一般来说,OpenCV是分类器的一个很坏的来源,我会考虑使用实际的ML包,它允许您访问这些标准工具。特别是libsvm,OpenCV对它进行了包装,它具有以下特性。
https://stackoverflow.com/questions/36987065
复制相似问题