Doing this is just to make the result consistent with scipy.sparse.linalg.svds. In mahout, it just iterate number of desired_rank times. But the result may be inconsistent with scipy.sparse.linalg.svds. I found if we iterate two more times and keep only largest desired_rank eigenvalues and their corresponding eigenvectors, the result is consistent with scipy function.