PHP implementation of the (Weighted Slopeone,Cosine, Weighted Cosine) rating-based collaborative filtering schemes.
To learn all about it, head over to the extensive documentation.
OpenCF Package requires PHP 7.4
or higher.
INFO: If you are using an older version of php this package will not function correctly.
The supported way of installing OpenCF
package is via Composer.
composer require phpjuice/opencf
OpenCF Package is designed to be very simple and straightforward to use. All you have to do is:
- Load a training set (dataset)
- Predict future ratings using a recommender. (Weighted Slopeone,Cosine, Weighted Cosine)
The OpenCF
recommender service is created by direct instantiation:
use OpenCF\RecommenderService;
// Create an instance
$recommenderService = new RecommenderService($dataset);
Adding a dataset to the recommender can be done using the constructor or can be easily done by providing an array of
users ratings via the setDataset()
method:
$dataset = [
"squid" => [
"user1" => 1,
"user2" => 1,
"user3" => 0.2,
],
"cuttlefish" => [
"user1" => 0.5,
"user3" => 0.4,
"user4" => 0.9,
],
"octopus" => [
"user1" => 0.2,
"user2" => 0.5,
"user3" => 1,
"user4" => 0.4,
],
"nautilus" => [
"user2" => 0.2,
"user3" => 0.4,
"user4" => 0.5,
],
];
$recommenderService->setDataset($dataset);
All you have to do to predict ratings for a new user is to retrieve an engine from the recommender service and & run
the predict()
method.
// Get a recommender
$recommender = $recommenderService->cosine(); // Cosine recommender
// OR
$recommender = $recommenderService->weightedCosine(); // WeightedCosine recommender
// OR
$recommender = $recommenderService->weightedSlopeone(); // WeightedSlopeone recommender
// Predict future ratings
$results = $recommender->predict([
"squid" => 0.4
]);
This should produce the following results when using WeightedSlopeone
recommender
[
"cuttlefish" => 0.25,
"octopus" => 0.23,
"nautilus" => 0.1
];
you can easily run tests using composer
composer test
- PHP - The programing language used
- Composer - Dependency Management
- Pest - An elegant PHP Testing Framework
Please see the changelog for more information on what has changed recently.
Please see CONTRIBUTING.md for details and a todo list.
If you discover any security related issues, please email author instead of using the issue tracker.
- Daniel Lemire
- SlopeOne Predictors for Online Rating-Based Collaborative Filtering
- Distance Weighted Cosine Similarity
We use SemVer for versioning. For the versions available, see the tags on this repository.
license. Please see the Licence for more information.