Which recommender system algorithm should i use? i need some advice for a project where i have to implement a recommender system for a market with very special characteristics. The scenario is as follows:


*

*Its a two-sided market, with buy and sell side. Both sides can make an offering of a product for the other side. Example: Buy Side can make a request in the market to buy a product. The sell side can fulfill this request, when they own this product. The same logic applies for sell side.

*There are no ratings for the products available. I can only work with implicit data (Buy / Sell history (when the request is fulfilled), request history (although it's not fulfilled from the counter part) )

*The occurrence of new products is rare. 

*Currently there is a pool of about 5,000 products, which can be requested by both parties (buy / sell)

*One product can be requested frequently from one user over time. (a frequent request of a product by a user is an indicator for a positive preference to this product).

*When a request is fulfilled from the counterpart, this request either disappears from the market or in some special cases it remains in the market and can be fulfilled by other users.

*A product can only be recommended to the other side, if and only if it is currently provided in the market. (e.g. a product can only recommend to the buy side, if the sell side offers the product currently)


I am pretty sure that i will need two models (one for sell and one for the buy side) to cover both preferences. My first idea is using weighted matrix factorization. But I am not sure if it will be much better, when only to recommend the product to the user who already buys / sells or requested this product in the past.
Can someone give advise?
Thank you :)  
 A: Not going deep in your business requirement, if I may generalise the problem statement, it looks similar to what Amazon or other e-commerce companies are trying to solve through recommendation.
Matrix Factorisation seems a good choice but most popular algorithms as described here and here are based on past user behaviour/history, which at first might not be very useful in your case. Based on my experience working on Recommendation System, you might want to look into Neighbourhood models or other methods based on user-user or item-item similarities. Cosine similarities and KNN models to find similar items are good starting points.
For example, if I buy a guitar from a website I would expect a guitar tuner or some similar products in the recommendations than a guitar of another brand. Below are some texts that you can read and understand how these models work and decide on their suitability in your application.
this, this and this
I personally prefer a very simple approach to solve the problem and a good evaluation technique to understand it's performance. 
Hope this helps.
