aldeebhasan/laravelcf

此包允许您根据自定义输入快速生成推荐

1.0.3 2023-07-10 17:17 UTC

This package is auto-updated.

Last update: 2024-09-14 15:47:42 UTC


README

一个PHP包,允许您找到模块的最佳推荐

安装

使用Composer安装

composer require aldeebhasan/laravelcf

运行

php artisan migrate

基本用法

LarvelCF包允许您根据包括(余弦,加权余弦,中心余弦,SlopeOne)在内的多种算法推荐数据。

通常,此包包含两种类型的推荐器

  • 基于物品的推荐器
  • 基于用户的推荐器

填写数据

构建您的推荐系统的第一步是提供您想要工作的数据集。

在LarvelCF中,我们有4种类型的数据(购买,评分,购物车操作,书签)。这些类型的目的是使您能够同时处理不同类型的数据。

您可以使用以下方式输入您的推荐器数据

use \Aldeebhasan\LaravelCF\Facades\Recommender;
  
Recommender::addRating      ('user_1', 'product_1', 5);
Recommender::addCartAddition('user_1', 'product_1', 2); // like the quantity
Recommender::addPurchase    ('user_1', 'product_1', 5); // like the quantity
Recommender::addBookmark    ('user_1', 'product_1', 5);

实例化推荐器

输入您的数据后,您可以使用我们的支持外观实例化所需的推荐器。

use \Aldeebhasan\LaravelCF\Facades\Recommender;
use \Aldeebhasan\LaravelCF\Enums\RelationType;

/* you cann also use any of RelationType::PURCHASE,RelationType::CART_ACTION,RelationType::BOOKMARK*/
Recommender::getItemBasedRecommender(RelationType::RATE); // to recommend similar products
//OR
Recommender::getUserBasedRecommender(RelationType::RATE);// to recommend similar users

获取推荐

最后,要生成您的推荐,您将运行以下代码

use \Aldeebhasan\LaravelCF\Facades\Recommender;
use \Aldeebhasan\LaravelCF\Enums\RelationType;

/* you cann also use any of RelationType::PURCHASE,RelationType::CART_ACTION,RelationType::BOOKMARK*/
Recommender::getItemBasedRecommender(RelationType::RATE)
            ->setSimilarityFunction(Cosine::class)
            ->train()
            ->recommendTo('user_1');

对于 setSimilarityFunction,您可以提供相似性算法、缺失值默认值以及是否希望填充缺失值或丢弃它们。

可用的相似性算法

  • Cosine::class(基于物品的默认值)
  • CosineCentered::class
  • CosineWeighted::class
  • Jaccard::class
  • SlopeOne::class
  • Pearson::class(基于用户的默认值)

可用的缺失值替换方法

  • MissingValue::ZERO(包默认值)
  • MissingValue::MEAN
  • MissingValue::MEDIAN
use \Aldeebhasan\LaravelCF\Facades\Recommender;
use \Aldeebhasan\LaravelCF\Enums\RelationType;
use \Aldeebhasan\LaravelCF\Enums\MissingValue;
use \Aldeebhasan\LaravelCF\Similarity;

Recommender::getItemBasedRecommender(RelationType::RATE)
            // use Weighted cosine algorithm and replace the missing values with zero 
            ->setSimilarityFunction(CosineWeighted::class,MissingValue::ZERO,true)
             // use SlopeOne algorithm and replace the missing values with the mean 
            ->setSimilarityFunction(SlopeOne::class,MissingValue::MEAN,true)
            

完整示例

use \Aldeebhasan\LaravelCF\Facades\Recommender;
use \Aldeebhasan\LaravelCF\Enums\RelationType;
use \Aldeebhasan\LaravelCF\Enums\MissingValue;
use \Aldeebhasan\LaravelCF\Similarity;

Recommender::addRating(1, 'squid', 1);
Recommender::addRating(2, 'squid', 1);
Recommender::addRating(3, 'squid', 0.2);
Recommender::addRating(1, 'cuttlefish', 0.5);
Recommender::addRating(3, 'cuttlefish', 0.4);
Recommender::addRating(4, 'cuttlefish', 0.9);
Recommender::addRating(1, 'octopus', 0.2);
Recommender::addRating(2, 'octopus', 0.5);
Recommender::addRating(3, 'octopus', 1);
Recommender::addRating(4, 'octopus', 0.4);
Recommender::addRating(1, 'nautilus', 0.2);
Recommender::addRating(3, 'nautilus', 0.4);
Recommender::addRating(4, 'nautilus', 0.5);
$results = Recommender::getItemBasedRecommender(RelationType::RATE)
    ->setSimilarityFunction(CosineWeighted::class, MissingValue::MEAN)
    ->train()
    ->recommendTo('squid');


/**
recommendation results sorted by similarity: 
[ 
  "cuttlefish" => 0.89
  "nautilus" => 0.75
  "octopus" => 0.5
]
**/

许可证

Laravel推荐系统包是根据MIT许可证(MIT)许可的。

安全联系信息

要报告安全漏洞,请直接联系开发者联系邮箱这里