Skip to content

Latest commit

 

History

History
75 lines (52 loc) · 1.53 KB

README.md

File metadata and controls

75 lines (52 loc) · 1.53 KB

eALS - Element-wise Alternating Least Squares

A Python implementation of the element-wise alternating least squares (eALS) for fast online matrix factorization proposed by arXiv:1708.05024.

Prerequisites

  • Python >= 3.8, < 3.11

Installation

pip install eals

Usage

import numpy as np
import scipy.sparse as sps
from eals import ElementwiseAlternatingLeastSquares, load_model

# batch training
user_items = sps.csr_matrix([[1, 2, 0, 0], [0, 3, 1, 0], [0, 4, 0, 4]], dtype=np.float32)
model = ElementwiseAlternatingLeastSquares(factors=2)
model.fit(user_items)

# learned latent vectors
model.user_factors
model.item_factors

# online training for new data (user_id, item_id)
model.update_model(1, 0)

# rating matrix and latent vectors will be expanded for a new user or item
model.update_model(0, 5)

# current rating matrix
model.user_items

# save and load the model
model.save("model.joblib")
model = load_model("model.joblib")

See the examples directory for complete examples.

Development

Setup development environment

git clone https://github.com/newspicks/eals.git
cd eals
poetry run pip install -U pip
poetry install

Tests

poetry run pytest

Set USE_NUMBA=0 for faster testing without numba JIT overhead.

USE_NUMBA=0 poetry run pytest

To run tests against all supported Python versions, use tox. You may need to add the Python versions in the tox.ini file.

poetry run tox