1. A computing device implemented method for collaborative filtering, comprising: representing users and objects in an ordinal ratings matrix having a particular dimensional space; weighting values in the ordinal ratings matrix with a weight matrix having the particular dimensional space; hashing the weight matrix into a lower dimensional space by multiplying a projection matrix by the weight matrix; hashing the ordinal ratings matrix into a lower dimensional space by multiplying the projection matrix by an element-wise product of the weight matrix and the ordinal ratings matrix to form a reduced ratings matrix, and element-wise dividing the reduced ratings matrix by the hashed weight matrix; low-rank approximating the hashed ordinal ratings matrix and the hashed weight matrix by alternating least squares; updating a result of the low-rank approximation using the ordinal ratings matrix and the weight matrix; and generating a recommendation of one of the objects for one of the users based on the updated result.