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