Reputation: 6375
I am attempting to use item based collaborative filtering for product recommendation. The matrix is all 1s and 0s based on whether or not a buyer purchased an item, and I am using cosine similarity to identify similar products.
In the data I am testing this on, there are over 2K products, and many were available for different amounts of time. Some have been available the entire time, some were available in the past but are no longer available, and some have only recently become available.
I've noticed that products that have been available for a long time tend to match up to other products that have been available a long time (popular greatest-hits sort of items). Similarly, items that are less popular and have not been available as long tend to get good matches that are also not quite as popular. In many cases, the popular products were available at times when the less popular products were not.
http://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf This paper about Amazon has pseudo code that seems to suggest only considering people who bought item X when looking for items similar to X (although that might be a misinterpretation on my part). This corrects the issue to some extent, but might even over-correct the issue because it ignores the many people who may have bought item Y and not bought item X.
Has anybody attempted item based collaborative filtering under these conditions, and do you have any advice on how to deal with products that have had different availability?
Upvotes: 0
Views: 205
Reputation: 4792
I recall playing with mahout library on some similar dataset and using a recommender. I ended up injecting domain-specific knowledge into recommender engine as described in 'Mahout in action book' (chapter 'Injecting domain-specific information'). I made a similar thing with 'IDRescorer' class (refer to mentioned book to understand context) which drops out some of recommendations based on the logic you provide and also could boost recommendation rate based on some other logic. In my case I just decided to drop out recommendations of items which are not available anymore and boost recommendations of items which are similar to those of interest for specific user (specified in user's profile). I beleive you could use same ideas for your task.
Upvotes: 0