October 14, 2007

A few days ago, I blogged about how we’re using Amazon recommendations.

However, the Amazon recommendations are not perfect for a few reasons:
1) a lot of books don’t have any recommendations from Amazon
2) Amazon only gives 5 recommendations, and generally to popular books, which BookMooch doesn’t have available

I spent today devising a recommendation system based on BookMooch’s own data, and it’s now up and running.

Next to most books, you’ll now find a “Recommended:” field, and a drop down list of up to 10 books.


The last choice in the drop down goes to “show more recommendations”, which lists up to 40 recommended books:


The first 10 recommendations are the same as on the previous page’s drop down list box.

On this page, each recommendation has a HIDE button (if you’re logged in). Click that, and that recommended book will disappear forever from all recommendations. In this way, you can remove books you definitely don’t like, or have already read, from the recommendations BookMooch gives you.

One other note: a lot of the recommended books are very popular, and have long wishlists, and many givers & moochers. The screen looked awful with all that noise, like so:


now, any list of user links on the book details that is more than 3 people long is instead displayed as a drop down list box, so the book above now looks a lot cleaner:


The recommendations are quite complicated to generate (I’ll explain how they’re created a bit lower in this blog entry). If you go to a book that hasn’t yet had its recommendations generated, the page will take an extra second or two to load as this is done. the result is then saved for 7 days, after which it is refreshed.

Why refresh the recommendations so often? Well, because I wanted the recommendations to suggest books that are available at BookMooch, not that you have to buy. That’s the biggest problem with the Amazon recommendations: 5 suggestions isn’t much to go on.

The BookMooch recommended books have to be available from at least one person in order to be recommended. Of course, that person may not want to send to your country, or may give it away in an hour, but at least this means the recommendations are books that are showing up on BookMooch, and I’m finding this to work quite well, with BookMooch suggesting usually good recommendations that are consistently available, or else recently available.

How the recommendations are built:

* first, a list of members who have this book mooched, given or wishlisted or save-for-later or have in their inventory
* then, all the related editions to the current book are also combed through in this way, to build a big list of “related members” for this book
* for each “related member” we then look through all the books they have mooched, given, wishlisted/saved-for-later or have in their inventory and compile a big list.
* we sort the list of related books by how often they appear in the big list, and discard any book that doesn’t occur at least 5 times
* we remove all books that aren’t currently available, or that have exactly the same book title (ie, alternate editions)

Currently, recommendations for all the books in BookMooch are being built in the background so that there’s no delay when you go to the book the first time. This will take about two weeks, but in the meantime, you will be able to see the recommendations, you just might have to wait a few seconds for the book details page to load.

