Why does this derive from `SGDClassifier`? It seems like it should derive from `BaseSGD` instead, or maybe some of the common code should be factored out to a new intermediate class.