【发布时间】:2017-06-12 18:58:47
【问题描述】:
我是 SVM 的新手。我正在使用 jlibsvm 来解决 多类分类 问题。基本上,我正在做一个句子分类问题。有 3 个类。我的理解是我在做一对一的分类。我有一个相对较小的火车。一共75个句子,其中每个类25个句子。
我正在制作 3 个 SVM(所以 3 个不同的模型),在训练时,在 SVM_A 中,属于 CLASS A 的句子将有一个真实的标签,即 1 和其他句子将有一个 -1 标签。对 SVM_B 和 SVM_C 进行了相应的处理。
在测试时,为了获得句子的真实标签,我将句子赋予 3 个模型,并采用这 3 个模型返回的预测概率。返回最高的将是句子所属的类。
这就是我正在做的事情。但是对于所有模型的测试集中的每个句子,我得到了相同的预测概率。
A predicted:0.012820514
B predicted:0.012820514
C predicted:0.012820514
这些值在训练集中的所有句子中重复。
以下是我设置训练参数的方式:
C_SVC svm = new C_SVC();
MutableBinaryClassificationProblemImpl problem;
ImmutableSvmParameterGrid.Builder builder = ImmutableSvmParameterGrid.builder();
// create training parameters ------------
HashSet<Float> cSet;
HashSet<LinearKernel> kernelSet;
cSet = new HashSet<Float>();
cSet.add(1.0f);
kernelSet = new HashSet<LinearKernel>();
kernelSet.add(new LinearKernel());
// configure finetuning parameters
builder.eps = 0.001f; // epsilon
builder.Cset = cSet; // C values used
builder.kernelSet = kernelSet; //Kernel used
builder.probability=true; // To get the prediction probability
ImmutableSvmParameter params = builder.build();
我做错了什么?
除此之外还有其他更好的多类分类方法吗?
【问题讨论】:
标签: machine-learning svm libsvm