Mixed Membership Stochastic Block Models
A Python implementation of Mixed Membership Stochastic Block Models for recommendation systems, based on the work by Godoy-Lorite et al. (2016). This library provides an efficient, vectorized implementation suitable for both research and production environments.
Freatures
- Fast, vectorized implementation of MMSBM.
- Support for both simple and cross-validated fitting.
- Parallel processing for multiple sampling runs.
- Comprehensive model statistics and evaluation metrics.
- Compatible with Python 3.6+ through 3.12.
Installation
pip install mmsbm
Quick Start
from mmsbm import MMSBM
# Create a model
model = MMSBM(user_groups=2, item_groups=4)
# Fit and predict
model.fit(train_data)
predictions = model.predict(test_data)
# Get model results
results = model.score()
Detailed Usage
Data Format
The input data should be a pandas DataFrame with exactly 3 columns representing users, items, and ratings:
import pandas as pd
from random import choice
train = pd.DataFrame(
{
"users": [f"user{choice(list(range(5)))}" for _ in range(100)],
"items": [f"item{choice(list(range(10)))}" for _ in range(100)],
"ratings": [choice(list(range(1, 6))) for _ in range(100)]
}
)
test = pd.DataFrame(
{
"users": [f"user{choice(list(range(5)))}" for _ in range(50)],
"items": [f"item{choice(list(range(10)))}" for _ in range(50)],
"ratings": [choice(list(range(1, 6))) for _ in range(50)]
}
)
Model Configuration
from mmsbm import MMSBM
# Initialize the MMSBM class:
model = MMSBM(
user_groups=2, # Number of user groups
item_groups=4, # Number of item groups
iterations=500, # Number of EM iterations
sampling=5, # Number of parallel runs
seed=1, # Random seed for reproducibility
debug=False # Enable debug logging
)
Training Methods
Simple Fit
mmsbm.fit(train)
Cross-Validation Fit
accuracies = mmsbm.cv_fit(train, folds=5)
print(f"Mean accuracy: {np.mean(accuracies):.3f} ± {np.std(accuracies):.3f}")
Making Predictions
predictions = mmsbm.predict(test)
Model Evaluation
results = model.score()
# Access various metrics
accuracy = results['stats']['accuracy']
mae = results['stats']['mae']
# Access model parameters
theta = results['objects']['theta'] # User group memberships
eta = results['objects']['eta'] # Item group memberships
pr = results['objects']['pr'] # Rating probabilities
Performance Considerations
- Computation is vectorized for efficient processing of large datasets.
- Parallel processing for multiple sampling runs
- Computational complexity scales primarily with the number of unique items, but not users
- Memory usage scales primarily with the number of unique users and items
Running Tests
To run tests do the following:
# Install development dependencies
pip install -e ".[dev]"
# Run tests
python -m pytest tests/*
Contributing
- Fork the repository
- Create your feature branch (git checkout -b feature/amazing-feature)
- Commit your changes (git commit -m 'Add amazing feature')
- Push to the branch (git push origin feature/amazing-feature)
- Open a Pull Request
TODO
- Progress bars are not working for jupyter notebooks.
References
[1]: Godoy-Lorite, Antonia, et al. "Accurate and scalable social recommendation using mixed-membership stochastic block models." Proceedings of the National Academy of Sciences 113.50 (2016): 14207-14212.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mmsbm-0.3.4.tar.gz.
File metadata
- Download URL: mmsbm-0.3.4.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bbadaff96f03bf0bb28531039c65f1871d48c05ca85de8fd40598a02a2aec45
|
|
| MD5 |
aa2fed6ff6f48a3075c99337ab004050
|
|
| BLAKE2b-256 |
dce99ca3c22dfd8d47c80180d9b4884d5e64cc0cef31160d64654d359c8b7af8
|
File details
Details for the file mmsbm-0.3.4-py3-none-any.whl.
File metadata
- Download URL: mmsbm-0.3.4-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36f8ba30d8c7efe702fa06199972581ff99b7da8d20577eda5940e30acea2315
|
|
| MD5 |
843f40819b5020065981e1400863e32d
|
|
| BLAKE2b-256 |
3a76df93d8343c8c36aca72a1c7df0b4e6984355ff59cb6a829e9fa30458aa5a
|