Download the PHP package ankane/disco without Composer
On this page you can find all versions of the php package ankane/disco. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package disco
Short Description Recommendations for PHP using collaborative filtering
License MIT
Informations about the package disco
Disco PHP
:fire: Recommendations for PHP using collaborative filtering
- Supports user-based and item-based recommendations
- Works with explicit and implicit feedback
- Uses high-performance matrix factorization
Installation
Run:
Add scripts to composer.json
to download the shared library:
And run:
Getting Started
Create a recommender
If users rate items directly, this is known as explicit feedback. Fit the recommender with:
IDs can be integers or strings
If users don’t rate items directly (for instance, they’re purchasing items or reading posts), this is known as implicit feedback. Leave out the rating.
Each
user_id
/item_id
combination should only appear once
Get user-based recommendations - “users like you also liked”
Get item-based recommendations - “users who liked this item also liked”
Use the count
option to specify the number of recommendations (default is 5)
Get predicted ratings for specific users and items
Get similar users
Examples
MovieLens
Load the data
Create a recommender and get similar movies
Storing Recommendations
Save recommendations to your database.
Alternatively, you can store only the factors and use a library like pgvector-php. See an example.
Algorithms
Disco uses high-performance matrix factorization.
- For explicit feedback, it uses stochastic gradient descent
- For implicit feedback, it uses coordinate descent
Specify the number of factors and epochs
If recommendations look off, trying changing factors
. The default is 8, but 3 could be good for some applications and 300 good for others.
Validation
Pass a validation set with:
Cold Start
Collaborative filtering suffers from the cold start problem. It’s unable to make good recommendations without data on a user or item, which is problematic for new users and items.
There are a number of ways to deal with this, but here are some common ones:
- For user-based recommendations, show new users the most popular items.
- For item-based recommendations, make content-based recommendations.
Reference
Get ids
Get the global mean
Get factors
Credits
Thanks to LIBMF for providing high performance matrix factorization
History
View the changelog
Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features
To get started with development: