Source code for cornac.models.svd.recom_svd

# Copyright 2018 The Cornac Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================


from ..mf import MF


[docs] class SVD(MF): """Singular Value Decomposition (SVD). The implementation is based on Matrix Factorization with biases. Parameters ---------- k: int, optional, default: 10 The dimension of the latent factors. max_iter: int, optional, default: 100 Maximum number of iterations or the number of epochs for SGD. learning_rate: float, optional, default: 0.01 The learning rate. lambda_reg: float, optional, default: 0.001 The lambda value used for regularization. early_stop: boolean, optional, default: False When True, delta loss will be checked after each iteration to stop learning earlier. num_threads: int, optional, default: 0 Number of parallel threads for training. If num_threads=0, all CPU cores will be utilized. If seed is not None, num_threads=1 to remove randomness from parallelization. trainable: boolean, optional, default: True When False, the model will not be re-trained, and input of pre-trained parameters are required. verbose: boolean, optional, default: True When True, running logs are displayed. init_params: dictionary, optional, default: None Initial parameters, e.g., init_params = {'U': user_factors, 'V': item_factors, \ 'Bu': user_biases, 'Bi': item_biases} seed: int, optional, default: None Random seed for weight initialization. If specified, training will take longer because of single-thread (no parallelization). References ---------- * Koren, Y. Factorization meets the neighborhood: a multifaceted collaborative filtering model. \ In SIGKDD, pp. 426-434. 2008. * Koren, Y. Factor in the neighbors: Scalable and accurate collaborative filtering. \ In TKDD, 2010. """ def __init__( self, name="SVD", k=10, max_iter=20, learning_rate=0.01, lambda_reg=0.02, early_stop=False, num_threads=0, trainable=True, verbose=False, init_params=None, seed=None, ): super().__init__( name=name, k=k, max_iter=max_iter, learning_rate=learning_rate, lambda_reg=lambda_reg, use_bias=True, early_stop=early_stop, num_threads=num_threads, trainable=trainable, verbose=verbose, init_params=init_params, seed=seed, )