Sometimes, the defaults don’t cover your use-case
Why monitor a custom evaluation function?
Sometimes, you’re working with a very custom evaluation metric which can’t be used as a loss function. So you might want to:
- train using some standard loss function, such as L2 loss
- choose your hyperparameters (such as
n_estimators) based on the best cross-validation score, according to your custom evaluation metric.
How do we do this?
You’ll need to define a function which takes, as arguments:
- your model’s predictions
- your dataset’s true labels
and which returns:
- your custom loss name
- the value of your custom loss, evaluated with the inputs
- whether your custom metric is something which you want to maximise or minimise
If this is unclear, then don’t worry, we’re about to see an example (
def neg_correlation ).
Let’s see an example!
Here, I train LightGBM on the
breast_cancer dataset from
sklearn, and choose
n_estimators based on which one delivers the best negative correlation coefficient.
Where can I find this in the docs?
A description can be found here: https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMRegressor.html#lightgbm.LGBMRegressor.fit
However, there’s no example. I hope that this example can save you some time if you need to figure out how to do this yourself.
We learned how to pass a custom evaluation metric to LightGBM. This is useful when you have a task with an unusual evaluation metric which you can’t use as a loss function. Now go out and train a model using a customised evaluation metric!