0

AWS Personalize: Items added via PutItems events are not showing up in recommended items

We're adding new items to our dataset using the PutItems events API.

Upon upload, we retrain our solution (update only, not full) but we notice that not all items are returned in the GetRecommendation calls. On average, about 60% of new items are returned, and the rest are not showing up at all.

The PutItems API doesn't return any errors so it seems like they are ingested correctly.

To further debug, we call PutItems again on the missing items only, retrain our solution and then more items show up in recommended items but still not all of them. So it's not an issue with our filters. It seems that the PutItems call fails silently because no errors are returned.

What is the best practice here? Should we try PutItems multiple times for each item? Can we paginate through all of our recommended items and make sure all are being "indexed". We have about 1,000 items. How can we ensure that all of our items are correctly indexed and could be returned by the GetRecommendations call?

Thanks!

1 Answers1

1

You can verify that items are being successfully ingested into the items dataset by exporting the items dataset and inspecting the export file(s).

New items are not guaranteed to be included in recommendations. Personalize uses a feature called exploration to explore including new/cold items in recommendations to learn if users will respond positively to those items with subsequent interactions you send to the service with PutEvents. Exploration also balances recommending cold items with other items that are recommended based on behavioral data available to the model at the last full retraining (i.e., exploitation). Although you can control the weight of exploration against exploitation with the explorationWeight inference parameter, this weight should not be interpreted as a percentage.

If you want more control over how many recently added items are included in recommendations, consider using a promotional filter to ensure a percentage of recommended items have been created within a recent time window.

INCLUDE ItemID WHERE Items.CREATION_TIMESTAMP > $NEW_THRESHOLD

Where $NEW_THRESHOLD can be a unix timestamp from a point in the past where you consider items to be new.

You can also influence or weight newer items in recommendations (against relevance) by using the CREATION_TIMESTAMP column as an optimization objective.

Exploration is only supported by the user-personalization, recommended-for-you, and top-picks-for-you recipes.

James J
  • 621
  • 3
  • 6