I wanted to try out Spark for collaborative filtering using MLlib as explained in this tutorial: https://databricks-training.s3.amazonaws.com/movie-recommendation-with-mllib.html The algorithm is based on the paper "Collaborative Filtering for Implicit Feedback Datasets", doing matrix factorization.
Everything is up and running using the 10 million Movielens data set. The data set it split into 80% training 10% test and 10% validation.
Which are values similar to the tutorial, although with different training parameters.
I tried running the algorithm several times and always got recommendations that don't make any sense to me. Even rating only kids movies I get the following results:
For ratings:
Results:
Movies recommended for you:
Which except for Only Yesterday doesn't seem to make any sense.
If there is anyone out there who knows how to interpret those results or get better ones I would really appreciate you sharing your knowledge.
Best regards
EDIT:
As suggested I trained another model with more factors:
And different personal ratings:
The recommended movies are:
Movies recommended for you:
Not one useful result.
EDIT2: With using the implicit feedback method, I get much better results! With the same action movies as above the recommendations are:
Movies recommended for you:
That's more what I expected! The question is why the explicit version is so-so-so bad
Note that the code you are running does not use implicit feedback, and is not quite the algorithm you refer to. Just make sure you are not using ALS.trainImplicit
. You may need a different, lambda and rank. RMSE of 0.88 is "OK" for this data set; I am not clear that the example's values are optimal or just the one that the toy test produced. You use a different value still here. Maybe it's just not optimal yet.
It could even be stuff like bugs in the ALS implementation fixed since. Try comparing to another implementation of ALS if you can.
I always try to resist rationalizing the recommendations since our brains inevitably find some explanation even for random recommendations. But, hey, I can say that you did not get action, horror, crime drama, thrillers here. I find that kids movies go hand in hand with taste for arty movies, since, the kind of person who filled out their tastes for MovieLens way back when and rated kids movies were not actually kids, but parents, and maybe software engineer types old enough to have kids do tend to watch these sorts of foreign films you see.