gpt4 book ai didi

python - LinearSVC中 `penalty`和 `loss`的含义

转载 作者:行者123 更新时间:2023-12-05 05:57:22 28 4
gpt4 key购买 nike

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

熟悉 SVM 理论,我正在 Python 中试验 LinearSVC 类。然而,documentation关于 penalty 的含义不是很清楚和 loss参数。我侦察到 loss指的是对违反margin的点的惩罚(通常在目标函数中用希腊字母xizeta表示),而penalty是确定类边界的向量的范数,通常用 w 表示。谁能证实或否认这一点?

如果我猜对了,那么penalty = 'l1'将导致向量 wL1 范数最小化,就像在 LASSO 回归中一样。这与 SVM 的最大间隔思想有何关系?谁能指出我关于这个问题的出版物?在original paper describing LIBLINEAR我找不到任何关于 L1 惩罚的引用。

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

ValueError: Unsupported set of arguments

最佳答案

虽然很晚了,但我会尽力给出我的答案。根据doc ,这里是 LinearSVC 考虑的原始优化问题: ,phi 是单位矩阵,假定 LinearSVC 仅解决线性问题。

实际上,这只是 LinearSVC 承认的可能问题之一(它是 L2-regularized, L1-loss 在LIBLINEAR 论文的条款)而不是默认条款(即 L2-regularizedL2-loss)。LIBLINEAR 论文对第 2 章中所谓的 loss 给出了更一般的表述,然后它还进一步阐述了附录(A2)中所谓的 penalty +A4).

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

  • > , hingeL1-loss
  • > squared_hingeL2-loss

关于penalty,基本上这代表了所用向量w 的范数。附录详细阐述了不同的问题:

  • L2 正则化L1 损失(penalty='l2'loss='hinge' ):
  • L2 正则化L2 损失(penalty='l2'loss='squared_hinge' ), LinearSVC 中的默认值:
  • L1 正则化L2 损失(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 范数的最小化如何与最大边距的概念相关。

关于python - LinearSVC中 `penalty`和 `loss`的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68819288/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com