python – Sklearn 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范数: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铰链损失和L2铰链损失函数. 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介绍

点赞