Python Sklearn LinearSVC库中惩罚和损失参数之间的差异

Python Sklearn LinearSVC库中惩罚和损失参数之间的差异,python,scikit-learn,svm,libsvm,liblinear,Python,Scikit Learn,Svm,Libsvm,Liblinear,我不太熟悉SVM理论,我在python中使用这个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是实际标

我不太熟悉SVM理论,我在python中使用这个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 norm通过生成稀疏解决方案来帮助防止过度拟合

*这并不完全是支持向量机的工作原理,但可能会让您了解这些术语的含义。例如,在SVM中,使用L1铰链损失和L2铰链损失函数L1铰链
V(f(X),y)=最大值(0,1-y1*f(x1))+…+max(0,1-yn*f(xn))
,L2类似,但具有平方项。您可以在

中找到有关ML的详细介绍,谢谢。这非常有帮助。L2规范也有助于防止过度拟合;但它产生的绝对值比实际的零小。你对损失函数的描述是不正确的。支持向量机中的损失是(
l1
):V(f(x),y)=max(0,1-f(x)*y);或者是前者的平方(
l2
),这会对错误的预测造成更大的惩罚。有许多幻灯片,显示SVM中发生的事情。