You might want to have a look at the Morse paper. It describes an algorithm which worked well, significantly better than KNN, at least on movies, using, by today's standards, a small data set. Unfortunately, when I inquired about open sourcing the code, I was told that BT had lost it. But the algorithm is described in detail in the paper.