With books, actioning a recommendation involves
1) getting a copy of the book (digital or physical, both cost money or at minimum the time required to pirate),
2) starting to read it (with the sunken cost of time and/or money + the drive to "give it a chance" both looming over your shoulder, costing you more time),
3) eventually either getting to the end or swallowing your pride and bailing.
I think you'd start to see actually useful systems here if you could even eliminate step 1; make it easy as clicking in from a recommendation directly into reading mode.
Also solves a critical issue for the engine: gauge recommendation quality by how soon people click out of the rec, as opposed to waiting for the user to go through steps 1-3, and care enough to come back and provide a rating. Way more data to work with.
Of course, this all skirts the Actual Problem: the amount of IP law you'd have to trudge through in making enough books this accessible.
The website is super old/limited, but if all books were that trivial to access + click through, I think we'd see something more interesting here. Made me wonder how hard it'd be to convert the entirety of Project Gutenberg into that sort of Web 1.0 format automatically.
Poorly, its either shovel so much shit against a wall to see what sticks (youtube) or you sorta watched this for 10 minutes to see if you liked it but you didn't but here is more (netflix).
Curated lists made by humans are still nicer.
5 billion YT videos, comprising 1 billion hours, are watched every day, a meteoric rise ever since they improved the recommendation engine.
That recommendation engine has also been accused of contributing to the rise in polarization and conspiracy theories world-wide. So it may not be a force for good. But it's damn powerful.
However, if YouTube was as good at recommending books as it was recommending videos, I would never use its book recommendation algorithm. You necessarily have to get almost every book recommendation “correct” for it to be seen as actually useful by the user.
When I see a book recommendation, I read the associated review (if it has one), read other people's reviews, look at the author and the blurb, and, yes, even the cover.
That tells me much more than a YouTube thumbnail, with only a little more time (but of course I'm going to put more time into choosing a book that might take me two weeks to finish). Indeed, my initial filter is probably much the same as a YouTube thumbnail: I skim past many recommendations based on the genre and author alone.
I think if the Times Book Review always wrote reviews in which 1 out of 15 of them made me thing "I need to get that book," I'd be amazed at how much they "get" me. I wouldn't bother with anything else. Every 15 recommendations lands me another "must-read?" Sign me up!
The problem listed in the article is that Goodreads is no where near 1 out of 15.
One method, collaborative filtering with latent factor analysis, popularized by its efficacy in making recommendations on Netflix, is to use matrix multiplication to solve the problem.
E.G. Let’s say you have all users (rows) x all books (columns), in a massive sparsely populated matrix, where the value is the rating that user gives a book.
To make recommendations, the goal is to “guess“ what a user would rate a book they haven’t read, and if your guess is they would give it 5 stars, and then you recommend it, and the user gives it 5 stars, it’s a good recommendation.
The “latent factor” idea is breaking the problem up, so in order to compute the rating matrix that is the final size N users by M books, you split it into:
N users x D latent factor (cross product) D latent factor x M books = N users x M books
It then becomes a machine learning problem, using a loss function plus gradient descent, to solve for that D latent factor.
Customers with a similar latent factor, will have similar taste.
Once you have the latent factors, you find the nearest neighbors (the closest other latent factor vectors measured by dot product or cosine similarity), to compute the nearest books. The vectors that multiply together to give the highest rating, will be the best recommendations for the user.
Like, even when you have access to the site's entire API and can write your own client for it, there's still the fact that their recommendations are generally better.
It sounds like an extremely important value-add. There are many sites that I will only use the app for because that is where the recommendations are shown. But to me taking a user profile and an article and spitting out a list of articles seems like magic.
I also find it weird that in 2020 Goodreads is the status quo for book recommendations.