sklearn.metrics
.hinge_loss¶
- sklearn.metrics.hinge_loss()¶
Pérdida media de la bisagra (no regularizada).
En el caso de la clase binaria, asumiendo que las etiquetas en y_true están codificadas con +1 y -1, cuando se comete un error de predicción
margin = y_true * pred_decision
es siempre negativo (ya que los signos no están de acuerdo), lo que implica que1 - margin
es siempre mayor que 1. La pérdida acumulada de la bisagra es por lo tanto un límite superior del número de errores cometidos por el clasificador.En el caso multiclase, la función espera que todas las etiquetas estén incluidas en y_true o que se proporcione un argumento de etiquetas opcionales que contenga todas las etiquetas. El margen multietiqueta se calcula de acuerdo con el método Crammer-Singer. Como en el caso binario, la pérdida acumulada de la bisagra es un límite superior del número de errores cometidos por el clasificador.
Más información en el Manual de usuario.
- Parámetros
- y_truearreglo de forma (n_samples,)
Objetivo verdadero, consistiendo de enteros de dos valores. La etiqueta positiva debe ser mayor a la etiqueta negativa.
- pred_decisionarreglo de forma (n_samples,) o (n_samples, n_classes)
Decisiones predichas, devueltas por decision_function (flotantes).
- labelsarray-like, default=None
Contiene todas las etiquetas para el problema. Se utiliza en la pérdida de bisagras multiclases.
- sample_weightarray-like de forma (n_samples,), default=None
Ponderados de muestras.
- Devuelve
- lossflotante
Referencias
- 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.
Ejemplos
>>> 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...
En el caso multiclase:
>>> 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...