Рекомендательный движок с PHP-ML и регрессией - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь выяснить, как работать с PHP-ML , когда хочу порекомендовать некоторые товары текущему покупателю.

Мой набор данных (нумерация - это только номер строки):

  1. Продукт 1 был приобретен вместе с Продуктом 2
  2. Продукт 1 был приобретен вместе с Продуктом 2
  3. Продукт 1 был приобретен вместе с Продуктом 3
  4. Продукт 1 был приобретен вместе с Продуктом 2
  5. Продукт 2 был приобретен вместе с Продуктом 4
  6. Продукт Y.. был куплен вместе с продуктом X ..

Как покупатель, я купил в прошлом продукт 1. Так что обычно я ожидаю, что в моей коробке с рекомендациями продукт 2, потому что 3 человека купили его вместе с продуктом1.

Я думаю, что мне нужен здесь некоторый алгоритм регрессии, который дает мне некоторое значение корреляции между продуктом X и продуктом Y.

Я думал об алгоритме линейного SVR, но я не знаю, как тренироватьсяЭто?

// 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 -> 25% процентов покупателей, которые купили продукт 1, также купили продукт 2. Затем я мог заказать свои прогнозы и сделать заказ в своем окне для рекомендаций.Мой главный вопрос, что я должен использовать для поезда?Я понимаю, что-то совершенно не так?

Спасибо

1 Ответ

0 голосов
/ 28 мая 2018

Прежде всего вам здесь не нужна линейная регрессия, и если вам нужно это , вам придется преобразовать категориальные данные, чтобы сделать числовой прогноз .Обычно вы используете фиктивные переменные, это означает, что ваша таблица будет преобразована из:

| 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 Associator.Это может узнать, какие ассоциации встречаются чаще, и предсказать их.Ниже вы можете увидеть это в действии.

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. Это также реализовано в PHP-ML

...