
A List of Recommender Systems and Resources - mooreds
https://github.com/grahamjenson/list_of_recommender_systems
======
tw1010
What's HNs best sociological guess for why recommendation systems are still
pretty crappy? It can't be that it's technically or mathematically too
challenging to figure out. There are too many smart people out there for this
not to be cracked and then immediately spread to everyone. I feel like there's
a Peter Thiel-esque explanation to it. Something about a lack of diversity of
thought and/or the lack of an incentive to encourage first-principles
inventions in software engineering (or a lack of investments into long-term
innovations which benefit everyone).

~~~
JD557
Based on the difficulties I had implementing recommender systems, I think it
boils down to two main problems:

1\. Evaluating recommender systems is REALLY hard. When it comes to
evaluation, recommender systems are very different from other machine learning
tasks:

Let's assume the classic methodology of collecting a dataset of events,
splitting it at a certain point in time to get a training and test set, and
checking the precision and recall

\- If your recommender system works as expected, you will influence what your
users do in the future, so your test set is probably not going to represent
what your users would actually do.

\- Having a precision and recall of 1 is actually bad. That means your
recommender system was perfect, but also useless (you only recommended stuff
that the user was already going to pick anyway).

One way to address this is to just use A/B tests and try to optimize some
business metric (e.g. number of purchases). This is usually "good enough", but
this will make your recommender focus on sales, not on user satisfaction.

There are also some other metrics that can be used[1], but there are so many
of them and some are not very practical to implement, so I guess that everyone
just goes with the A/B testing approach.

2\. Recommendations require an explanation

A lot of recommender algorithms are black boxes. Sure, you can write "this was
recommended based on users similar to you" when you use a collaborative
filtering algorithm, but that doesn't help much.

Recommendations without an explanation are not that useful. When a friend
recommends you a movie, he'll also tell you "why". Otherwise, it's really hard
to make users trust your recommendations (especially if the recommender system
recommends something outside of the user's "comfort zone")

I've noticed that a lot of sites have improved on this front though, and I do
enjoy those recommendations a lot more.

[1]: Herlocker et al., "Evaluating collaborative filtering recommender
systems"
[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.97....](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.97.5270&rep=rep1&type=pdf)

~~~
DonaldFisk
Whether someone likes a movie (or a song) is usually subjective, often
emotional, and can at best only be rationalized. There are exceptions, e.g.
documentaries. You could e.g. have the system recognize a preference for a
director, actor, or genre, and add that to the predicted rating. But i don't
think using that kind of information to make a prediction would add to a
collaborative system's accuracy.

~~~
thwarted
Look into the history of the Netflix Prize. There were two main factions,
those who used only the data provided and those who used metadata about the
films.

The Wikipedia page on it covers some issues around the privacy concerns.

------
rwieruch
For anyone who wants to get started with this, maybe this basic movie
recommender [0] implemented in JavaScript is a nice start.

[0] [https://github.com/javascript-machine-learning/movielens-
rec...](https://github.com/javascript-machine-learning/movielens-recommender-
system-javascript)

------
aasasd
Lists like that would probably be at home at Wikipedia.

------
rhizome
How well do any of these work?

~~~
chudi
My experience is that you can't have a generic good recommender system. It all
depends on your business but if you just want a mixture between using
navigation data and item data lightfm works pretty well for the generic case

~~~
rhizome
I don't really mean generic. Heck, I'd be curious to know which one is the
best in its most ideal use. That is, have any of them ever been really good?

I'm coming at this from the perspective that recommendation engines are, as
far as I can tell, practically a hoax.

~~~
chudi
They aren't a hoax, some type of recommendation engines works really well
especially the collaborative filtering types.

The reallity is that once you have a subset of items that matches your
behavior recsys are learning to rank problems in the broad sense, and any kind
of algorithmic feed (fb, Instagram, news, Twitter) is essentially a recsys.

There is a whole conference around these subjects with very good papers and
competitions, look at the different kind of approaches to the recsys18
challenge by Spotify at the ACM site

~~~
rhizome
But that gets us back to the "Theory is closer to practice in theory more than
practice" problem.

 _some type of recommendation engines works really well especially the
collaborative filtering types._

Exactly what I was asking about, because I'm not so sure. Furthermore, I think
it's a category error to include collaborative filtering here, which is not
automated/ML/etc.

