一个vs所有SVM引入了类不平衡

时间:2013-11-18 14:23:54

标签: machine-learning computer-vision svm libsvm

对于一对一的方法,它取决于等于n类的二进制分类器。它假定一个类被标记为1,而其余类被标记为0:

model = cell(numLabels,1);
for k=1:numLabels
    model{k} = svmtrain(double(trainLabel==k), trainData, '-c 1 -g 0.2 -b 1');
end

适用于大量类和大量图像(每类5000个)。这意味着在上面的代码中,一个类将与数据集的其余部分(n-1)* 5000相比为5000。这种不平衡是否可以接受?我的意思是一对一会更好地避免失衡或是否依赖于分类问题?这种情况是否可以接受?如何知道这是否会导致我出现问题?

2 个答案:

答案 0 :(得分:1)

是的,一般而言,在平衡方面,一对一是更好的解决方案,但它需要更高的计算和内存成本(因为您需要n ^ 2个分类器)。因此,这通常是训练1对所有人的练习。为了避免这个问题,你可以使用“类权重”方案,这可以确保较小的类获得更多学习者的注意力(错误地分类表示较差的类的成本更高)。

答案 1 :(得分:0)

这种不平衡问题的直观思考是:少数样本在训练后可能有丢失TP的风险。然而,一对一方法包括一个总和池程序,在所有那些“TP缺失”分类器中选择最大分类器。因此,轻微的不平衡不会造成巨大的问题。