ratings = userRatings.iterateNonZero();
while (ratings.hasNext()) {
Vector.Element e = ratings.next();
for (Vector.Element feature : Y.get(e.index())) {
Vector partial = CuMinusIY.get(e.index()).times(feature.get());
YtransponseCuMinusIY.viewRow(feature.index()).assign(partial, Functions.PLUS);
}
}
/* Y' (Cu - I) Y + λ I add lambda on the diagonal */
for (int feature = 0; feature < numFeatures; feature++) {