NicolasHug / Surprise

A Python scikit for building and analyzing recommender systems
http://surpriselib.com
BSD 3-Clause "New" or "Revised" License
6.28k stars 1k forks source link

trainset do not recommend new products #460

Open BabulalS opened 1 year ago

BabulalS commented 1 year ago

Hey NicolasHug

I am utilizing Surprise SVD package for a usecase where I have to recommend a new product (Cross sell) to a customer that he has not purchased.

Reader is set as (0,1) as the measure/rating is scaled and fall between 0,1 and hyperparameters are tuned using randomized search. I am getting Biased=True while optimizing and hence tuned these hyperparameters (n_factors, biased, n_epochs, lr_bu, lr_bi, lr_pu, lr_qi, reg_bu, reg_bi, reg_pu, reg_qi)

  1. Using algo.test(test), here test is build using build_testset() I have created 24 months of train data and one complete new test data and when I predict, I get predictions for same products that he has already purchased. I am assuming with the matrix interactions, the algo should have learned new products to recommend (at least 50-65%) but all recommended are same. precision and recall are good but it is calculated between the customer and the products he has already bought earlier (no new products recommended)

  2. Using algo.test(test), here test is build using build_anti_testset() This gives the output with completely new set of products (as its anti_testset()) but calculating precision and recall is not helping business because the true values is either mean or 0 which is having too less precision and high recall or the vice versa while looking at different threshold (0.1 to 0.85).

I am looking for recommendations if there are new products recommended to a customer with at least 50-65% new ones that he has not bought and can show case precision and recall to business. please do guide me where I am going wrong.