You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

采用One-Vs-One策略的多类SVC投票平局时如何预测?

关于One-Vs-One策略SVC分类器平局处理的疑问

假设我有一组带有4个标签[A, B, C, D]的多类数据集,希望使用One-Vs-One(OVO)策略的SVC分类器进行预测。我知道训练完成后会得到6个OVO模型,可通过svc.decision_function()查看决策函数输出集合,这些函数的组织形式如下:

[AB, AC, AD, BC, BD, CD]

其中第一个字母为正例,第二个字母为负例。据我理解,预测过程会将这些决策函数分数转化为一组“投票”,最终预测结果为投票的众数。例如:

[AB, AC, AD, BC, BD, CD] # 模型顺序
[1.4, 0.2, 0.6, 3, -2.2, -0.4] # 决策函数输出
[A, A, A, B, D, D] # 各模型的预测结果

众数为A,因此svc.predict()函数输出A。

我的问题是,如果决策函数输出变为如下形式(仅翻转第二个条目的符号):

[AB, AC, AD, BC, BD, CD] # 模型顺序
[1.4, -0.2, 0.5, 3, -2.2, -0.4] # 决策函数输出
[A, C, A, B, D, D] # 各模型的预测结果

此时A和D均为众数(各2票),那么SVC会如何打破平局并做出预测?我推测会对每个标签对应的决策函数输出值(结合标签方向)求和,因为距离决策面的距离可体现模型对该标签预测的置信度,按此计算本例中结果为D。但我也考虑过直接使用“AD”模型的特定分数,不过不确定SVC实际采用哪种方式。


解答

在Scikit-learn的sklearn.svm.SVC实现中,OVO策略下的平局处理不是单纯依赖投票数,而是通过计算每个类别的总置信度得分来决定最终预测结果:

  1. 对每个OVO模型的决策函数得分,根据模型的正负例方向调整符号:

    • 若模型是XY(X为正例,Y为负例),得分大于0时,X获得该得分,Y获得负的该得分;
    • 得分小于0时,Y获得该得分的绝对值(即负的得分值),X获得负的该得分绝对值。
  2. 将所有涉及某一类别的调整后得分相加,得到该类别的总置信度得分。

  3. 最终预测总得分最高的类别。

针对你给出的平局案例,我们可以逐一计算每个类别的总得分:

  • AB模型(得分1.4):A得+1.4,B得-1.4
  • AC模型(得分-0.2):A得-0.2,C得+0.2
  • AD模型(得分0.5):A得+0.5,D得-0.5
  • BC模型(得分3):B得+3,C得-3
  • BD模型(得分-2.2):B得-2.2,D得+2.2
  • CD模型(得分-0.4):C得-0.4,D得+0.4

各类别总得分:

  • A:1.4 - 0.2 + 0.5 = 1.7
  • B:-1.4 + 3 - 2.2 = -0.6
  • C:0.2 - 3 - 0.4 = -3.2
  • D:-0.5 + 2.2 + 0.4 = 2.1

D的总得分最高,因此svc.predict()会输出D,和你的推测一致。

需要注意的是,这种方式不是单独依赖某一对模型(比如AD)的得分,而是综合了所有涉及该类别的模型的置信度,能更全面地反映模型对该类别的偏好程度。


内容的提问来源于stack exchange,提问作者mhershey3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:35:23