Latent Matrix Factorization
Matrix factorization tries to find the latent features about how users rate items. For example a bunch of users may rate a particular restaurant high because they like the cuisine or the ambience of a restaurant. Some people might rate the same restaurant poorly because they don't like the cuisine or the ambience. In this example, cuisine and ambience are the two features based on which we can predict whether a particular user might like a restaurant or not.
With the help of matrix factorization techniques we can find these hidden features, using which we can predict the rating a user would give to a restaurant. The number of hidden features is very small as compared to the number of restaurants and users.
Matrix factorization tries to factorize a matrix of ratings such that the factors when multiplied are as close as possible to the original matrix. I have used the gradient descent technique for this particular implementation and have also used some regularization techniques to avoid over fitting.
Implementation:
Latent Matrix Factorization  The python code to predict the rating of a particular user.
Input.txt  Sample input file (json file) containing the reviews which users have given about restaurants.
Running the code
One can run the program from the terminal by running the following command:
$ python matrixFactorization.py "User_ID" "Business/Restaurant ID"
Example:$ python matrixFactorization.py nEYPahVwXGD2Pjvgkm7QqQ mYSpR_SLPgUVymYOvTQd_Q
