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