1. Definition

Coverage measures how much of the item catalog a recommender system is able to recommend.
It reflects the diversity and breadth of recommendations, not just accuracy.

$Coverage = \frac{\text{Number of unique items recommended}}{\text{Total number of items in the catalog}}$

  • Also called Item Coverage.
  • Sometimes also defined as User Coverage: fraction of users who receive at least one recommendation.

2. Intuition

  • A system that only recommends the most popular 10 items will have low coverage (but possibly high accuracy).
  • A system that recommends a wide range of items has high coverage, even if accuracy is similar.
  • Good recommender systems should balance accuracy and coverage.

3. Types of Coverage

  • Item Coverage: % of items from the catalog that appear in any recommendation list.
  • User Coverage: % of users for whom the system can generate recommendations.
  • Catalog Coverage: Combination, how much of the catalog is exposed across users.

4. Example

Suppose we have a catalog of 100 movies.

  • Recommender system produces Top-5 lists for 10 users.
  • Across all lists, 20 unique movies appear.

$Coverage = \frac{20}{100} = 0.20 \; (20\%)$

Means the system is only using 20% of its catalog.


5. Why It Matters

  • Business Value: Higher coverage means more items get exposure → better inventory utilization (e.g., e-commerce).
  • User Satisfaction: Improves novelty and diversity of recommendations (users discover more).
  • Fairness: Prevents only “popular items” from dominating.

6. Limitations

  • High coverage alone is not always good → could recommend irrelevant or low-quality items.
  • Must be balanced with precision/recall.

7. Python Example

def item_coverage(recommendations, catalog_size):
    """
    recommendations: list of lists (each user's recommended items)
    catalog_size: total number of items available
    """
    unique_items = set([item for recs in recommendations for item in recs])
    return len(unique_items) / catalog_size

# Example
recommendations = [
    [1, 2, 3, 4, 5],
    [2, 6, 7, 8, 9],
    [1, 10, 11, 12, 13]
]
catalog_size = 20

coverage = item_coverage(recommendations, catalog_size)
print("Item Coverage:", coverage)

Output:

Item Coverage: 0.65

→ The system covered 65% of the catalog.


Summary

  • Coverage = proportion of catalog recommended at least once.
  • Reflects diversity, novelty, and fairness in recommendations.
  • Types: Item Coverage, User Coverage, Catalog Coverage.
  • Balanced with accuracy for a good recommender system.