Skip to content

CrossEntropy

Cross entropy loss.

This is a generalization of logistic loss to multiple classes.

Parameters

  • class_weight

    Typedict[base.typing.ClfTarget, float] | None

    DefaultNone

    A dictionary that indicates what weight to associate with each class.

Examples

from river import optim

y_true = [0, 1, 2, 2]
y_pred = [
    {0: 0.29450637, 1: 0.34216758, 2: 0.36332605},
    {0: 0.21290077, 1: 0.32728332, 2: 0.45981591},
    {0: 0.42860913, 1: 0.33380113, 2: 0.23758974},
    {0: 0.44941979, 1: 0.32962558, 2: 0.22095463}
]

loss = optim.losses.CrossEntropy()

for yt, yp in zip(y_true, y_pred):
    print(loss(yt, yp))
1.222454
1.116929
1.437209
1.509797

for yt, yp in zip(y_true, y_pred):
    print(loss.gradient(yt, yp))
{0: -0.70549363, 1: 0.34216758, 2: 0.36332605}
{0: 0.21290077, 1: -0.67271668, 2: 0.45981591}
{0: 0.42860913, 1: 0.33380113, 2: -0.76241026}
{0: 0.44941979, 1: 0.32962558, 2: -0.77904537}

Methods

call

Returns the loss.

Parameters

  • y_true
  • y_pred

Returns

The loss(es).

gradient

Return the gradient with respect to y_pred.

Parameters

  • y_true
  • y_pred

Returns

The gradient(s).

mean_func

Mean function.

This is the inverse of the link function. Typically, a loss function takes as input the raw output of a model. In the case of classification, the raw output would be logits. The mean function can be used to convert the raw output into a value that makes sense to the user, such as a probability.

Parameters

  • y_pred

Returns

The adjusted prediction(s).