There are some merits in keeping a method like this. It is very very clear what parameters need to be set, and the user don't need to worry about what GradientDescentOpts consists.

I like having a common GradientDescentOpts, but I think we should also keep one method in SVM / LR that can users can call by specifying the parameters.