Can AWS Personalize be optimized/segmented for cachable recommendations?

0

I am considering implementing AWS Personalize recommendations on a news site, to recommend articles that are relevant to the user. But scalability is important to us, so today we make heavy use of CloudFront to deliver cached pages. That means all users get the same page, with the same recommendations. How can I implement personalized recommendations without ruining this cachability?

Does AWS Personalize offer anything similar to segmentation, as described in the below article? I.e. categorize a user into one of 10-or-so groups (preferably automatically), and then deliver recommendations that are relevant to that group as a whole, rather than that one user.

https://wpengine.com/support/personalization-user-segmentation-page-cache/ (Not to be confused with AWS Personalize's user segmentation recipes, which seem to be a different thing.)

asked 9 months ago79 views
2 Answers
1

Some Amazon Personalize recipes such as User-Personalization are designed to personalize at the individual user level. From a relevance perspective, this is much more effective than "personalizing" to large groups of users based on shared interests.

Caching personalized content, such as content recommendations, that is unique to each end-user is more difficult to do effectively with shared caches and has lower cache hit rates. However, you can still leverage private caches (browser/device cache) and use shared caches (CloudFront and/or API Gateway caches) to reduce repeat origin inference calls for personalized responses. The key is to use a cache key that incorporates the user's identity.

Non-personalized recommendation use cases can be cached more aggressively. For example, related items (SIMS & Similar-Items recipes) and popularity (Popularity-Count recipe) can use longer cache TTLs and shared across all users since they are not personalized to the individual user. The one caveat to this, though, is if a Personalize filter is being used that filters based on the current user's recent interactions or user metadata.

The Personalization APIs project provides a deployable solution that implements APIs with multiple layers of caching (private, edge, gateway) that can be configured at the personalization use-case level.

James_J
answered 9 months ago
0

AWS personalize GetRecommendations call over a campaign is very fast (<10 ms) if Campaign TPS is set correctly(else auto TPS scaling impacts performance temporarily. I would suggest to cache individual news components content and stitch them together at run time as per recommendations from AWS personalize. Do note that near real time recommendations through ingestion of realtime feeds using put* API calls is a great capability which may be very useful, especially in your use case. Realtime feeds also removes need to retrain model with full data at a frequency hence saves cost too. With realtime feeds model keep updating itself without need to full retraining.

If you really want to get recommendations for a group of users together then you may try below but I would not advice this approach. It may degrade quality of recommendations and ability to use realtime recommendations. AWS personalize recipes like "User-Personalization" uses user's interactions, user's metadata, items metadata all to learn user + item similarity. It also uses chronology of events to learn about user. Clubbing users may degrade quality. You can still give it a try and use it if quality is acceptable to you.

  1. club users in groups using a some modeling technique. Make sure number of groups are large enough and more than minimum users to train an AWS personalize model
  2. Create a dummy user for each group. You will have to merge metadata of users in group in some way to create a value for this user.
  3. Feed interactions of everyone in a group as interactions of dummy user created for that group
  4. train "User-Personalization" recipe. on this data
  5. create a campaign for realtime recommendations or use batch inference to cache results.
  6. at runtime find which group user belongs to and find dummy user used to train personalize for that group. use this user's recommendation to serve content.
answered 9 days ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions