0

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

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

所以为了找出原因,我将训练示例设置为输入。我看到的是负面例子比正面例子的决策值略高。这真的很奇怪,对吧?我检查了输入以确保我没有错误地标记示例。我已经对直方图向量进行了标准化。

有没有人遇到过这种情况?

这是训练模型的参数。我对bias、regularizer和dualityGap等参数感到奇怪,因为它们太小了,很容易失去准确性。

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
4

1 回答 1

0

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

我已经检查了 LIBLINEAR 的常见问题解答,它似乎也发生在 LIBLINEAR 中(我对 LIBLINEAR 不太熟悉): http://www.csie.ntu.edu.tw/~cjlin/liblinear/FAQ。 html(反向搜索)

于 2014-01-24T01:14:18.707 回答