Model / recommend · All operations

Recommend items

Collaborative filtering, matrix completion.

Status

In arcform

Not built yet

arcform does not do this yet. Its place on the roadmap

Shape of the result
a model or a file, not a table
Level
needs an arcform operator

What other tools call it

Meridian's classification; an independent blind rating agreed on 86.2% of 312 rows (exact class, version 2).

mlpack (2)
  • matrix_completionread 2026-09-27

    Fill the missing entries of a matrix under a low-rank assumption

  • mlpack_cfread 2026-09-27

    Collaborative filtering: train a recommender or compute recommendations from one

Talend (1)
  • tALSModelread 2026-09-27

    Train a recommender model by alternating least squares from user-product interaction data on Spark

Background

Collaborative filtering predicts a user's interests from the preferences of many users, and is one of the two major techniques used by recommender systems.[1] Collaborative filtering rests on the assumption that people who agreed in the past will agree in the future.[2] Matrix completion is the task of filling in the missing entries of a partially observed matrix, such as a matrix of customers' movie ratings.[3]

When to use it

Collaborative filtering does not rely on machine-analysable content, so it can recommend complex items such as movies without an understanding of the item itself.[2] Collaborative filtering can also be based on implicit observations of normal user behaviour, such as the music people listened to or the items they bought, rather than on a rating task.[1] Predictions from implicit observations have to be filtered through business logic: it is not useful to offer to sell somebody an album they have already shown they own.[1]

Collaborative filtering approaches often suffer from three problems: cold start, scalability and sparsity.[2] The cold start problem arises when new users or new items have too little data for collaborative filtering to work accurately.[1] A collaborative filtering system needs a substantial number of users to rate a new item before that item can be recommended.[1] Collaborative filters usually cannot recommend products with limited historical data, which can create a rich-get-richer effect for popular products.[1]

Evaluating a recommendation algorithm on a fixed test dataset is extremely challenging, because the reactions of real users to the recommendations cannot be accurately predicted.[2] In Apache Spark, a collaborative filtering model by default gives a NaN (not a number) prediction for a user or item that was not present when the model was trained.[4] In Apache Spark, a simple random split for cross-validation very commonly leaves users or items in the evaluation set that are not in the training set.[4] Apache Spark's coldStartStrategy parameter, set to drop, removes the rows of predictions that contain NaN values, so the evaluation metric is computed over the rest.[4] Before trusting an error figure, count how many users and items in the test set the model never saw in training. (Meridian's view)

The method

In the memory-based approach, collaborative filtering computes the similarity between users or items from rating data, using measures such as Pearson correlation and vector cosine similarity.[1] User-based collaborative filtering looks for users who share the same rating patterns as the active user, then uses their ratings to calculate a prediction for the active user.[1] Item-based collaborative filtering, of the form users who bought x also bought y, builds an item-item matrix of the relationships between pairs of items.[1] Model-based collaborative filtering instead learns models to predict users' ratings of unrated items.[1]

Matrix factorisation algorithms decompose the user-item interaction matrix into the product of two lower-dimensional rectangular matrices.[5] In matrix factorisation, the row or column that represents a specific user or item is referred to as its latent factors.[5] From 2006 to 2009, Netflix sponsored the Netflix Prize, offering $1,000,000 to the team that could return recommendations 10% more accurate than those of its existing system.[2] Matrix factorisation became widely known during the Netflix Prize, through its effectiveness as reported by Simon Funk in a 2006 blog post.[5] A matrix factorisation with one latent factor has been shown to be equivalent to a most-popular recommender, which recommends the items with the most interactions without any personalisation.[5] Increasing the number of latent factors improves personalisation until the model starts to overfit, and adding regularisation terms is a common strategy against overfitting.[5]

Without restrictions on its degrees of freedom, matrix completion is underdetermined, because the hidden entries could be assigned arbitrary values.[3] Matrix completion therefore needs an assumption about the matrix, such as that it is low-rank, to become a well-posed problem.[3] Candès and Recht proved that, with assumptions on the sampling of the observed entries and sufficiently many of them, the lowest-rank completion has a unique solution with high probability.[3] The matrix completion problem is in general NP-hard, but under additional assumptions there are efficient algorithms that achieve exact reconstruction with high probability.[3]

Apache Spark supports model-based collaborative filtering, in which users and products are described by a small set of latent factors learnt with the alternating least squares (ALS) algorithm.[4] For implicit feedback, Apache Spark's ALS treats values such as the number of clicks as the strength of observed user actions, related to confidence in a preference rather than to a rating.[4] Apache Spark scales the ALS regularisation parameter by the number of ratings each user gave or each product received, an approach named ALS-WR.[4] In mlpack, the collaborative filtering program takes user, item and rating triples with numeric indices starting from 0, performs a matrix decomposition and can save the trained model.[6] In mlpack, the default decomposition for collaborative filtering is non-negative matrix factorisation with ALS update rules.[6]

Compared with the alternatives

Collaborative filtering's predictions are specific to the user, which differs from the simpler approach of giving each item an average score, for example from its number of votes.[1] A rating averaged across all users ignores a user's specific demands and is particularly poor where interest varies widely, as in recommending music.[1] The problem of new items with too few ratings does not affect content-based recommendations, because an item is recommended from its descriptive qualities rather than its ratings.[1] Most recommender systems now use a hybrid approach, combining collaborative filtering, content-based filtering and other approaches.[2] Matrix completion is equivalent to performing data imputation in statistics.[3]