Hi all Say I have a set of ecommerce data (views, purchases etc). I've built my model using implicit feedback ALS. Now, I want to add a little bit of "smart filtering".
Filtering based on not recommending something that has been purchased is straightforward, but I'd like to also filter so as not to recommend "highly similar" items to someone who has purchased an item. In other words, if someone has just purchased a laptop, then I'd like to not recommend other laptops. Ideally while still recommending "related" items such as laptop bags, mouse etc etc. (this is just an example). Now, I could filter based on metadata tags like "category", but assuming I don't always have that data, then simplistically I have the option of filtering out products based on those that have high cosine similarity to the purchased products. However, this risks filtering out "good" similar products (like the laptop bags) as well as the "bad" similar products. I'm experimenting with building a second variant of the model that effectively downweights "views" to near zero, hence leaving something sort of like a "purchased together" model variant. Then recommendations can be made using this model when a user purchases an item (or perhaps a re-scorer that is a weighted variant of model A and model B but that tends to weight model B - the purchased together model - higher) Are there other mechanisms to tweak the ALS model such that it tends towards recommending "related products" (but not "highly similar of the exact same narrow product type")? Any other ideas about how best to go about this? Many thanks Nick
