Hinge-loss for large margin classification. More...
#include <shark/ObjectiveFunctions/Loss/HingeLoss.h>
Public Member Functions | |
HingeLoss () | |
constructor | |
std::string | name () const |
Returns class name "HingeLoss". | |
double | eval (BatchLabelType const &labels, BatchOutputType const &predictions) const |
calculates the sum of all | |
double | evalDerivative (BatchLabelType const &labels, BatchOutputType const &predictions, BatchOutputType &gradient) const |
evaluate the loss and the derivative w.r.t. the prediction | |
Public Member Functions inherited from shark::AbstractLoss< unsigned int, RealVector > | |
AbstractLoss () | |
virtual double | eval (ConstLabelReference target, ConstOutputReference prediction) const |
evaluate the loss for a target and a prediction | |
double | eval (Data< LabelType > const &targets, Data< OutputType > const &predictions) const |
virtual double | evalDerivative (ConstLabelReference target, ConstOutputReference prediction, OutputType &gradient) const |
evaluate the loss and its derivative for a target and a prediction | |
virtual double | evalDerivative (ConstLabelReference target, ConstOutputReference prediction, OutputType &gradient, MatrixType &hessian) const |
evaluate the loss and its first and second derivative for a target and a prediction | |
double | operator() (LabelType const &target, OutputType const &prediction) const |
evaluate the loss for a target and a prediction | |
double | operator() (BatchLabelType const &target, BatchOutputType const &prediction) const |
Public Member Functions inherited from shark::AbstractCost< LabelT, OutputT > | |
virtual | ~AbstractCost () |
const Features & | features () const |
virtual void | updateFeatures () |
bool | hasFirstDerivative () const |
returns true when the first parameter derivative is implemented | |
bool | isLossFunction () const |
returns true when the cost function is in fact a loss function | |
virtual double | eval (Data< LabelType > const &targets, Data< OutputType > const &predictions) const =0 |
double | operator() (Data< LabelType > const &targets, Data< OutputType > const &predictions) const |
Public Member Functions inherited from shark::INameable | |
virtual | ~INameable () |
Hinge-loss for large margin classification.
The hinge loss for two class problems is defined as \( L_i = \max \{ 0 , 1- y_i f(x_i) \} \) where \( y_i \in \{-1,1} \) is the label and \( f(x_i) \) is the prediction of the model for the ith input. The loss introduces the concept of a margin, that is, the point should not only be correctly classified but also not too close to the decision boundary. Therefore even correctly classified points are getting punished.
for multi class problems the concept of sums of the relative margin is used: \( L_i = \sum_{c \neq y_i} \max \{ 0 , 1- 1/2 (f_{y_i}(x_i)- f_c(x_i) \} \). This loss requires that there is a margin between the different class outputs and the functions needs as many outputs as classes. the pre-factor 1/2 ensures that in the 2 class 2 output case with a linear function the value of loss is the same as in the single output version.
The loss is implemented for class labels 0,1,...,n, even in the binary cases.
The hinge-loss is differentiable except on one point. For points violating the margin, the derivative is -1, for points that are not violating it, it is 0. Boundary counts as non-violating.
Definition at line 58 of file HingeLoss.h.
|
inline |
constructor
Definition at line 62 of file HingeLoss.h.
References shark::AbstractCost< LabelT, OutputT >::m_features.
|
inlinevirtual |
calculates the sum of all
Implements shark::AbstractLoss< unsigned int, RealVector >.
Definition at line 72 of file HingeLoss.h.
References SIZE_CHECK.
|
inlinevirtual |
evaluate the loss and the derivative w.r.t. the prediction
target | target value |
prediction | prediction, typically made by a model |
gradient | the gradient of the loss function with respect to the prediction |
Reimplemented from shark::AbstractLoss< unsigned int, RealVector >.
Definition at line 100 of file HingeLoss.h.
References SIZE_CHECK.
|
inlinevirtual |
Returns class name "HingeLoss".
Reimplemented from shark::INameable.
Definition at line 67 of file HingeLoss.h.