SVM的奇怪现象:负面例子得分更高

时间:2014-01-23 13:51:53

标签: machine-learning svm vlfeat regularized

我使用VL-Feat和LIBLINEAR来处理2类别分类。训练集的#( - )/#(+)为35.01,每个特征向量的维数为3.6e5。我有大约15000个例子。

我将正面示例的权重设置为35.01,将负面示例设置为默认值为1。但我得到的是测试数据集的性能极差。

因此,为了找出原因,我将训练样例设置为输入。我看到的是负面例子得到的判断值略高于积极的例子。这真的很奇怪,对吗?我检查了输入,以确保我没有错误地标记这些示例。我已经对直方图向量进行了归一化。

以前有人遇到过这种情况吗?

以下是训练模型的参数。我对偏见,正则化和对偶性等参数感到奇怪,因为它们很小,可能很容易失去准确性。

model.info = 
            solver: 'sdca'
            lambda: 0.0100
    biasMultiplier: 1
              bias: -1.6573e-14
         objective: 1.9439
       regularizer: 6.1651e-04
              loss: 1.9432
     dualObjective: 1.9439
          dualLoss: 1.9445
        dualityGap: -2.6645e-15
         iteration: 43868
             epoch: 2
       elapsedTime: 228.9374

1 个答案:

答案 0 :(得分:0)

可能发生的一件事是,LIBSVM将数据集中的第一个示例作为正类,将负类作为数据集中第一个示例的示例。所以可能是因为你的负数比正数多35倍,你的第一个例子是负数而你的类正在被反转。怎么检查这个?确保训练集中的第一个数据点属于正类。

我已经查看了LIBLINEAR的常见问题解答,它似乎也发生在LIBLINEAR中(我对LIBLINEAR并不熟悉): http://www.csie.ntu.edu.tw/~cjlin/liblinear/FAQ.html(寻找逆转)