1

在 Java 版本的 LIBLINEAR 中有一个名为“SolverType”的类,可以在其中选择要优化函数的损失函数的类型。例如“SolverType.L2LOSS_SVM_DUAL”。有没有办法定义用户定义的损失函数?

4

2 回答 2

0

简短的回答是否定的。

“损失函数”定义了优化问题,实际上这个参数改变(特别是)这个模型

  • 线性回归
  • 逻辑回归
  • 支持向量机

虽然前两个非常相似,但第三个需要完全不同的机器来解决它,而且方法要复杂得多。特别是可以定义非常任意的函数,这些函数属于“线性模型”类别,这些函数是无法解决的(可以通过非常复杂的技术解决)。

另一方面,如果功能很简单,即。它是一个可微函数,没有任何界限(对整个参数空间进行优化)然后(假设您知道导数的分析形式)您可以将其插入任何最速下降算法实现中(有几十个这样的求解器可用) .

于 2014-01-19T08:34:20.200 回答
0

SVM 被表述为一个 QP 问题。

minimize ||w|| w.r.t

y * (w'x) >= 1 for all (x, y) in the training dataset

这是问题的对偶形式,目标是最小化L2权重的范数w

如果你改变目标 ||w|| 那么它不再是SVM。但是,您可以更改训练示例的权重。你可以在这里找到一个教程:

http://scikit-learn.org/stable/modules/svm.html#unbalanced-problems

于 2015-01-20T03:46:05.677 回答