машинное обучение — механизм рекомендаций с PHP-ML и регрессией

Я пытаюсь выяснить, как работать с 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

Решение

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

| 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]