3

反关闭序言:我已阅读问题“ Sklearn LinearSVC 库中的惩罚和损失参数之间的差异”,但我发现那里的答案不够具体。因此,我正在重新制定问题:

我熟悉 SVM 理论,并且正在 Python 中尝试使用 LinearSVC 类但是,文档参数的含义并不十分清楚。我认为这是指对违反边距的点的惩罚(通常在目标函数中用希腊字母xizeta表示),而是确定类边界的向量的范数,通常用w表示。任何人都可以确认或否认这一点吗?penaltylosslosspenalty

如果我的猜测是正确的,那么penalty = 'l1'将导致向量w的L1范数最小化,就像在 LASSO 回归中一样。这与 SVM 的最大边际概念有何关系?谁能指出我关于这个问题的出版物?在描述 LIBLINEAR 的原始论文中,我找不到任何关于L1惩罚的参考。

另外,如果我的猜测是正确的,为什么 LinearSVC 不支持penalty='l2'and的组合( SVCloss='hinge'中的标准组合) when ?尝试时,我得到了dual=False

ValueError:不支持的参数集

4

1 回答 1

1

虽然很晚,但我会尽力给出我的答案。根据文档,这是考虑的原始优化问题LinearSVC: phi是身份矩阵,因为它LinearSVC只能解决线性问题。

实际上,这只是LinearSVC承认的可能问题之一(它是LIBLINEAR 论文中的L2-regularizedL1-loss ),而不是默认问题(即L2-regularizedL2-loss)。LIBLINEAR 论文对loss第 2 章中提到的内容给出了更一般的表述,然后进一步详细说明penalty了附录 (A2+A4) 中提到的内容。

基本上,它表明 LIBLINEAR 旨在解决以下具有不同loss函数xi(w;x,y)(即hingesquared_hinge)的无约束优化 pb;LIBLINEAR 中模型的默认设置不考虑偏差项,这就是为什么b从现在开始您将看不到任何参考(关于此的 SO 上有很多帖子)。

  • ,hingeL1 损失
  • squared_hingeL2-损失

对于penalty,基本上这代表了所w使用的向量的规范。附录详细说明了不同的问题:

  • L2 正则化, L1 损失( penalty='l2', loss='hinge'):
  • L2-regularized , L2-loss ( penalty='l2', loss='squared_hinge'), 默认在LinearSVC:
  • L1-regularizedL2-loss ( penalty='l1', loss='squared_hinge'):

相反,如文档中所述,LinearSVC不支持 和 的penalty='l1'组合loss='hinge'。据我所知,该论文没有具体说明原因,但我在这里找到了一个可能的答案(在 Arun Iyer 的答案中)。

最终,实际上不支持此处指定的penalty='l2'loss='hinge'、的组合(它只是未在 LIBLINEAR 中实现)或此处; 不确定是否是这种情况,但在附录 B 之后的 LIBLINEAR 论文中,指定了已解决的优化 pb(在L2-regularized的情况下,L1-loss似乎是对偶的)。dual=False

对于一般 SVC pbs 的理论讨论,我发现那一章非常有用;它显示了范数的最小化如何与w最大边距的概念相关。

于 2021-11-12T11:07:34.660 回答