我使用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
答案 0 :(得分:0)
可能发生的一件事是,LIBSVM将数据集中的第一个示例作为正类,将负类作为数据集中第一个示例的示例。所以可能是因为你的负数比正数多35倍,你的第一个例子是负数而你的类正在被反转。怎么检查这个?确保训练集中的第一个数据点属于正类。
我已经查看了LIBLINEAR的常见问题解答,它似乎也发生在LIBLINEAR中(我对LIBLINEAR并不熟悉): http://www.csie.ntu.edu.tw/~cjlin/liblinear/FAQ.html(寻找逆转)