machine-learning - 如何获得多类分类中的jlibsvm预测概率

标签 machine-learning svm libsvm

我是 SVM 新手。我正在使用jlibsvm来解决多类分类问题。基本上,我正在做一个句子分类问题。有 3 个类别。我的理解是我正在做一对一分类。我有一个相对较小的火车组。共75句,其中每类25句。

我正在制作 3 个 SVM(即 3 个不同的模型),其中,在训练时,在 SVM_A 中,属于 A 类的句子将有一个真实的标签,即 1> 和其他句子将有一个 -1 标签。对 SVM_BSVM_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();

我做错了什么?

除此之外还有其他更好的方法来进行多类分类吗?

最佳答案

您将获得相同的输出,因为您生成了相同的模型三次。

这样做的原因是 jlibsvm 能够根据提供的数据执行开箱即用的多类分类(LIBSVM本身也支持这一点)。如果它检测到给定数据中提供了两个以上的类标签,它会自动执行多类分类。因此无需手动进行 1vsN 方法。只需为每个类别提供带有类标签的数据即可。

但是,jlibsvm仍处于 beta 状态,并且依赖于相当旧的 LIBSVM 版本(2.88)。很多有changed 。对于更直观的 Java 绑定(bind)(与默认的 LIBSVM 版本相比),您可以查看 zlibsvm ,可通过 Maven Central 获取并基于最新的 LIBSVM版本。

关于machine-learning - 如何获得多类分类中的jlibsvm预测概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888141/

相关文章:

python - 使用 tf.train.MonitoredTrainingSession 时如何获取全局步骤

machine-learning - LibSvm 使用 JAVA api 添加功能

windows - 帮助处理 LibSVM 输入数据

python - 在 sklearn 中将 Pipeline 与自定义类一起使用

machine-learning - 朴素贝叶斯概率估计中的 m 应该被视为什么

python - sklearn DictVectorizer(sparse=False) 具有不同的默认值,估算一个常数

matlab - 在 Matlab 中使用 fitcsvm() 函数存储 ClassificationSVM 的数组/矩阵给我一个错误,我该如何解决它?

machine-learning - SVM 与 MLP(神经网络): compared by performance and prediction accuracy

java - 未找到文件异常

machine-learning - 如何加快训练过程