LinearSVC中“penalty”和“loss”的含义
Posted
技术标签:
【中文标题】LinearSVC中“penalty”和“loss”的含义【英文标题】:Meaning of `penalty` and `loss` in LinearSVC 【发布时间】:2021-10-19 11:26:17 【问题描述】:反关闭序言:我已阅读问题“difference between penalty and loss parameters in Sklearn LinearSVC library”,但我发现那里的答案不够具体。因此,我正在重新提出问题:
我我熟悉 SVM 理论,我正在 Python 中试验 LinearSVC 类。但是,documentation 对penalty
和loss
参数的含义还不是很清楚。我认为loss
是指对违反边距的点的惩罚(通常在目标函数中用希腊字母 xi 或 zeta 表示),而penalty
是确定类边界的向量范数,通常用 w 表示。任何人都可以确认或否认这一点吗?
如果我的猜测是正确的,那么penalty = 'l1'
将导致向量 w 的 L1-范数最小化,例如套索回归。这与 SVM 的最大边际概念有何关系?谁能指出我关于这个问题的出版物?在original paper describing LIBLINEAR 中,我找不到任何对 L1 惩罚的参考。
另外,如果我的猜测是正确的,为什么当dual=False
时LinearSVC 不支持penalty='l2'
和loss='hinge'
的组合(SVC 中的标准组合)?尝试时,我得到了
ValueError:不支持的参数集
【问题讨论】:
【参考方案1】:虽然很晚,但我会尽力给出答案。根据doc,这是LinearSVC
考虑的原始优化问题:
,phi
是恒等矩阵,因为LinearSVC
只解决线性问题。
实际上,这只是LinearSVC
承认的可能问题之一(它是 LIBLINEAR 论文中的 L2-regularized、L1-loss ) 而不是默认的(L2-regularized, L2-loss)。
LIBLINEAR 论文对第 2 章中称为 loss
的内容给出了更一般的表述,然后进一步详细说明了附录 (A2+A4) 中称为 penalty
的内容。
基本上,它表明 LIBLINEAR 旨在使用不同的loss
函数xi(w;x,y)
(即hinge
和squared_hinge
)解决以下无约束优化pb; LIBLINEAR 中模型的默认设置不考虑偏差项,这就是为什么从现在开始您将看不到任何对 b
的引用(关于此的 SO 上有很多帖子)。
hinge
或 L1-loss
、squared_hinge
或 L2-loss。
对于penalty
而言,基本上这代表了使用的向量w
的规范。附录详细阐述了不同的问题:
penalty='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
范数的最小化与最大边距的概念之间的关系。
【讨论】:
以上是关于LinearSVC中“penalty”和“loss”的含义的主要内容,如果未能解决你的问题,请参考以下文章