我对 SVM 理论不太熟悉,我在 python 中使用这个 LinearSVC 类:

http://scikit-learn.org/stable/modules/ generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC

我想知道惩罚参数和损失参数有什么区别?

有帮助吗?

解决方案

在机器学习中, 损失函数 衡量解决方案的质量,同时 惩罚函数 对您的解决方案施加了一些限制。

具体来说,让 X 是你的数据,并且 y 是你的数据的标签。然后 损失函数 V(f(X),y) 衡量你的模型有多好 F 将您的数据映射到标签。这里,f(X) 是预测标签的向量。

L1 和 L2 范数是常用且直观理解的损失函数(参见 *). L1范数: V(f(X),y) = |f(x1) - y1| + ... + |f(xn) - yn|, ,其中 f(xi) - 第 i 个对象的预测标签,yi 是实际标签。 L2范数: V(f(X),y) = sqrt(|f(x1) - y1|^2 + ... + |f(xn) - yn|^2) ,其中 sqrt 是平方根。

至于 惩罚函数, ,它用于施加一些约束 R(f) 关于你的解决方案 F. 。L1范数可以是 R(f)=|f1| + ... + |fm|, ,类似地你可以定义 L2 范数。这里, f1、...、调频 是模型的系数。您最初并不知道它们,这些是机器学习算法从您的数据中学习的值。

最终,总成本函数为 V(f(X),y) + lambda*R(f). 。目标是找到能够最小化成本函数的 f。然后这个 f 将被用来对新的看不见的物体进行预测。为什么我们需要惩罚函数?事实证明,惩罚函数可能会为您的解决方案添加一些不错的属性。例如,当特征太多时,L1 范数可以通过生成稀疏解决方案来帮助防止过度拟合。

* 这并不完全是支持向量机的工作原理,但可能会让您了解这些术语的含义。例如,在SVM中,使用L1-铰链损失函数和L2-铰链损失函数。 L1-铰链: V(f(X),y) = max(0,1 - y1*f(x1)) + ... + max(0,1 - yn*f(xn)), ,L2 类似,但具有平方项。您可能会在以下位置找到关于 ML 的很好的介绍: Andrew Ng 在 Coursera 上的机器学习课程

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top