Class BRISMFPredictor
- java.lang.Object
-
- moa.recommender.rc.predictor.impl.BRISMFPredictor
-
- All Implemented Interfaces:
Updatable
public class BRISMFPredictor extends Object implements Updatable
Implementation of the algorithm described in Scalable Collaborative Filtering Approaches for Large Recommender Systems (Gábor Takács, István Pilászy, Bottyán Németh, and Domonkos Tikk). A feature vector is learned for every user and item, so that the prediction of a rating is roughly the dot product of the corresponding user and item vector. Stochastic gradient descent is used to train the model, minimizing its prediction error. Both Tikhonov regularization and early stopping are used to reduce overfitting. The algorithm allows batch training (from scratch, using all ratings available at the moment) as well as incremental, by retraining only the affected user and item vectors when a new rating is inserted.Parameters:
- features - the number of features to be trained for each user and item
- learning rate - the learning rate used in the regularization
- ratio - the regularization ratio to be used in the Tikhonov regularization
- iterations - the number of iterations to be used when retraining user and item features (online training).
-
-
Field Summary
Fields Modifier and Type Field Description protected RecommenderData
data
protected HashMap<Integer,float[]>
itemFeature
protected double
lRate
protected int
nFeatures
protected int
nIterations
protected double
rFactor
protected Random
rnd
protected HashMap<Integer,float[]>
userFeature
-
Constructor Summary
Constructors Constructor Description BRISMFPredictor(int nFeatures, RecommenderData data, boolean train)
BRISMFPredictor(int nFeatures, RecommenderData data, double lRate, double rFactor, boolean train)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RecommenderData
getData()
float[]
getItemFeatures(int itemID)
int
getNumFeatures()
float[]
getUserFeatures(int userID)
double
predictRating(float[] userFeats, float[] itemFeats)
double
predictRating(int userID, int itemID)
List<Double>
predictRatings(int userID, List<Integer> itemIDS)
void
setLRate(double lRate)
void
setNIterations(int nIterations)
void
setRFactor(double rFactor)
void
train()
void
trainItem(int itemID)
void
trainItem(int itemID, int nIts)
void
trainItem(int itemID, List<Integer> usr, List<Double> rat)
void
trainItem(int itemID, List<Integer> usr, List<Double> rat, int nIts)
float[]
trainItemFeats(int itemID, List<Integer> usr, List<Double> rat, int nIts)
void
trainUser(int userID)
void
trainUser(int userID, int nIts)
void
trainUser(int userID, List<Integer> itm, List<Double> rat)
void
trainUser(int userID, List<Integer> itm, List<Double> rat, int nIts)
float[]
trainUserFeats(List<Integer> itm, List<Double> rat, int nIts)
void
updateNewItem(int itemID, List<Integer> ratingUsers, List<Double> ratings)
void
updateNewUser(int userID, List<Integer> ratedItems, List<Double> ratings)
void
updateRemoveItem(int itemID)
void
updateRemoveRating(int userID, int itemID)
void
updateRemoveUser(int userID)
void
updateSetRating(int userID, int itemID, double rating)
-
-
-
Field Detail
-
data
protected RecommenderData data
-
nFeatures
protected int nFeatures
-
rnd
protected Random rnd
-
lRate
protected double lRate
-
rFactor
protected double rFactor
-
nIterations
protected int nIterations
-
-
Constructor Detail
-
BRISMFPredictor
public BRISMFPredictor(int nFeatures, RecommenderData data, boolean train)
-
BRISMFPredictor
public BRISMFPredictor(int nFeatures, RecommenderData data, double lRate, double rFactor, boolean train)
-
-
Method Detail
-
setLRate
public void setLRate(double lRate)
-
setRFactor
public void setRFactor(double rFactor)
-
setNIterations
public void setNIterations(int nIterations)
-
getData
public RecommenderData getData()
-
predictRating
public double predictRating(int userID, int itemID)
-
predictRating
public double predictRating(float[] userFeats, float[] itemFeats)
-
trainItemFeats
public float[] trainItemFeats(int itemID, List<Integer> usr, List<Double> rat, int nIts)
-
trainUser
public void trainUser(int userID, int nIts)
-
trainItem
public void trainItem(int itemID)
-
trainItem
public void trainItem(int itemID, int nIts)
-
trainUser
public void trainUser(int userID)
-
train
public void train()
-
getUserFeatures
public float[] getUserFeatures(int userID)
-
getItemFeatures
public float[] getItemFeatures(int itemID)
-
getNumFeatures
public int getNumFeatures()
-
updateNewUser
public void updateNewUser(int userID, List<Integer> ratedItems, List<Double> ratings)
- Specified by:
updateNewUser
in interfaceUpdatable
-
updateNewItem
public void updateNewItem(int itemID, List<Integer> ratingUsers, List<Double> ratings)
- Specified by:
updateNewItem
in interfaceUpdatable
-
updateRemoveUser
public void updateRemoveUser(int userID)
- Specified by:
updateRemoveUser
in interfaceUpdatable
-
updateRemoveItem
public void updateRemoveItem(int itemID)
- Specified by:
updateRemoveItem
in interfaceUpdatable
-
updateSetRating
public void updateSetRating(int userID, int itemID, double rating)
- Specified by:
updateSetRating
in interfaceUpdatable
-
updateRemoveRating
public void updateRemoveRating(int userID, int itemID)
- Specified by:
updateRemoveRating
in interfaceUpdatable
-
-