Loss Functions: An Explainer

A loss function measures how wrong the model is in terms of its ability to estimate the relationship between x and y. Find out about several common loss functions here.



Loss function is a method that evaluates how well the algorithm learns the data and produces correct outputs. It computes the distance between our predicted value and the actual value using a mathematical formula.

In layman's terms, a loss function measures how wrong the model is in terms of its ability to estimate the relationship between x and y. 

Loss functions can be categorized into two groups:

  1. Classification - which is about predicting a label, by identifying which category an object belongs to based on different parameters. 
  2. Regression - which is about predicting a continuous output, by finding the correlations between dependent and independent variables.

Below is a list of types of loss functions for both Classification and Regression tasks. 

 

 Cross Entropy

 
Cross Entropy and Log Loss measure the same thing, however they are not the same and is used for Classification tasks. Cross Entropy measures the difference between two probability distributions for a given random variable or set of events.

 

Types of Cross Entropy:

 
Binary Cross Entropy - used for binary tasks

  • Categorical Cross Entropy - used for both binary and multiclass tasks. This types of Cross Entropy requires the label to be encoded as categorical. For example; one-hot encoding for 3 classes will use this representation: [0, 1, 0], [1,0,0]…)
  • Sparse Cross Entropy: - used for both binary and multiclass tasks. This types of Cross Entropy requires the label to be an integer; 0 or 1 or n

 

Code for Cross Entropy:

 

def CrossEntropy(yHat, y):
    if y == 1:
      return -log(yHat)
    else:
      return -log(1 - yHat)


 

Log Loss 

 
Log Loss, the binary of Cross Entropy is used in Classification tasks. It measures the performance of a classification model, where the output is a probability with values between 0 and 1. 

As the predicted probability gets further away from the actual label, Log loss increases. In the ideal world, a perfect model would have a Log Loss of 0. 

 

Loss Functions: An Explainer
Source: ml-cheatsheet

 

In the image above, you can see that as the predicted probability reaches 1, the Log Loss decreases. On the other hand, you can see that as the predicted probability decreases, the Log Loss rapidly increases. 

 

Log Loss Using Scikit-learn

 

from sklearn.metrics import log_loss:
  
LogLoss = log_loss(y_true, y_pred, eps = 1e-15,
    normalize = True, sample_weight = None, labels = None)


 

Hinge

 
Hinge is a loss function used for Classification tasks. This type of loss function incorporate a margin from the classification boundary against a loss. Hinge penalises misclassfied samples aswell are classifying one that are within the defined margin from the decision boundary correctly. 

 

Loss Functions: An Explainer
Source: StackOverflow

 
 

  • The x-axis represents the distance from the boundary 
  • The y-axis represents the loss size, or the penalty the function will incur.

The dotted line on the axis represents 1, which means when an instance’s distance from boundary is more than 1, the loss size is 0. If the distance from boundary is at 0, the loss size is 1. 

Correctly classified data points will have a low or 0 loss size; a low hinge loss. Whereas incorrectly classified data points will have a high or loss size of 1; a high hinge loss.

 

Hinge Loss Code

 

def Hinge(y_pred, y_true):
   return np.max([0., 1. - y_pred * y_true])


 

Mean Square Error Loss

 
Mean Square Error Loss is also known a L2 regularization and is used for Regression tasks. It tells you how close a regression line is to a set of data points.
It calculates the square difference between the current output and the expected output divided by the number of output. However, Mean Square Error loss is more sensitive to outliers due to using the square difference. 

 

Loss Functions: An Explainer
Source: freecodecamp

 

Mean Square Error Loss Code

 

def mean_square_error(y_true, y_pred):
   return K.mean(K.square(y_true-y_pred), axis=-1)


 

Mean Absolute Error Loss

 
Mean Absolute Error is also known as L1 regularization and is used for Regression tasks. It computes the mean of squares of errors between labeled data and predicted data.

It calculates the absolute difference between the current output and the expected output divided by the number of output. It’s aim is to minimise this absolute differences. Mean Absolute Error is not sensitive towards outliers as it is based on absolute value, unlike Mean Square Error. 

In order to calculate the Mean Absolute Error, you need to take the difference between your model’s predictions and the actual labelled outputs. You then apply the absolute value to the difference, and then average it out across the whole dataset.

 

Loss Functions: An Explainer
Source: TowardDataScience

 

Mean Absolute Error Code

 

def mean_abc_error(y_true, y_pred):
   return K.mean(K.abs(y_true-y_pred), axis=-1)


 

Huber Loss

 
Huber Loss is a combination of Mean Absolute Error and Mean Square Error. However, the different is that it is influenced by an additional parameter called delta (δ). 

It is a combination of both as it tells us for loss values which are less than delta; use the Mean Square Error. For loss values which are greater than delta, use the Mean Absolute Error.

In the below image, Mean Absolute Error is in red, Mean Square Error is in blue, and Huber Loss is in green.

 

Loss Functions: An Explainer
Source: TowardsDataScience

 

Huber Loss Code

 

def Huber(yHat, y, delta=1.):
    return np.where(np.abs(y-yHat) < delta,.5*(y-yHat)**2 , delta*(np.abs(y-yHat)-0.5*delta))


 

Conclusion

 
I have briefly gone over 3 loss functions for Classification and Regression each. However, there are many more that you can explore. 

Below is an image showing a list of different types of loss functions for Classification and Regression tasks. 

 

Loss Functions: An Explainer
Source: Heartbeat

 
 
Nisha Arya is a Data Scientist and Freelance Technical Writer. She is particularly interested in providing Data Science career advice or tutorials and theory based knowledge around Data Science. She also wishes to explore the different ways Artificial Intelligence is/can benefit the longevity of human life. A keen learner, seeking to broaden her tech knowledge and writing skills, whilst helping guide others.