Implementation:Online ml River Reco BiasedMF
| Knowledge Sources | |
|---|---|
| Domains | Online_Learning, Recommender_Systems, Matrix_Factorization |
| Last Updated | 2026-02-08 16:00 GMT |
Overview
Biased matrix factorization combining baseline biases with latent factor interactions.
Description
Implements biased matrix factorization using the equation: ŷ = ȳ + bu + bi + <vu, vi>, where the last term is the dot product of user and item latent vectors. Learns both biases and latent factors through SGD with independent regularization. Captures both first-order (biases) and second-order (interactions) effects.
Usage
Use for collaborative filtering when you need to model user-item interactions beyond simple biases. Particularly effective for rating prediction and personalized ranking. Essential for capturing latent taste preferences and item characteristics.
Code Reference
Source Location
- Repository: Online_ml_River
- File: river/reco/biased_mf.py
Signature
class BiasedMF(Ranker):
def __init__(
self,
n_factors=10,
bias_optimizer: optim.base.Optimizer | None = None,
latent_optimizer: optim.base.Optimizer | None = None,
loss: optim.losses.Loss | None = None,
l2_bias=0.0,
l2_latent=0.0,
weight_initializer: optim.initializers.Initializer | None = None,
latent_initializer: optim.initializers.Initializer | None = None,
clip_gradient=1e12,
seed=None,
):
...
def predict_one(self, user, item, x=None):
...
def learn_one(self, user, item, y, x=None):
...
Import
from river import reco
Usage Examples
from river import optim, reco
dataset = (
({'user': 'Alice', 'item': 'Superman'}, 8),
({'user': 'Alice', 'item': 'Terminator'}, 9),
({'user': 'Alice', 'item': 'Star Wars'}, 8),
({'user': 'Alice', 'item': 'Notting Hill'}, 2),
({'user': 'Alice', 'item': 'Harry Potter'}, 5),
({'user': 'Bob', 'item': 'Superman'}, 8),
({'user': 'Bob', 'item': 'Terminator'}, 9),
({'user': 'Bob', 'item': 'Star Wars'}, 8),
({'user': 'Bob', 'item': 'Notting Hill'}, 2)
)
model = reco.BiasedMF(
n_factors=10,
bias_optimizer=optim.SGD(0.025),
latent_optimizer=optim.SGD(0.025),
latent_initializer=optim.initializers.Normal(mu=0., sigma=0.1, seed=71)
)
for x, y in dataset:
model.learn_one(**x, y=y)
pred = model.predict_one(user='Bob', item='Harry Potter')
print(f"Predicted rating: {pred:.2f}")