我对 SVM 理论不是很熟悉,我在 python 中使用了这个 LinearSVC 类:
http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC
我想知道惩罚和损失参数之间有什么区别?
我对 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 norm : V(f(X),y) = |f(x1) - y1| + ... + |f(xn) - yn|
,其中 f(xi) - 第 i 个对象的预测标签,yi 是实际标签。L2 norm : V(f(X),y) = sqrt(|f(x1) - y1|^2 + ... + |f(xn) - yn|^2)
,其中 sqrt 是平方根。
至于惩罚函数,它用于对您的解决方案f施加一些约束R(f)。L1 范数可以是,同样您可以定义 L2 范数。这里,f1,...,fm是模型的系数。您最初并不知道它们,这些是机器学习算法从您的数据中学习的值。R(f)=|f1| + ... + |fm|
最终,总成本函数为V(f(X),y) + lambda*R(f)
。目标是找到 f 可以最小化您的成本函数。然后这个 f 将用于对新的看不见的对象进行预测。为什么我们需要惩罚函数?事实证明,惩罚函数可能会为您的解决方案添加一些不错的属性。例如,当您有太多特征时,L1 范数通过生成稀疏解决方案来帮助防止过度拟合。
*这并不是支持向量机的工作原理,但可能会让您对这些术语的含义有所了解。例如,在 SVM 中,使用了 L1-hinge 损失和 L2-hinge 损失函数。L1-hinge :
V(f(X),y) = max(0,1 - y1*f(x1)) + ... + max(0,1 - yn*f(xn))
和 L2 类似,但有平方项。您可能会在 Coursera 上的 Andrew Ng的机器学习课程中找到一个很好的机器学习介绍