One embodiment is a method executed by a computer system that applies collaborative filtering to provide a recommendation to a user. The method includes retrieving a binary matrix that includes rows and columns of binary data for preferences of users on items; applying a neighborhood-based approach to convert the binary matrix into a neighbor-score matrix; applying a factorization to approximate the neighbor-score matrix with a product of lower rank matrices; calculating a user factor and an item factor based on the factorization; calculating scores for user-item pairs by computing a dot product between the user factor and the item factor; sorting the scores of the user-item pairs to generate the recommendation to the user; and providing the recommendation to a general-purpose computer of the user.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method executed by a computer system that applies collaborative filtering to provide a recommendation to a user, the method comprising: retrieving, by servers in the computer system and from a database, a binary matrix (R) that includes rows and columns of binary data for preferences of users on items; applying, by the servers in the computer system, a neighborhood-based approach to convert the binary matrix (R) into a neighbor-score matrix (S); applying, by the servers in the computer system, a singular value decomposition (SVD) to approximate the neighbor-score matrix (S) with a product of three matrices via the SVD; calculating, by the servers in the computer system, a user factor and an item factor based on the SVD; calculating, by the servers in the computer system, scores for user-item pairs by computing a dot product between the user factor and the item factor; sorting, by the servers in the computer system, the scores of the user-item pairs to generate the recommendation to the user; and providing, by the servers in the computer system, the recommendation to a general-purpose computer of the user. 2. The method of claim 1, further comprising: applying, by the servers in the computer system, the SVD with the product of the three matrices to approximate the neighbor-score matrix (S) by: S≈UrΣrVrT where r is an SVD rank, Ur is an N×r matrix, Σr is an r×r diagonal matrix, Vr is an M×r matrix , and VrT is a transpose of matrix Vr. 3. The method of claim 1, further comprising: computing, by the servers in the computer system, the dot product between the user factor and the item factor by: S(u, v)≈Ur(u, :)Vr(v, :)T where S(u, v) is a predicted preference for the user (u) for an item (v). 4. The method of claim 1, further comprising: partitioning, by the servers in the computer system, the users into blocks of size Nb and for each block iteratively calculating an Nb×M neighbor score matrix and updating SVD factorization to include user factors for the users in the block. 5. The method of claim 1, further comprising: reducing, by the servers in the computer system, space of the SVD from O(N M) space to O(Nbρ) by storing only top ρ scores of the users with Nb being the users in blocks of size Nb and ρ being an integer less than M. 6. The method of claim 1, further comprising: approximating, by the servers in the computer system, the user factor for a new-added user u by: Ur(u, :)≈S(u, :)Vr where S(u, :) is a neighbor-score vector for the new-added user u, Vr is the item factor, and Ur (u, :) is the user factor for the new-added user u; and updating the SVD factorization when a number of the new-added users reaches a predetermined number. 7. The method of claim 1, further comprising: approximating, by the servers in the computer system, the item factor for a new-added item v by: Vr(v, :)≈S(:, v)TUr where S(:, v) is a neighbor-score vector for the new-added item v, Ur is the user factor, and Vr (v, :) is the item factor for the new-added item v; and updating the SVD when a number of the new-added items reaches a predetermined number. 8. A computer system, comprising: servers that collect user preferences that are derived from implicit feedback from users for items while interfacing with electronic devices; a database that communicates with the servers and stores the user preferences as binary data; and a server that communicates with the database, retrieves the binary data of the user preferences, and executes collaborative filtering on the binary data to provide recommendations for products to the users by applying a neighbor-based similarity transformation to map the binary data of the user preferences to non-binary data of the user preferences, generating from the non-binary data a neighbor-score matrix (S), applying a singular value decomposition (SVD) model to the non-binary data of the neighbor-score matrix to determine latent factors for the users and items for which the users provided implicit feedback, and calculating scores for user-item pairs by computing a dot product between the latent factors for the users and the items to generate the recommendations for the products to the users. 9. The computer system of claim 8, wherein the server that communicates with the database further computes the dot product between the latent factors for the users and the items by: S(u, v)≈Ur(u, :)Vr(v, :)T where S(u, v) is a predicted preference for the user (u) for an item (v). 10. The computer system of claim 8, wherein the server that communicates with the database further divides the users into groups of size Nb and for each group iteratively calculates an Nb×M neighbor score matrix and updates SVD factorization to include latent factors for the users in the group. 11. The computer system of claim 8, wherein the server that communicates with the database further approximates a latent factor for a new-added user u by: Ur(u, :)≈S(u, :)Vr where S(u, :) is a neighbor-score vector for the new-added user u, Vr is an item factor, and Ur(u, :) is the latent factor for the new-added user u; and updating the SVD model when a number of the new-added users reaches a predetermined number. 12. The computer system of claim 8, wherein the server that communicates with the database further approximates a latent factor for a new-added item v by: Vr(v, :)≈S(:, v)TUr where S(:, v) is a neighbor-score vector for the new-added item v, Ur is a user factor, and Vr(v, :) is the latent factor for the new-added item v; and updating the SVD model when a number of the new-added items reaches a predetermined number. 13. A method executed by a computer system that applies collaborative filtering to provide a recommendation to a user, the method comprising: retrieving, by servers in the computer system and from a database, a binary matrix (R) that includes rows and columns of binary data for preferences of users on items; applying, by the servers in the computer system, a neighborhood similarity rescaling to convert the binary matrix (R) into a neighbor-score matrix (S); applying, by the servers in the computer system, a factorization to approximate the neighbor-score matrix (S) with a product of lower rank matrices and produce latent factors for the user and items; calculating, by the servers in the computer system, scores for user-item pairs by computing a dot product between the latent factors for the user and the items; sorting, by the servers in the computer system, the scores for the user-item pairs to generate the recommendation to the user; providing, by the servers in the computer system, the recommendation to a general-purpose computer of the user; approximating, by the servers in the computer system, a latent factor for a new-added user u by: Ur(u, :)≈S(u, :)Vr where S(u, :) is a neighbor-score vector for the new-added user u, Vr is an item factor, and Ur (u, :) is the latent factor for the new-added user u; and updating the factorization when a number of the new-added users reaches a predetermined number. 14. The method of claim 13, further comprising: computing, by the servers in the computer system, the dot product between the latent factors for the users and the items by: S(u, v)≈Ur(u, :)Vr(v, :)T where S(u, v) is a predicted preference for the user (u) for an item (v). 15. The method of claim 13, further comprising: partitioning, by the servers in the computer system, the users into blocks of size Nb and for each block iteratively calculating an Nb×M neighbor-score matrix and updating the factorization to include latent factors for the users in the block. 16. The method of claim 13, further comprising: reducing, by the servers in the computer system, space from O(N M) space to O(Nbρ) by storing only a subset of the scores the users with Nb being the users in blocks of size Nb and ρ being an integer less than M. 17. The method of claim 13, further comprising: approximating, by the servers in the computer system, a latent factor for a new-added item v by: Vr(v, :)≈S(:, v)TUr where S(:, v) is a neighbor-score vector for the new-added item v, Ur is a user factor, and Vr (v, :) is the latent factor for the new-added item v; and updating the factorization when a number of the new-added items reaches a predetermined number.