【问题标题】:Meaning of `penalty` and `loss` in LinearSVCLinearSVC中“penalty”和“loss”的含义
【发布时间】:2021-10-19 11:26:17
【问题描述】:

反关闭序言:我已阅读问题“difference between penalty and loss parameters in Sklearn LinearSVC library”,但我发现那里的答案不够具体。因此,我正在重新提出问题:

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

如果我的猜测是正确的,那么penalty = 'l1' 将导致向量 wL1-范数最小化,例如套索回归。这与 SVM 的最大边际概念有何关系?谁能指出我关于这个问题的出版物?在original paper describing LIBLINEAR 中,我找不到任何对 L1 惩罚的参考。

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

ValueError:不支持的参数集

【问题讨论】:

    标签: python scikit-learn svm liblinear


    【解决方案1】:

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

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

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

    • hingeL1-loss
    • squared_hingeL2-loss

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

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

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

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

    对于一般 SVC pbs 的理论讨论,我发现that chapter 非常有用;它显示了w 范数的最小化与最大边距的概念之间的关系。

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 1970-01-01
      • 2020-12-25
      • 2021-10-22
      相关资源
      最近更新 更多