对某些实例进行加权将导致精度的巨大变化



我有一个数据集,它包含了很多0类的实例和一些1类的极少数实例,这是一个问题,因为0类的例子将主导1类的实例,而1类的精度非常低。我正在使用weka java API,在API中,我发现了一个为实例加权的选项,因此我决定为测试集中的类为1的实例加权,如下所示:

breader = new BufferedReader(new FileReader("weka/train.txt"));
    Instances train = new Instances(breader);
    train.setClassIndex(train.numAttributes() - 1);
    Instances testset= new Instances(new BufferedReader(new FileReader("weka/test.txt")));
    unlabeled.setClassIndex(testset.numAttributes() - 1);
    for (int i = 0; i < testset.numInstances(); i++) {
        if(testset.instance(i).classValue()==1){
            testset.instance(i).setWeight(30);
        }
    }

这样做之后,精度提高了很多。现在我想知道我所做的是否可以接受,如果可以的话,怎么解释呢?

您必须考虑到,添加到实例中的权重会影响预测模型。这种情况的预测模型也将很重。你可能会因为奇怪的训练而陷入过度适应。存在过拟合的可能性是因为用于训练模型的标准可能与用于判断模型有效性的标准不同。然而,如果你不能获得更多的训练数据,这是一个你可以承担的风险。毕竟它对你有效。

最新更新