CMF.from.model.matrices {cmfrec}R Documentation

Create a CMF model object from fitted matrices

Description

Creates a 'CMF' or 'CMF_implicit' model object based on fitted latent factor matrices, which might have been obtained from a different software. For example, the package 'recosystem' has functionality for obtaining these matrices, but not for producing recommendations or latent factors for new users, for which this function can come in handy as it will turn such model into a 'CMF' model which provides all such functionality.

This is only available for models without side information, and does not support user/item mappings.

Usage

CMF.from.model.matrices(
  A,
  B,
  glob_mean = 0,
  implicit = FALSE,
  precompute = TRUE,
  user_bias = NULL,
  item_bias = NULL,
  lambda = 10,
  scale_lam = FALSE,
  l1_lambda = 0,
  nonneg = FALSE,
  NA_as_zero = FALSE,
  scaling_biasA = NULL,
  scaling_biasB = NULL,
  apply_log_transf = FALSE,
  alpha = 1,
  nthreads = parallel::detectCores()
)

Arguments

A

The obtained user factors (numeric matrix). Dimension is [k, n_users].

B

The obtained item factors (numeric matrix). Dimension is [k, n_items].

glob_mean

The obtained global mean, if the model is for explicit feedback and underwent centering. If passing zero, will assume that the values are not to be centered.

implicit

Whether this is an implicit-feedback model.

precompute

Whether to generate pre-computed matrices which can help to speed up computations on new data (see fit_models for more details).

user_bias

The obtained user biases (numeric vector). If passing 'NULL', will assume that the model did not include user biases. Dimension is [n_users].

item_bias

The obtained item biases (numeric vector). If passing 'NULL', will assume that the model did not include item biases. Dimension is [n_item].

lambda

Regularization parameter for the L2 norm of the model matrices (see fit_models for more details). Can pass different parameters for each.

scale_lam

In the explicit-feedback models, whether to scale the regularization parameter according to the number of entries. This should always be assumed 'TRUE' for models that are fit through stochastic procedures.

l1_lambda

Regularization parameter for the L1 norm of the model matrices. Same format as for 'lambda'.

nonneg

Whether the model matrices should be constrained to be non-negative.

NA_as_zero

When passing sparse matrices, whether to take missing entries as zero (counting them towards the optimization objective), or to ignore them.

scaling_biasA

If passing it, will assume that the model uses the option 'scale_bias_const=TRUE', and will use this number as scaling for the regularization of the user biases.

scaling_biasB

If passing it, will assume that the model uses the option 'scale_bias_const=TRUE', and will use this number as scaling for the regularization of the item biases.

apply_log_transf

If passing 'implicit=TRUE', whether to apply a logarithm transformation on the values of 'X'.

alpha

If passing 'implicit=TRUE', multiplier to apply to the confidence scores given by 'X'.

nthreads

Number of parallel threads to use for further computations.

Value

A 'CMF' (if passing 'implicit=FALSE') or 'CMF_implicit' (if passing 'implicit=TRUE') model object without side information, for which the usual prediction functions such as topN and topN_new can be used as if it had been fitted through this software.

Examples

### Example 'adopting' a model from 'recosystem'
library(cmfrec)
library(recosystem)
library(recommenderlab)
library(MatrixExtra)

### Fitting a model with 'recosystem'
data("MovieLense")
X <- as.coo.matrix(MovieLense@data)
r <- Reco()
r$train(data_matrix(X),
        out_model = NULL,
        opts = list(dim=10, costp_l2=0.1, costq_l2=0.1,
                    verbose=FALSE, nthread=1))
matrices <- r$output(out_memory(), out_memory())
glob_mean <- as.numeric(r$model$matrices$b)

### Now converting it to CMF
model <- CMF.from.model.matrices(
    A=t(matrices$P), B=t(matrices$Q),
    glob_mean=glob_mean,
    lambda=0.1, scale_lam=TRUE,
    implicit=FALSE, nonneg=FALSE,
    nthreads=1
)

### Make predictions about new users
factors_single(model, X[10,,drop=TRUE])
topN_new(model,
         X=X[10,,drop=TRUE],
         exclude=X[10,,drop=TRUE])

[Package cmfrec version 3.5.1-3 Index]