Skip to contents

Formula: fallback to popular / content / metadata

Usage

ColE(
  user,
  mode = "popular",
  R = NULL,
  item_features = NULL,
  user_features = NULL,
  min_ratings = 3,
  topn = 3
)

Arguments

user

Zero-based index of the target user.

mode

One of popular, content, metadata.

R

An n_users x n_items rating matrix; 0 means unobserved.

item_features

An n_items x f matrix for the content fallback.

user_features

An n_users x g matrix for the metadata fallback.

min_ratings

Threshold below which the user counts as cold.

topn

Length of the returned recommendation list.

Value

List with estimate, is_cold, n_rated, scores, recommended, mode, n_users, n_items, method.

Details

A user with fewer than min_ratings observed interactions cannot be served by collaborative filtering at all, because their row of the rating matrix carries no signal. The three fallbacks are: rank by global popularity, rank by similarity between the item features and whatever the user has rated, and rank by similarity to users with matching metadata. The cold/warm decision is reported so it can be audited separately from the ranking.

References

Schein, Popescul, Ungar & Pennock (2002), Methods and Metrics for Cold-Start Recommendations, SIGIR 2002:253-260.

Examples

R <- matrix(c(5, 3, 0, 4, 0, 2, 0, 5, 3, 4, 4, 5), 4, 3, byrow = TRUE)
ColE(user = 1, mode = "popular", R = R, min_ratings = 1)
#> $estimate
#> [1] 3
#> 
#> $is_cold
#> [1] 0
#> 
#> $n_rated
#> [1] 2
#> 
#> $scores
#> [1] 3 3 3
#> 
#> $recommended
#> [1] 1
#> 
#> $mode
#> [1] "popular"
#> 
#> $n_users
#> [1] 4
#> 
#> $n_items
#> [1] 3
#> 
#> $method
#> [1] "cold-start recommendation fallback"
#> 
#> attr(,"class")
#> [1] "morie_rich_result" "list"