I'm looking into Learning to Rank models - specifically, the LGBMRanker model - and I want to understand how it's able to train. It takes in features, group sizes and labels, and optimizes for a metric called nDCG.
I think a ranking-based metric would change in a discontinuous way since ranks are positive integers only. So a change in feature weights would change the final score, which in turn would change the rankings (discontinuity introduced here), which in turn would change the objective function.
And gradient descent works when the objective function is a continuous function of the feature weights.
So how does LGBMRanker overcome this?