用户定义的损失函数liblinear

时间:2014-01-18 21:52:25

标签: svm libsvm liblinear

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

2 个答案:

答案 0 :(得分:0)

简短的回答是

“损失函数”定义了优化问题,实际上该参数(特别是)将此模型更改为

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

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

另一方面,如果功能很简单,即。它是一个可微函数,没有任何界限(优化是在整个参数空间上执行)然后(假设你知道衍生物的分析形式)你可以将它插入任何最速下降算法实现(有许多这样的解算器可用)

答案 1 :(得分:0)

SVM被制定为QP问题。

minimize ||w|| w.r.t

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

这是问题的双重形式,目标是最小化权重L2的{​​{1}}范数。

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

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