PureSVD: PureSVD recommender model decompomposition

PureSVDR Documentation

PureSVD recommender model decompomposition

Description

Creates PureSVD recommender model. Solver is based on Soft-SVD which is very similar to truncated SVD but optionally adds regularization based on nuclear norm.

Super class

rsparse::MatrixFactorizationRecommender -> PureSVD

Methods

Public methods

Inherited methods

Method new()

create PureSVD model

Usage
PureSVD$new(
  rank = 10L,
  lambda = 0,
  init = NULL,
  preprocess = identity,
  method = c("svd", "impute"),
  ...
)
Arguments
rank

size of the latent dimension

lambda

regularization parameter

init

initialization of item embeddings

preprocess

identity() by default. User spectified function which will be applied to user-item interaction matrix before running matrix factorization (also applied during inference time before making predictions). For example we may want to normalize each row of user-item matrix to have 1 norm. Or apply log1p() to discount large counts.

method

type of the solver for initialization of the orthogonal basis. Original paper uses SVD. See paper for details.

...

not used at the moment


Method fit_transform()

performs matrix factorization

Usage
PureSVD$fit_transform(x, n_iter = 100L, convergence_tol = 0.001, ...)
Arguments
x

input sparse user-item matrix(of class dgCMatrix)

n_iter

maximum number of iterations

convergence_tol

numeric = -Inf defines early stopping strategy. Stops fitting when one of two following conditions will be satisfied: (a) passed all iterations (b) relative change of Frobenious norm of the two consequent solution is less then provided convergence_tol.

...

not used at the moment


Method transform()

calculates user embeddings for the new input

Usage
PureSVD$transform(x, ...)
Arguments
x

input matrix

...

not used at the moment


Method clone()

The objects of this class are cloneable with this method.

Usage
PureSVD$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

Examples

data('movielens100k')
i_train = sample(nrow(movielens100k), 900)
i_test = setdiff(seq_len(nrow(movielens100k)), i_train)
train = movielens100k[i_train, ]
test = movielens100k[i_test, ]
rank = 32
lambda = 0
model = PureSVD$new(rank = rank,  lambda = lambda)
user_emb = model$fit_transform(sign(test), n_iter = 100, convergence_tol = 0.00001)
item_emb = model$components
preds = model$predict(sign(test), k = 1500, not_recommend = NULL)
mean(ap_k(preds, actual = test))

dselivanov/rsparse documentation built on April 19, 2023, 11:11 p.m.