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.
