使用PHP-ML和回归的推荐引擎

时间:2018-05-28 13:13:09

标签: php machine-learning linear-regression

当我想向当前客户推荐一些商品时,我会尝试了解如何使用PHP-ML

我的数据集(数字只是行数):

  1. 产品1与产品2一起购买
  2. 产品1与产品2一起购买
  3. 产品1与产品3一起购买
  4. 产品1与产品2一起购买
  5. 产品2与产品4一起购买
  6. 产品Y ..与产品X一起购买..
  7. 作为我在过去的产品1中购买的顾客。所以通常我会在我的推荐盒产品2中预期,因为3个人与产品1一起购买了它。

    我想我需要一些回归算法,它给出了产品X和产品Y之间的一些相关值。

    我想过线性SVR algorythm,但我不知道如何训练它?

    // Step 1: Load the Dataset
    // Step 2: Prepare the Dataset
    // Step 3: Generate the training/testing Dataset
    $samples = [[1,2], [1,2], [1,3], [1,2], [2,4], [X,Y..]];
    $targets = [?, ?, ? , ? , ? , ?];
    
    $regression = new LeastSquares();
    // Step 4: Train the classifier
    $regression->train($samples, $targets);
    
    
    echo $regression->predict([1,2]);
    

    在我看来,我应该得到一些像0.25的价值 - >购买产品1的客户中有25%也购买了产品2.然后我可以订购我的预测并在我的推荐框中订购。 我的主要问题是,我应该用什么火车?我明白完全错了吗?

    谢谢

1 个答案:

答案 0 :(得分:1)

首先,您不需要线性回归,如果您需要you would have to convert the categorical data in order to do a numeric prediction。 通常,您将使用虚拟变量,这意味着您的表将转换为:

| Product A | Product B |
|-----------|-----------|
|         1 |         2 |
|         1 |         2 |
|         1 |         3 |
|         1 |         2 |
|         2 |         4 |

类似于:

| Product 1  | Product 2 | Product 3 | Product 4 |
|------------|-----------|-----------|-----------|
|          1 |         1 |         0 |         0 |
|          1 |         1 |         0 |         0 |
|          1 |         0 |         1 |         0 |
|          1 |         1 |         0 |         0 |
|          0 |         1 |         0 |         1 |

有关详细信息,请参阅https://datascience.stackexchange.com/questions/28306/transform-categorical-variables-into-numerical。 遗憾的是,我认为PHP-ML此时并不支持分类数据编码。如果你没有转换 您可能获得的分类数据可能是1.6作为预测,但这并不代表任何有用的东西。

但是在PHP-ML中有一种更简单的方法。您可以使用Apriori关联器。这样可以 了解哪些关联更频繁并预测它们。在下文中,您可以看到实际操作。

use Phpml\Association\Apriori;

$samples = [[1,2], [1,2], [1,3], [1,2], [2,4]];
$labels  = [];


$associator = new Apriori($support = 0.5, $confidence = 0.5);
$associator->train($samples, $labels);

var_export($associator->predict([1]));
// outputs  [[ 2 ]];  The right prediction!

此外,在机器学习中工作有助于将数据分成所谓的培训 和测试集。这样你就可以直接测试你的ML模型。 It is also implemented in PHP-ML