Spec-Zone.ru › scikit-learn

hinge_loss

sklearn.metrics.hinge_loss(y_true, pred_decision, *, labels=None, sample_weight=None)[source]

Средняя потеря хинге (нерегуляризованная).

В случае бинарной классификации, предполагая, что метки в y_true закодированы с помощью +1 и -1, когда происходит ошибка прогноза, margin = y_true * pred_decision всегда отрицательна (поскольку знаки не совпадают), подразумевая, что 1 - margin всегда больше 1. Таким образом, кумулятивная потеря хинге является верхней границей числа ошибок, допущенных классификатором.

В случае многоклассовой классификации функция ожидает, что либо все метки включены в y_true, либо в качестве необязательного аргумента labels предоставлены все метки. Многомерное пороговое значение вычисляется по методу Краммера-Зингера. Как и в бинарном случае, кумулятивная потеря хинге является верхней границей числа ошибок, допущенных классификатором.

Подробнее см. в Руководстве пользователя.

Параметры:
y_trueмассив-подобный формы (n_samples,)

Истинные значения, состоящие из целых чисел двух значений. Положительная метка должна быть больше отрицательной.

pred_decisionмассив-подобный формы (n_samples,) или (n_samples, n_classes)

Предсказанные решения, полученные на выходе из decision_function (вещественные числа).

labelsмассив-подобный, по умолчанию=None

Содержит все метки для задачи. Используется в многоклассовой потере хинге.

sample_weightмассив-подобный формы (n_samples,), по умолчанию=None

Веса выборок.

Возвращаемое значение:
lossfloat

Средняя потеря хинге.

Ссылки

[1]

Статья о потере хинге в Википедии.

[2]

Koby Crammer, Yoram Singer. On the Algorithmic Implementation of Multiclass Kernel-based Vector Machines. Journal of Machine Learning Research 2, (2001), 265-292.

[3]

L1 AND L2 Regularization for Multiclass Hinge Loss Models by Robert C. Moore, John DeNero.

Примеры

>>> 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...)

Примеры галереи

Графическое отображение разделяющих границ с различными ядрами SVM

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.metrics.hinge_loss.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API