How to find most popular product
This is more like a general, brainstroming query rather than a question. So here it goes. Suppose, I have 1000 items which I can sell on a website at any given day. On any given day, I can sell (lets say) only 100 items.. And lets say, the obvious goal is to sell the maximum number of products any given day (maximimzing revenue).. What i开发者_JAVA百科s the best way to solve this problem. The problem being.. how do i select which 100 products of 1000 to select??I am sure, with this information it is pretty hard.. If I have to solve it using machine learning, which category will this problem fall into. This is not supervised learning.. ? Basically, I am just looking for the people around here to throw me some ideas.. :) Thanks
This is a variation of the multi-armed bandit problem. The most basic way of optimizing your profit is to pick a number ε є [0,1], then for each of the products you select choose the most popular one with probability (1-ε) or random with probability ε. This way, over time, you will have increasingly accurate popularity estimates for each product, while keeping your total profits high. More sophisticated approaches include tracking upper confidence bounds on product popularity.
Naive approach is store for each product the probability of being sold (how many times shown how many time solt). And based on those probability select 100 among 1000. So any product has a change to be selected and the changes is equal to its propability. BTW for this probability it is better to use lower confidence bound. So product which is sold 70 from 100 times is better then product which sold 7 from 10.
I was inspired by this post to implement bunch of multi-arm bandit algorithms in Hadoop as part of my open source Hadoop based machine learning project avenir on github. I also posted a blog recently which is about finding optimum product price using some the implemented algorithms.
http://pkghosh.wordpress.com/2013/08/25/bandits-know-the-best-product-price/
https://github.com/pranab/avenir
well where would you get ur data on the items from? If for example you had some sales figures for each item you would simply create a column for that in the database then SELECT * FROM items ORDER BY 'number_sold' DESC LIMIT 100
and update it with +1 every time an item is sold
精彩评论