Matrix factorization is widely applied in collaborative filtering, and briefly speaking, it tries to learn the following parameters: $$\min_{q_u,p_i}\sum_{\{u,i\}}(r_{ui} - q_u^Tp_i)^2$$
And we could apply SGD and ALS as the learning algorithm, however, as I read here, they said,
SGD is not practical if the dataset size is huge, instead ALS is better.
I wonder why SGD is not good if the dataset is huge? I thought even if it's huge, we could use mini-batch SGD, which is the widely adopted way to train large nerual nets, isn't it?
FOLLOWUP
By SGD, each time we only use one data point $r_{ui}$, and only optimize one part of the entire loss, i.e. optimize $(r_{ui} - q_u^Tp_i)^2$, so we update $q_u$ using the gradient of this part, resulting $\tilde{q_u}$.
Absolutely $\tilde{q_u}$ will optimize $(r_{ui} - q_u^Tp_i)^2$, but it might worsen other parts of the entire loss, say $(r_{uj} - q_u^Tp_j)^2$, I mean both $r_{ui}$ and $r_{un}$ involves $q_u$.
Considering the above case, how could we guarantee that SGD will converge?