libSVM有/无概率的不同结果

时间:2015-04-17 19:56:37

标签: libsvm

我想知道为什么如果我使用或不使用概率预测libSVM会给出不同的准确度结果,我在this page找到了一个常见问题解答

Q: Why using svm-predict -b 0 and -b 1 gives different accuracy values?

Let's just consider two-class classification here. After
probability information is obtained in training, we do not have
prob > = 0.5 if and only if decision value >= 0.
So predictions may be different with -b 0 and 1. 

我阅读并重读了十几次,但仍然不理解。有人能更清楚地解释一下吗?

2 个答案:

答案 0 :(得分:3)

“正常”SVM模型计算每个给定数据点的决策值,其基本上是所述点与分离超平面的距离。超平面一侧的所有内容(dec_value> = 0)预测为A类,另一侧的所有内容(dec_value< 0)预测为B类。

如果您现在计算类概率,可能会有一个点的决策值为(例如)0.1,这将使其成为A类。但A类的概率计算可能为45%,B类的概率计算为55% ,因此算法现在将其预测为B.

计算所述类概率的可能算法在their paper,第8节中描述。​​

有问题的句子

  

在训练中获得概率信息后,我们没有   概述>当且仅当判定值> = 0时,= 0.5。   因此,预测可能与-b 0和1不同。

基本上说“决定值> = 0并不意味着probA> probB,反之亦然。

答案 1 :(得分:0)

我认为这是因为概率是使用交叉验证(at least in python计算的,但因为它使用了超出场景的libSvm它可能会回答你的问题)。

此外,在文档中,他们指出这种交叉验证操作可能会产生与分数不一致的概率估计。

  

毋庸置疑,Platt缩放中涉及的交叉验证对于大型数据集来说是一项昂贵的操作。此外,概率估计可能与分数不一致,因为分数的“argmax”可能不是概率的argmax