0

I am using AWS personalize for making a recommendation system, specifically SIMS model (item to item similarities model) so when I input ITEM_ID the output will be a list of the most similar items. until now things are very smooth but:

now I have many SELLER_ID presents as it is an e-commerce application not only one store. the problem here is that I want recommendations only for the store the user in. For instance: I want recommendations [rec1,rec2,....etc] for item only available in a store, not other stores as if you are in store STR0003 then you want recommendations from store STR0003 only not store STR0005 or STR0006.

I have tried many solutions but in everyone I am facing hassles:

Solution 1:

add SELLER_ID as metadata in ITEMS.csv data : SELLER_ID column will be for each row :[STR0001|STR0002|...] and then using a filter to filter results depending on the SELLER_ID: I enter STR0003 then output items available in that store.

  • problem1 : characters are limited to 1024, some products present in 200 stores which make it impossible to reduce characters to 1024,(even using regex).

  • problem2 : we suspect that filters are , not free! we pay for it. I searched for many docs to see if filters are free or paid but didn't find any.

Solution 2:

adding SELLER_ID as metadata in INTERACTION.csv so including it in context={} in get_recommendations and output results.

  • problem in that solution:

in my data. I don't have sufficient SELLER_ID in my data to include for each row in INTERACTION.csv.

I am asking if anyone faced the problem of MULTI VENDOR RECOMMENDATION. how could he/she solve it and what is the best approach for this problem? also is using filters free?

thanks in advance

Amr Mahmoud
  • 122
  • 1
  • 15
  • After taking a quick look into it, I believe there is no good solutions for your use case, using just Personalize. In times before Personalize Filter feature, people were implementing filtering manually in lambdas, basing on the data in their database. Maybe that would work for you? Always ask for 2 times more similar items and then filter results in Lambda function. – PatrykMilewski Feb 23 '21 at 14:43
  • You have to keep in mind, that Personalize is very high level solution, so there are cases, where it might be not the best pick to choose and competitors products might be better or if you have some ML background, implementing it yourself in AWS Sagemaker could be the solution – PatrykMilewski Feb 23 '21 at 14:45

1 Answers1

0

Personalize supports these types of multi-tenant deployment models through dataset groups. You would create a separate dataset group for each tenant/vendor/seller and then upload and/or stream interactions, items, and users into the appropriate datasets for each tenant's dataset group. Each tenant will have their own solutions and campaigns as well. Dataset groups give you the necessary tenant isolation expected by customers running their businesses in this type of system as well as the flexibility to setup and customize schemas, solutions, filters, and campaigns for each of your tenants.

Note that the default quotas/limits for Personalize are designed for the single customer/tenant configuration but limit increases can be requested in the AWS console or through support to scale a multi-tenant model supporting hundreds vendors as you described.

James J
  • 621
  • 3
  • 6