Product Propensity models
Algorithm name: Product Propensity
Applies to: B2C
The Product Propensity algorithm helps identify customers who are most likely to purchase a specific product by analyzing their historical behavioral patterns.
Also commonly known as: Purchase propensity, Category purchase propensity
The Product Propensity model explained
The Product Propensity model helps determine the likelihood a customer purchasing a product. The model uses a combination of profile attributes and historical behavioral attributes of customers to determine their likelihood to purchase the product.
Parameters of the model
To create and configure the model the following parameters must be defined:
-
Algorithm: Choose the Product Propensity algorithm in Unity.
-
Lookback window: You must also set a lookback window (number of days to analyze historical data)
-
-
Queries: The queries you select generate the dataset used for both model training and scoring.
-
Inputs: Inputs are attributes from the Oracle Unity data model that the model uses during training and scoring.
-
Outputs: These are the data objects and attributes from the Unity data model that store the model's output values. You can customize the default output mappings if needed.
Model inputs
The Product propensity model uses the following data. For the model to successfully run, check the sections: key input considerations, key data guidelines and best practices.
Attribute from Unity data object |
Attribute name in the query |
Unity Data object |
Description of the attribute |
Data Type |
Must have? |
---|---|---|---|---|---|
ID |
ID |
MasterCustomer |
MasterCustomer identifier |
String |
Yes |
Gender |
Gender |
MasterCustomer |
Helps assess gender based purchase patterns |
String |
|
City |
City |
MasterCustomer |
Helps assess regional purchase insights |
String |
|
Age |
Age |
MasterCustomer |
Helps assess impact of age on purchase behaviors |
Integer |
|
AOV |
AOV |
MasterCustomer |
Intelligent Attribute denoting the Average Order Value of a Master Customer |
Float |
|
days_since_last_purchase |
days_since_last_purchase |
MasterCustomer |
Intelligent Attribute denoting the days since the customer last purchased |
Integer |
|
days_since_last_purchase_bands |
days_since_last_purchase_bands |
MasterCustomer |
Binned value of the above variable |
String |
|
total_spent_amt |
total_spent_amt |
MasterCustomer |
Intelligent Attribute denoting the total Order Amount |
Integer |
|
total_spent_amt_bands |
total_spent_amt_bands |
MasterCustomer |
Binned value of the above variable |
String |
|
top_product |
top_product |
MasterCustomer |
Intelligent Attribute denoting the top product purchased by customer |
String |
|
top_brand |
top_brand |
MasterCustomer |
Intelligent Attribute denoting the top brand purchased by customer |
String |
|
SourceID |
SourceID |
Customer |
Source identifier |
String |
Yes |
ProductID |
ProductID |
Event |
Product identifier for which the propensities will be calculated for |
String |
Yes |
Type |
EventType |
Event |
Engagement events of the customer |
String |
Yes |
EventTS |
EventTS |
Event |
Timestamp of when an event occurred |
Timestamp |
Yes |
Key considerations on model inputs
-
Data schema checks: If an attribute is unavailable, assign a constant default value across all records. This allows the model to validate the input schema. This will not impact the model outcomes as the attribute will be excluded during feature importance analysis due to lack of data variance.
-
Purchase events: Ensure that 'Purchase' events are included in the ‘EventType’ attribute for the model to identify past purchasers as part of the target variable.
-
Any and all events preceding a purchase is analyzed by the model; In case, you need to exclude some events from the model, please exclude the same using data query
-
-
Product ID: Product ID can have multiple products. The model will help identify potential purchasers for every product in the dataset as long as the model training requirements are met.
-
Model extensibility: The model can be run at a category level as well to identify category purchase propensity. In this case, the ‘ProductID’ needs to be mapped to the right identifier attribute like ‘Category ID’ in the data query
-
Schema consistency: Ensure that the attributes used in the query exactly match the specified 'Attribute name in the query' (in the above table) to avoid schema mismatches during model execution.
-
Non-mandatory attributes: These attributes, when available, can enhance the model’s learning and improve its predictive performance. However, if they are missing, the model will still leverage other available attributes to make predictions.
Key input data guidelines for Propensity models
-
Label requirements: Ensure the model data contains at least 500 positive signals (purchasers) and 500 negative signals (non-purchasers) for every product
-
Data requirements:
-
It is recommended to provide at least 50,000 data records for model training. However, it is important to bring as much data as possible to build a robust model
-
It is recommended to keep the dataset under 10M records (soft limit). This limit can vary for every model, but maintain a manageable size helps ensure efficient model performance.
-
It is recommended to keep the number of products under 20 for product propensity model
-
Best practices
-
Use case first approach: Begin with a specific use case to determine the data required for solving the problem effectively.
-
Review model data requirements with both business and data teams to ensure alignment
-
-
Contextual parameters: Choose model parameters (such as lookback window) based on the business/ use case context.
-
Query validation: Test both the training and scoring queries to validate that they return data and inspect sample records resulting from the query
Model outputs
Output values will be stored in the CustomerProductPropensity or ProductPropensity_Score data object. You can review the propensity score values for each customer in the PropensityScore attribute.
Attribute ID |
Attribute Name |
Attribute Description |
Data type |
---|---|---|---|
SourceCustomerProductPropensityID |
Source CustomerProductPropensity ID |
This attribute contains the unique ID for the object. |
STRING |
PropensityScore |
Propensity Score |
This attribute represents the propensity score for the customer. |
FLOAT |
PropensityStatus |
Propensity Status |
This attribute represents the status for propensity to Buy/ No Buy status. (PropensityScore > 50%, takes ‘Buy’ status) |
STRING |
Type |
Type |
This attribute represents the propensity Model Type (‘Product purchase’). |
STRING |
Rank |
Rank |
This attribute represents the rank of the product |
INTEGER |
MasterCustomerID |
Master Customer ID |
This attribute contains the foreign key to the MasterCustomer Table. |
STRING |
SourceMasterCustomerID |
Source Master Customer ID |
This attribute contains the original form of the MasterCustomer ID from the source data system. |
STRING |
ProductID |
ProductID |
This attribute contains the foreign key to the ProductID. |
STRING |
SourceProductID |
Source Product ID |
This attribute contains the original form of the Product ID from the source data system. |
STRING |