How to interpret the probability of classes in binary classification?

Hi Shaun!

Yes, this is correct. To give a little more detail, y_pred is a
number that indicates how strongly (in some units) the model
is predicting class = “1”. This number is typically called the
logit. probs = torch.sigmoid(y_pred) is the predicted
probability that class = “1”. And predicted_vals is the
predicted class label itself (0 or 1).

As a practical matter, you don’t need to calculate sigmoid.
You can save a little bit of time (but probably trivial) by
leaving it out.

If threshold were 0.5 (that is, predict class = “1” when
P(class = “1”) > 1/2), then you could use
predicted_vals = y_pred > 0.

More generally, you can compare y_pred with the
inverse-sigmoid of the threshold you want. This is typically
called the logit function, and is given by log (p / (1 - p).

(Given a probability value p, 0 < p < 1, inverse-sigmoid (p) =
logit (p) = log (p / (1 - p)).)

So:

logit_threshold = torch.tensor (threshold / (1 - threshold)).log()
...
predicted_vals = y_pred > logit_threshold

That is, instead of applying sigmoid to all of your y_preds,
you calculate inverse-sigmoid of threshold once.

Best.

K. Frank

2 Likes