当我想向当前客户推荐一些商品时,我会尝试了解如何使用PHP-ML。
我的数据集(数字只是行数):
作为我在过去的产品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.然后我可以订购我的预测并在我的推荐框中订购。 我的主要问题是,我应该用什么火车?我明白完全错了吗?
谢谢
答案 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