For now, we're doing a full gradient descent over the whole dataset (each thread does one user). That takes a lot of time, and increases the time till convergence. I think we can easily change this to minibatches using clever indexing, where we pass in a start and end indices, and only compute the gradients for those users. This will hopefully make the item factors (Q) converge faster, which would make the user factors (P) also converge faster.
Honestly, after coding it this way, I can kinda see the appeal of ALS.
For now, we're doing a full gradient descent over the whole dataset (each thread does one user). That takes a lot of time, and increases the time till convergence. I think we can easily change this to minibatches using clever indexing, where we pass in a start and end indices, and only compute the gradients for those users. This will hopefully make the item factors (Q) converge faster, which would make the user factors (P) also converge faster.
Honestly, after coding it this way, I can kinda see the appeal of ALS.