18 Responses to “Recommendations”

  1. Esther said

    Another great feature!

    However, I would like at least an “undo” button for hiding books, better still to have a list of all your “hidden” books somewhere, so you can go through the list occasionally and see if you still agree. It’s to easy to hide a book by mistake if there’s no “undo”.

  2. Greg said

    I like it very much. It would be even cooler if it could use the LibraryThing ‘related editions’ thingy to avoid duplicates.

  3. Michelle said

    I love, love, love it! I’ve been hoping for a feature like this for awhile. Is it possible to also have the option of seeing recommendations for books not available on Bookmooch?

  4. Clarissa said

    I like being able to see how popular a book is, and how often it is posted, by the number of people who have it on their wishlist and the number of previous mooches. With the new dropdowns, you can no longer see this at a glance.

    Perhaps you could put a number next to each of the dropdowns, so you can see how many people are in each without having to click.

    It could look something like:
    Previous givers: 20 [dropdown] [Go >]
    Previous moochers: 20 [dropdown] [Go >]
    Wishlists: 30 [dropdown] [Go >]

    This would be really helpful.

  5. Taneli T said

    Thanks, this sounds great, and it’s a feature that has been wished for for a long time! I was wondering today why the order of things in the book details page was changed, but this explains it.

    I like Esther’s and Clarissa’s suggestions: a page for hidden recommendations would be great, as well as a total number in front of previous givers/moochers/wishlists popups.

  6. melissasyd said

    John, my affection for you just exploded…. right along with my wishlist πŸ™‚

  7. Yoav said

    Just a thought about the clutter and display of previous moochers and whishlisters:

    I think that a drop down is less suited to reduce the clutter.
    Maybe a list like this will be better:

    Person1, Person2, Persone3…[Show more]

    The show more will display the rest.
    (I think that it’s more common in UI’s).

    Regarding the recommendation themselves, I got a weird one:
    “Growing a Business” by Paul Hawken gave me the following results:

    *Unleashing Feminism: Critiquing Lesbian Sadomasochism in the Gay Nineties/a Collection of Radical Feminist Writings
    *Wicked: The Life and Times of the Wicked Witch of the West
    *Tractatus logico-philosophicus (which is in french)

    Maybe you should limit recommendations to the same topic and/or same language?

    Anyway, a cool feature is always welcome. THANKS!

  8. Trish LaRue said

    This sounds like a great feature, cleverly programmed. Can’t wait to try it. Thank you, John! Smooch.

  9. Aaron said

    Great progress!

    I think you’re recommendation system might be biased in two ways. First, it puts more wait on the “votes” of members with a lot of activity than on members with little activity. I have no idea how much of a problem this is, but one simple way to fix it would be to divide each vote by the number of books that in the user’s (inventory+wishlist+history+etc…). Unfortunately, the simple method would bias it towards new members, so it’s probably not any better.

    Secondly, it is biased towards common books. This could be solved in the same way (by dividing its vote by the number of books that it links with), but that would probably bias it towards rare books. Oh well.

    Heck, your system probably uses all integer math and is more efficient. Oh well, whatever works, right? Just some food for thought. πŸ˜€

  10. Aaron said

    Oh, one thing I’d like to see added: recommendations per user. It could work off of your existing data pretty easily. You’d just take all of the books on a given user’s wishlist and save-for-later list, find all of those book’s recommendations, sum the counts, and sort. πŸ˜€

  11. Heather said

    Woah. You must be working pretty dang hard, John!! *is verrrry giddy about the recommendations*

  12. Meredith said

    I LOVE the new recommendations! Thank you!

    I do not like the new way of listing the people who have a book on their wishlist/given/recieved. I like to know at a glance if there are three or thirty of us that have a book on our wishlist. It gives me a sense of how likely I am to get it. I also like to know at a glance if a book has been traded often or not. If a book comes up frequently, I may wait for it. If a book rarely comes up, I may choose to buy it rather than waiting.

    I also like to know where previous moochers and givers are from. If there are several people in Canada who got the book in the past, there is maybe a greater chance that a Canadian will put it up to be mooched again. I often do a “find” in my browser for Canada, to flip between all of the Canadians listed on a book’s details page.

    The new format makes both of these uses more difficult.

    The new format still allows me to look at the inventories and wishlists of people who have a book on their wishlist or who have mooched or given a book I am interested in, which is also very important to me.

    Thanks for all of your hard work! The site is great!

  13. Amtep said

    The recommendations might improve if you weigh the mooches, wishlist, and save-for-later more strongly than the inventory and the books given.

    For users that list most books after reading them, the significance of the inventory and the wishlist will be about the same. But for users that keep extensive libraries and that only list the books they “weed out”, the books in the inventory will be the ones that DON’T fit with the ones they want. So those books would be anti-recommendations.

    Perhaps it would be best not to look at inventory or books given at all. That might speed up the system too πŸ™‚

  14. Holly said

    Thanks for all your hard work John!

    I like the drop down recommendations. I’m always looking for new authors to read.

    I really don’t like the rest of the drop down lists. They do make the page look less cluttered, but I miss being able to see everything at a glace. The suggestion for the numbers in front of the drop downs is a good one. Maybe you could have a “show more” or “show all” choice as well.

  15. Esther said

    If you look at the recommendations of less poular books, you might actally get a very big piece of a single persons inventory.

    I clicked through a couple of times starting from my own wishlist, and at one point I got my own inventory back.

    That would explain that you get very weird recommendations. My wishlist might be a strange mix (cognitive science, philosophy, cooking, parenting, buddhism) but there is definitely more system to it than to my inventory. Maybe it is a good idea not to use the inventories for this.

  16. Stephanie said

    I love the idea of having recommendations, but I went poking through my wishlist and looked at 10 books more or less at random, and none of them seem to have recommendations. Have they not been generated yet, or am I missing something?

    Secondly, I agree with the person who said that for some of us, books that are in our inventory or that we’ve given may be anti-recommendations. For me, they may not be that strong, but for sure they shouldn’t count as recommendations, because in that case I’d be keeping them!

    I agree with the suggestion of just not counting inventory or books given, for that reason.

    Thanks for all the work you do and keep on doing for bookmooch!

  17. […] 23rd, 2007 A week ago, I changed the way BookMooch looked for first-time visitor outside an English-speaking […]

  18. Kat said

    Thanks for all your hard work! I really love your site, and if theres anything I can ever do to help let me know! πŸ™‚

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: