Lets say I have a library of items. I want to show some of these items to the users and I want to show what I think would be the best items to the user. I don't have access to the preference of the other users (so can't do collaborative filtering) and I also can't link the items together because they share common features (so can't do content based filtering). The only thing the user can do is when presented an item, the user can like or dislike it. The user can also see an item an infinite number of times

What I'm picturing is a simple system of assigning a value to each item. Every time you like the item, the value gets incremented, every time you dislike the item, the value gets decremented. I would pick a batch of items to show to the user based on the highest score. But then I can run into the issue of seeing the same item over and over and would like to organically introduce items the user has never seen before. Maybe this system is too simple.

This might sound like the stupidest system ever but its the first iteration. My plan would be to eventually use the preference of all the users (collaborative filtering) to affect that item value.

Is there some articles or informations available about such a simple system ?

Thank you


1 Answer 1


The simple system you are describing is called Multi-armed Bandit, where exploration (trying out new arms / items) is balanced with exploitation ("pulling" the most successful arm / item). It has no builtin mechanism to prevent showing the same item over and over, so you would have to add that based on what the practical requirements of your project.

The wikipedia page on the book Reinforcement Learning: An Introduction by Sutton and Barto will get you started.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.