我对 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 是平方根。

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

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

* 这不是支持向量机的工作原理,但可能会让您对这些术语的含义有所了解。例如,在 SVM 中,使用 L1-hinge loss 和 L2-hinge loss 函数。 L1 铰链 :V(f(X),y) = max(0,1 - y1*f(x1)) + ... + max(0,1 - yn*f(xn)) 和 L2 相似,但具有平方项。您可能会在 Machine Learning class by Andrew Ng on Coursera 中找到对 ML 的很好介绍

关于python - Sklearn LinearSVC 库中惩罚和损失参数的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25042909/

10-10 16:22