Spec-Zone.ru › scikit-learn

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 либо передан необязательный аргумент labels, содержащий все метки. Многоклассовый отступ вычисляется согласно методу Краммера — Сингера. Как и в бинарном случае, суммарная шарнирная потеря является верхней границей числа ошибок, допущенных классификатором.

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

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

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

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

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

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

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

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

Веса объектов.

Возвращает:
lossчисло с плавающей точкой

Средняя шарнирная потеря.

Список литературы

[1]

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

[2]

Коби Краммер, Йорам Сингер. Об алгоритмической реализации многоклассовых векторных машин на основе ядер. Journal of Machine Learning Research 2, (2001), 265–292.

[3]

Регуляризация L1 и L2 для моделей многоклассовой шарнирной потери, Роберт К. Мур, Джон ДеНеро.

Примеры

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

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

Построение границ классификации с различными ядрами SVM

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

Spec-Zone.ru

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