Amazon Personalize
Developer Guide

The AWS Documentation website is getting a new look!
Try it now and let us know what you think. Switch to the new look >>

You can return to the original look by selecting English in the language selector above.

HRNN Recipe

The Amazon Personalize hierarchical recurrent neural network (HRNN) recipe models changes in user behavior to provide recommendations during a session. A session is a set of user interactions within a given timeframe with a goal of finding a specific item to fill a need, for example. By weighting a user's recent interactions higher, you can provide more relevant recommendations during a session.

HRNN accommodates for user intent and interests, which can change over time. The Amazon Personalize HRNN recipe takes ordered user histories and automatically weights them to make better inferences. HRNN uses a gating mechanism to model the discount weights as a learnable function of the items and timestamps.

For more information about session-based recommendations, see Personalizing session-based recommendations with hierarchical recurrent neural networks.

Amazon Personalize derives the features for each user from your dataset. If you have done real-time data integration, these features are updated in real time according to user activity. To get a recommendation, you provide only the USER_ID. If you also provide an ITEM_ID, Amazon Personalize ignores it.

The HRNN recipe has the following properties:

  • Nameaws-hrnn

  • Recipe ARNarn:aws:personalize:::recipe/aws-hrnn

  • Algorithm ARNarn:aws:personalize:::algorithm/aws-hrnn

  • Feature transformation ARNarn:aws:personalize:::feature-transformation/JSON-percentile-filtering

  • Recipe typeUSER_PERSONALIZATION

The following table lists the name and default value of the HRNN hyperparameters and describes them. A Hyperparameter is a parameter of an algorithm that you can adjust to improve model performance. The process of choosing the best value for a hyperparameter is called hyperparameter optimization (HPO). For more information, see Hyperparameters and HPO. The table also provides the following information:

  • Range: [lower bound, upper bound]

  • Value type: Integer, Continuous (float), Categorical (Boolean, list, string)

  • HPO tunable: Can the parameter participate in HPO?

Name Default Value Range Value Type HPO Tunable Description
Algorithm
hidden_dimension 43 [32, 256] Integer Yes The number of hidden variables used in the model. Hidden variables recreate users' purchase history and item statistics to generate ranking scores. Specify a greater number of hidden dimensions when your user-item interactions dataset include more complicated patterns. Using more hidden dimensions requires a larger dataset and more time to process. To decide on the optimal value, use HPO.
bptt 32 [1, 32] Integer No The back-propagation through time. Back-propagation through time is a technique that updates weights in recurrent neural network based algorithms. Use bptt for long-term credits of delayed rewards to early events. A delayed reward can be a purchase made after several clicks. An early event can be an initial click. Even within the same event types, it’s a good idea to consider long-term effects and maximize the total rewards. To consider long-term effects, use larger bptt values. This requires larger datasets and more time to process.
recency_mask true true/false Boolean Yes

Determines whether the model should consider the latest trends. Latest popularity trends might include sudden changes in the underlying patterns of interaction events. To train a model that places more weight on recent events, set recency_mask to true. To train a model that equally weighs all past interactions, set recency_mask to false. To get good recommendations using an equal weight, you might need a larger training dataset.

Featurization
min_user_history_length_percentile 0.0 [0.0, 1.0] Float No The minimum percentile of user history lengths to include in model training. History length is the total amount of available data on a user. Use min_user_history_length_percentile to exclude a percentage of users with short history lengths. Users with a short history often show patterns based on item popularity instead of the user's personal needs or wants. Removing them can train models with more focus on underlying patterns in your data. Choose an appropriate value after you review user history lengths, using a histogram or similar tool. We recommend setting a value that retains the majority of users, but removes the edge cases.
max_user_history_length_percentile 0.99 [0.0, 1.0] Float No

The maximum percentile of user history lengths to include in model training. History length is the total amount of available data on a user. Use max_user_history_length_percentile to exclude a percentage of users with long history lengths. Users with a long history tend to contain noise. For example, a robot might have a long list of automated interactions. Removing these users limits the noise introduced in training. Choose an appropriate value after you review user history lengths using a histogram or similar tool. We recommend setting a value that retains the majority of users but removes the edge cases.

For example, min_hist_length_percentile = 0.05 and max_hist_length_percentile = 0.95 include all users except ones with history lengths at the bottom or top 5%.

HRNN Sample Notebooks

The following Jupyter notebooks show how to use the HRNN recipe.

On this page: