0
$\begingroup$

I want to build a recommender for my e-commerce service.

The main problem is that every item in the system is unique, and can be bought only once (so this item should be not recommended to anyone after the sale).

Service is similar to the eBay, where each item is unique, and, despite the fact that seller can publish the same item again, it will be considered as a new item in the system.

Also, there are not much common information between each item (the most common is the seller ID and the category ID), so I can not easily find similar items based on what user had purchased before.

What techniques can I use in this situation?

$\endgroup$
2
  • $\begingroup$ Are users able to purchase more than one item or, alternatively, multiple unique items over some period of time, e.g., six months or one year? If so, you could base a recommender on the co-purchases occurring within that time span. Another option would be to cluster users and base a recommender on the co-purchases occurring within a cluster. $\endgroup$ – Mike Hunter Dec 14 '16 at 17:30
  • $\begingroup$ Just updated the description, the buying and selling process is similar to eBay. $\endgroup$ – coldmind Dec 14 '16 at 18:06
2
$\begingroup$

As you point out, since each item can only be bought once, you cannot use that information to get a typical recommender system algorithm to discover categories among your items. What you could do, however, is assign certain labels to each item according to your own best judgment, or that of other human raters. (In theory I suppose you could try to solve this with machine learning as well, but that seems like it would require fairly cutting-edge, or even currently non-existent algorithms.) You could then train a recommender system on those labels and the purchases that people make. That is, you would fix one half of the recommender system that you'd normally get from data (the part where it would discover labels or categories that are predictive of what users will like) while you leave the other half to be learnt still (where it learns how each category influences a given user's preferences).

Alternatively, perhaps you could introduce a system of "likes", or something similar whereby users can rate items independent without (necessarily) buying them? If you get enough data from that, you could just use a regular recommender system that discovers its own labels without supervision (from similarities between users' ratings).

$\endgroup$
0
$\begingroup$

This is the typical setting of collaborative filtering. For example, in the Netflix prize, a reasonable assumption is that each person saw a set of movies once and that they should not be recommended movies that they have seen already.

There are a large number of collaborative filtering algorithms that could be used to address this problem. A simple one is related to Amazon's "Customers that bought this also bought that". This method finds the items most similar to each item as measured by how frequently they are purchased by the same person. For example, Harry Potter 1 and 2 are similar because they are often bought by the same person. To give a recommendation to a particular person, you would find which items are similar to the ones they have already purchased. This method is typically called a item-based collaborative filtering.

$\endgroup$
2
  • $\begingroup$ Each item is unique, so it can not be "bought together" by definition. I somewhat aware about Amazon's approach for this example, but association rules will not work for this case. $\endgroup$ – coldmind Dec 14 '16 at 18:01
  • $\begingroup$ I see. In that case, you will need some way to assess the content of the items. A similar approach could be used with the category IDs. If the items have images or text descriptions, you could do unsupervised learning to derive features to use in a classifier. $\endgroup$ – Andrew Dec 17 '16 at 0:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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