`SGDFactorizer` is definitely better, but I'd like to clarify something. what would happen by feeding this algorithm a matrix with nothing missing? It would still be a low-rank matrix factorization similar to PCA but without the orthogonality? Would it make sense in any context? (ie certain loss functions / regularizers)

My concern is that Matrix Factorization / Factorizer is an established term for the problem in case of missing value (rec. sys.) However in scikit-learn this might be unclear because of the context, i.e. we already have NMF which has "matrix factorization" right in the title but it doesn't support missing values.  So would the name `SGDFactorizer` suggest that, as opposed to the other members, it learns missing data? OTOH, if we would name it `SGDImputer` it would be a brand new term for an established problem, whereas `SGDFactorizationImputer` would be too long I suppose.