/* * Copyright (C) 2015 Information Retrieval Group at Universidad Autónoma * de Madrid, http://ir.ii.uam.es * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package es.uam.eps.ir.ranksys.mf; import es.uam.eps.ir.ranksys.fast.preference.FastPreferenceData; /** * Factorizer. Abstract class for matrix factorization algorithms. * * @author Saúl Vargas (saul.vargas@uam.es) * * @param <U> type of the users * @param <I> type of the items */ public abstract class Factorizer<U, I> { /** * Global loss of the factorization. * * @param factorization matrix factorization * @param data preference data * @return the global loss */ public abstract double error(Factorization<U, I> factorization, FastPreferenceData<U, I> data); /** * Creates and calculates a factorization. * * @param K size of the latent feature space. * @param data preference data * @return a matrix factorization */ public abstract Factorization<U, I> factorize(int K, FastPreferenceData<U, I> data); /** * Calculates the factorization by using a previously generate matrix * factorization. * * @param factorization matrix factorization * @param data preference data */ public abstract void factorize(Factorization<U, I> factorization, FastPreferenceData<U, I> data); }