Limitations of Recommendations

Product Recommendations in the Bloomreach Engagement platform have got performance and algorithm/model limitations of which you need to be aware. Here is the list of restrictions:

  1. Max 50 products/items are returned in a metric-based engine in a single request.
  2. Max 500 products/items are returned in a metric-based category engine in a single request with one category in categoryNames attribute.
  3. Catalog filter supports neither regex filters, nor list attributes and filters.
  4. Catalog filter serves as a post-filtering. Meaning that the recommendation model might return 10 suitable items, but if you specified a very strict catalog filter, it can filter out some of those recommended products.
  5. In Filter-based template, the dynamic catalog filter from the get-recommendation request is ignored.
  6. In Advanced template request latency stack up with more recommendation engines added in a single advanced template instance. Please consider it when designing a recommendation engine.
  7. In all AI models, which are using events for training, there's a minimum threshold of 2 events, which are considered for training per customer. e.g. customer with 1 purchase_item during the last 90 days will not be considered, a customer with 1 purchase_item and 1 view_item, will be considered for model training. This mechanism is introduced to mitigate model skewness.
  8. Max 1000 products could be requested in the parameter size for AI models.

Challenges & Trade-offs

While developing/using recommendations, one deals with several challenges:

  • Exploitation/Exploration: We need to recommend items the user already interacted with (exploitation), but we also need to show something new (exploration).
  • Popularity bias: Most users view very few items and most items are seen by a minority of users. This creates huge “data gaps” and we need to cover them.
  • Cold-start problem: When a fresh client starts to use Bloomreach Engagement, we are usually not provided with enough historical user-item interactions. Thus our personalized RS cannot perform well. The more data we collect, the better the performance will be observed. The same idea applies when a new product is added to the catalog.

What´s next?