hinge_loss#

sklearn.metrics.hinge_loss(y_true, pred_decision, *, labels=None, sample_weight=None)[源代码]#

平均铰链损失(非正规化)。

在二进制类情况下,假设y_true中的标签用+1和-1编码,当出现预测错误时, margin = y_true * pred_decision 总是消极的(因为迹象不一致),这意味着 1 - margin 始终大于1。 因此,累积的铰链损失是分类器所犯错误数量的上限。

在多类情况下,该函数期望所有标签都包含在y_true中,或者提供包含所有标签的可选标签参数。多标签余量根据Crammer-Singer的方法计算。与二进制情况一样,累积的铰链损失是分类器所犯错误数量的上限。

阅读更多的 User Guide .

参数:
y_true形状类似阵列(n_samples,)

真正的目标,由两个值的整数组成。阳性标签必须大于阴性标签。

pred_decision形状类似阵列(n_samples,)或(n_samples,n_classes)

预测决策,由decision_函数(floats)输出。

labels类数组,默认=无

包含问题的所有标签。用于多类铰链损失。

sample_weight形状类似数组(n_samples,),默认=无

样本重量。

返回:
loss浮子

平均铰链损失。

引用

[1]

Wikipedia entry on the Hinge loss <https://en.wikipedia.org/wiki/Hinge_loss> _.

[2]

科比·克莱默、约拉姆·辛格。基于多类核的载体机的数学实现。《机器学习研究杂志》2,(2001),265-292。

[3]

L1 AND L2 Regularization for Multiclass Hinge Loss Models by Robert C. Moore, John DeNero <https://storage.googleapis.com/pub-tools-public-publication-data/pdf/37362.pdf> _.

示例

>>> from sklearn import svm
>>> from sklearn.metrics import hinge_loss
>>> X = [[0], [1]]
>>> y = [-1, 1]
>>> est = svm.LinearSVC(random_state=0)
>>> est.fit(X, y)
LinearSVC(random_state=0)
>>> pred_decision = est.decision_function([[-2], [3], [0.5]])
>>> pred_decision
array([-2.18...,  2.36...,  0.09...])
>>> hinge_loss([-1, 1, 1], pred_decision)
np.float64(0.30...)

在多类情况下:

>>> import numpy as np
>>> X = np.array([[0], [1], [2], [3]])
>>> Y = np.array([0, 1, 2, 3])
>>> labels = np.array([0, 1, 2, 3])
>>> est = svm.LinearSVC()
>>> est.fit(X, Y)
LinearSVC()
>>> pred_decision = est.decision_function([[-1], [2], [3]])
>>> y_true = [0, 2, 3]
>>> hinge_loss(y_true, pred_decision, labels=labels)
np.float64(0.56...)